注册特定条目时使用 dynamodb 触发 lambda

Trigger the lambda with dynamodb when a specific entry is registered

我需要在特定对象在 DynamoDB 上注册时触发 lambda。

例如:

If I create a User with a POST /my-website/user and, I store this User on DynamoDB, I want to trigger my Lambda.

I don't want to trigger the Lambda if the registered object is different from the User.

为了管理我的堆栈,我使用 Serverless(带有 serverless.yml 文件)和 CloudFormation 语法。

使用无服务器文档,我无法弄清楚如何仅在特定条目注册到 DynamoDB ( https://www.serverless.com/framework/docs/providers/aws/events/streams ) 时触发我的 Lambda

提前致谢,

编辑:

感谢您的回答:)

成功了:

  statement:
    handler: lambda/statement.php
    layers:
      - arn:aws:lambda:#{AWS::Region}:<account_id>:layer:php-73:1
    iamRoleStatements:
      - Effect: Allow
        Action:
          - dynamodb:ListStreams
          - dynamodb:GetItem
    events:
    - stream:
        type: dynamodb
        arn: arn:aws:dynamodb:eu-west-3:<account_id>:table/dev-project/stream/2020-11-18T22:34:01.579
        maximumRetryAttempts: 1
        batchSize: 1
        filterPatterns:
          - eventName: [INSERT]
            dynamodb:
              NewImage:
                __partitionKey:
                  S: [myPk]

您必须设置 stream filters。该过程解释于:

流过滤器有效(谢谢)。这是最终配置:

  statement:
    handler: lambda/statement.php
    layers:
      - arn:aws:lambda:#{AWS::Region}:<account_id>:layer:php-73:1
    iamRoleStatements:
      - Effect: Allow
        Action:
          - dynamodb:ListStreams
          - dynamodb:GetItem
    events:
    - stream:
        type: dynamodb
        arn: arn:aws:dynamodb:eu-west-3:<account_id>:table/dev-project/stream/2020-11-18T22:34:01.579
        maximumRetryAttempts: 1
        batchSize: 1
        filterPatterns:
          - eventName: [INSERT]
            dynamodb:
              NewImage:
                __partitionKey:
                  S: [myPk]