amazon-web-services - 如何在 serverless.yml 默认值运算符中使用 `!GetAtt`?

标签 amazon-web-services aws-lambda amazon-dynamodb aws-cloudformation serverless-framework

我有 serverless.yml,用于部署 dynamodb 和 lambda 函数。 lambda函数需要引用dynamodb表流arn。

functions:
  onStreamHandler:
    handler: ...
    name: ...
    events:
      - stream:
        type: dynamodb
        arn: ${opt:dbStreamArn, !GetAtt EntityTable.StreamArn}

arn:字段中,我想指定如果未从命令行参数指定dbStreamArn,则从EntityTable.StreamArn<获取值。但我收到了这个错误:


  Serverless Error ---------------------------------------
 
  Missing "arn" property for stream event in function "onStreamHandler" The correct syntax is: stream: <StreamArn> OR an object with an "arn" property. Please check the docs for more info.

引用 arn 值的正确方法是什么?

最佳答案

可能是因为云形成试图在 dynamodb 表之前创建 lambda。

要解决此问题,请将 dependsOn 添加到您的 lambda 函数,例如:

functions:
  onStreamHandler:
    handler: ...
    name: ...
    events:
      - stream:
        type: dynamodb
        arn: ${opt:dbStreamArn, !GetAtt EntityTable.StreamArn}
    dependsOn:
      - EntityTable

一旦部署了EntityTable,就会部署该函数。 !GetAtt EntityTable.StreamArn 然后应该正确解析。

关于amazon-web-services - 如何在 serverless.yml 默认值运算符中使用 `!GetAtt`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70469922/

相关文章:

ruby-on-rails - 在 Elastic Beanstalk 上使用 Elasticache for Rails 5.0 应用程序配置 ActionCable

python - 在aws中获取表的列名作为元组而不是字符串

java - AWS 无法从 START_OBJECT 中反序列化 java.lang.String 的实例

javascript - Promise:然后在 Resolve 之前

javascript - 在 ffmpeg AWS Lambda 层中使用 ffprobe 输出文件详细信息

node.js - get 的响应数据类型

amazon-web-services - 在 AWS CDK 中设置状态机时,如何删除 Lambda 调用的默认重试策略?

amazon-web-services - block 级与文件级存储

amazon-web-services - 使用 Swift 进行 Amazon AWS DynamoDB 查询的最佳方式?

amazon-web-services - 将 DynamoDB 的 updateItem 与数值一起使用