【问题标题】:serverless dynamodb streams and triggers无服务器 dynamodb 流和触发器
【发布时间】:2020-06-18 00:52:17
【问题描述】:

我已经到处搜索了,但我终生无法获得无服务器来设置 dynamodb 触发器。

我用过:

- stream:
        type: dynamodb
        batchSize: 100
        enabled: true
        arn: 
          Fn::GetAtt:
            - MyDynamoDbTable
            - StreamArn

我尝试了硬编码的 arn,但在 aws 控制台中没有看到任何内容。我是无服务器的新手。如果您有任何指示,请发布。

【问题讨论】:

  • 哎呀,让触发器工作...使用 -stream: yourARNHere 而不是上面的 sn-p

标签: amazon-dynamodb serverless-framework serverless


【解决方案1】:

如何在 serverless.yml 中配置 dynamodb 流的示例

   functions:  
      dynamodb-trigger:
        handler: yourfunction.handler
        events:
          - stream:
              type: dynamodb
              batchSize: 1
              startingPosition: LATEST
              arn:
                Fn::GetAtt:
                  - MyDynamoDbTable
                  - StreamArn
        iamRoleStatements:
          - Effect: Allow
            Action: 
              - dynamodb:ListStreams
              - dynamodb:DescribeTable
              - dynamodb:UpdateItem
              - dynamodb:GetItem
            Resource: 
            - "Fn::Join": ["", ["arn:aws:dynamodb:" , {"Ref": "AWS::Region"}, ":", {"Ref": "AWS::AccountId"} , ":table/${self:provider.environment.MFA_DYNAMODB_TABLE}"] ]

    resources:
      Resources:
        MyDynamoDbTable:
          Type: 'AWS::DynamoDB::Table'
          DeletionPolicy: Delete
          Properties:
            AttributeDefinitions:
              -
                AttributeName: id
                AttributeType: S
            KeySchema:
              -
                AttributeName: id
                KeyType: HASH
            ProvisionedThroughput:
              ReadCapacityUnits: 1
              WriteCapacityUnits: 1
            TableName: ${self:provider.environment.MFA_DYNAMODB_TABLE}
            StreamSpecification:
              StreamViewType: NEW_IMAGE

【讨论】:

【解决方案2】:
events: 
    - stream: arn:aws:dynamodb:us-west-2:xxxxxx:table/tableName/stream/2018-04-19T16:40:37.833

这是在 dynamodb 上创建触发器的正确​​方法

【讨论】:

  • 对于这个,我们如何设置batchSize,兄弟?
【解决方案3】:

我们遇到了同样的问题。答案基本上是你不能。或者更准确地说,您必须每次都销毁 Dynamo DB 表。我们构建了这个插件,允许您连接它。 https://www.npmjs.com/package/serverless-dynamo-stream-plugin

我们的团队根据项目通过 ansible 或 terraform 创建 Dynamo DB 表,然后我们使用此插件将其连接在一起。

我们正在通过我们在 github 上的开源 repo 维护它,所以如果您有任何问题或建议,您可以在这里或那里给我发消息。希望这会有所帮助,因为我们现在正在生产代码库中使用它。

【讨论】:

    猜你喜欢
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2021-01-20
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多