serverless

serverless frameworkでDynamoDB streamsとトリガーの登録をする

以下の記事などが投稿された頃にはできなかった
「eventsでFn::GetAttを使ってDynamoDBのstreamsと紐付ける」
が今はできるようになっている。

serverless frameworkでDynamoDBとLambdaのイベントを関連付ける
Serverless Frameworkでやったことをまとめてみた

PR #3111で対応したっぽいのでバージョン1.9以降なら使える。

上記のPRやDocsに記述されているように、以下のように定義する

functions:
 Hello:
    handler: handler.hello
    events:
      - stream:
          type: dynamodb
          arn:
            Fn::GetAtt:
              - MyDynamoDbTable
              - StreamArn
# ...

resources:
  Resources:
    MyDynamoDbTable:
      Type: "AWS::DynamoDB::Table"
      Properties:
        TableName: my-table
        AttributeDefinitions:
          - AttributeName: id
            AttributeType: N
        KeySchema:
          - AttributeName: id
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
        StreamSpecification:
          StreamViewType: NEW_AND_OLD_IMAGES