amazon-web-services - 如何在不构建依赖项的情况下引用堆栈输出值?

标签 amazon-web-services amazon-dynamodb aws-cloudformation

我有两个 CloudFormation 堆栈,一个用于 dynamodb,另一个用于 lambda。 lambda 用作 dynamodb 流目标,因此它需要知道 DynamoDB 表流 ARN。因此,我从 dynamodb 堆栈导出 arn 并在 lambda 堆栈中引用它。

效果很好。但是,它不允许我关闭 dynamodb 堆栈,因为 lambda 堆栈中有一个引用。有没有办法让我即使有引用也可以删除 dynamodb 堆栈?我不在乎 lambda 是否有效。在某些情况下,我需要翻转数据库表并创建一个新表。

下面是我在 lambda 上添加 dynamodb 流 arn 的 severless 配置:

myHandler:
  handler: src/lambdas.myHandler
  name: myHandler
  events:
    - stream:
        type: dynamodb
        arn: 
          Fn::ImportValue: '${self:provider.dynamodbStackName}-tableStreamArn'

最佳答案

遗憾的是,不适用于您当前的架构。您无法删除其他堆栈使用导出的卡住(来自 docs ):

After another stack imports an output value, you can't delete the stack that is exporting the output value or modify the exported output value. All of the imports must be removed before you can delete the exporting stack or modify the output value.

如果您不想通过导出-导入紧密耦合堆栈,您可以删除导入/导出并将DynamoDB 表 ARN 作为参数传递到您的 lambda 堆栈。这样您就不会耦合堆栈,并且您将能够自由删除或更新 DynamoDB 堆栈。

您也可以反其道而行之,将 lambda 函数名称作为参数传递给您的 AWS::Lambda::EventSourceMapping。可能会更容易,因为该函数比 DynanoDB 表更持久。

关于amazon-web-services - 如何在不构建依赖项的情况下引用堆栈输出值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63276850/

相关文章:

amazon-web-services - 使用 S3 进行代码部署总是在 5 分钟后失败

php - AWS S3 Helper上传文件后如何解锁文件?

javascript - 如何使用 Fetch API 将照片上传到 AWS S3?

amazon-web-services - API 网关 - 部署 API 如何工作?

amazon-web-services - 有什么更快的方法可以将多个文件从s3下载到本地文件夹?

amazon-dynamodb - 重命名表?

amazon-dynamodb - 如何建模 1 :N:M in dynamodb

elasticsearch - Elasticsearch : Does it maintain inverted and non inverted indexes both internally?

amazon-web-services - 如何从 CodePipeline 访问 SSM 参数

amazon-web-services - 没有默认vpc的ec2 cloudformation模板