You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在serverless.yml中引用DynamoDB流作为Lambda触发器(免硬编码ARN)

如何在Serverless框架中引用DynamoDB表的流ARN而不硬编码?

这其实很简单,利用Serverless框架对CloudFormation内置函数的支持就能解决,不用手动硬编码ARN。直接看修改后的完整配置示例:

service: my-service

resources:
  Resources:
    MyTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: my-table
        AttributeDefinitions:
          - AttributeName: "id"
            AttributeType: "S"
        KeySchema:
          - AttributeName: "id"
            KeyType: "HASH"
        ProvisionedThroughput:
          ReadCapacityUnits: "5"
          WriteCapacityUnits: "5"
        StreamSpecification:
          StreamViewType: NEW_AND_OLD_IMAGES # 必须开启流才能生成StreamArn属性

functions:
  my-handler:
    handler: src/handler.main
    events:
      - stream:
          type: dynamodb
          arn: !GetAtt MyTable.StreamArn # 动态引用表的流ARN

关键说明:

  • 核心是用CloudFormation的!GetAtt内置函数,它可以动态获取你定义的CloudFormation资源的属性值。这里MyTable是你在resources块中声明的DynamoDB表的逻辑名称,StreamArn是该表开启流后自动生成的属性。
  • 必须确保你的DynamoDB表已经配置了StreamSpecification(如示例所示),否则表不会生成流ARN,这个引用会在部署时报错。
  • 部署时,Serverless框架会将这个配置转换为CloudFormation模板,CloudFormation会在创建DynamoDB表后自动获取其流ARN,再绑定到Lambda的触发器上,全程无需手动填写ARN。

内容的提问来源于stack exchange,提问作者not_a_cloud_guru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:28:13