无服务器 |如何将 Lambda 函数作为触发器连接到 DynamoDB table
Serverless | How to connect a Lambda function as trigger to a DynamoDB table
我正在尝试连接 Lambda 函数作为 DynamoDB 的触发器 table。
在我的 serverless.yml 文件中,我定义了一个 Lambda 函数和一个 DynamoDB table。
问题:如何将 Lambda 函数作为触发器附加到 DynamoDB?
我的serverless.yaml
(简体):
functions:
pushLeadEvent:
handler: handler.pushLeadEvent
events:
- /* WHAT TO DO HERE? */
resources:
Resources:
leadEvent:
Type: AWS::DynamoDB::Table
Properties:
TableName: leadEvent
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: owner
AttributeType: S
- AttributeName: timestamp
AttributeType: N
KeySchema:
- AttributeName: owner
KeyType: HASH
- AttributeName: timestamp
KeyType: RANGE
根据 Serverless Framework documentation 和我个人的经验,我会推荐这个:
functions:
pushLeadEvent:
handler: handler.pushLeadEvent
dependsOn:
- leadEvent
events:
- stream:
type: dynamodb
arn: !GetAtt leadEvent.StreamArn
batchSize: 100
startingPosition: LATEST
maximumRetryAttempts: 10
bisectBatchOnFunctionError: true
enabled: true
这将:
- 将您的 Lambda 订阅到
leadEvent
table 中的所有更改。
- 单个批次最多可以有 100 个事件。
- 如果事件失败,Lambda 将重试最多 10 次
- 在每次重试时,如果批次有超过 1 个事件,它将分成 2 个分开的批次,每批次减半
我正在尝试连接 Lambda 函数作为 DynamoDB 的触发器 table。
在我的 serverless.yml 文件中,我定义了一个 Lambda 函数和一个 DynamoDB table。
问题:如何将 Lambda 函数作为触发器附加到 DynamoDB?
我的serverless.yaml
(简体):
functions:
pushLeadEvent:
handler: handler.pushLeadEvent
events:
- /* WHAT TO DO HERE? */
resources:
Resources:
leadEvent:
Type: AWS::DynamoDB::Table
Properties:
TableName: leadEvent
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: owner
AttributeType: S
- AttributeName: timestamp
AttributeType: N
KeySchema:
- AttributeName: owner
KeyType: HASH
- AttributeName: timestamp
KeyType: RANGE
根据 Serverless Framework documentation 和我个人的经验,我会推荐这个:
functions:
pushLeadEvent:
handler: handler.pushLeadEvent
dependsOn:
- leadEvent
events:
- stream:
type: dynamodb
arn: !GetAtt leadEvent.StreamArn
batchSize: 100
startingPosition: LATEST
maximumRetryAttempts: 10
bisectBatchOnFunctionError: true
enabled: true
这将:
- 将您的 Lambda 订阅到
leadEvent
table 中的所有更改。 - 单个批次最多可以有 100 个事件。
- 如果事件失败,Lambda 将重试最多 10 次
- 在每次重试时,如果批次有超过 1 个事件,它将分成 2 个分开的批次,每批次减半