AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 事件源映射

事件源映射是一个从事件源读取并调用 Lambda 函数的 AWS Lambda 资源。您可以使用事件源映射来处理未直接调用 Lambda 函数的服务中的流或队列中的项。Lambda 为以下服务提供事件源映射。

Lambda 从其读取事件的服务

事件源映射使用函数执行角色中的权限来读取和管理事件源中的项。权限、事件结构、设置和轮询行为因事件源而异。有关更多信息,请参阅用作事件源的服务的链接主题。

要使用 AWS CLI 或 AWS 开发工具包管理事件源映射,请使用以下 API。

以下示例使用 AWS Command Line Interface 将名为 my-function 的函数映射到由 Amazon 资源名称 (ARN) 指定的 DynamoDB 流 流(批处理大小为 500)

$ aws lambda create-event-source-mapping --function-name my-function --batch-size 500 --starting-position LATEST \ --event-source-arn arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2019-06-10T19:26:16.525 { "UUID": "14e0db71-5d35-4eb5-b481-8945cf9d10c2", "BatchSize": 500, "MaximumBatchingWindowInSeconds": 0, "EventSourceArn": "arn:aws:dynamodb:us-east-2:123456789012:table/my-table/stream/2019-06-10T19:26:16.525", "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function", "LastModified": 1560209851.963, "LastProcessingResult": "No records processed", "State": "Creating", "StateTransitionReason": "User action" }

事件源映射批量读取流或队列中的项,并在您的函数接收的事件中包含多个项。您可以配置事件源映射读取的批次大小,最大值因服务而异。如果没有足够可用的项,或者批次太大而无法在一个事件中发送并且必须拆分,则事件中的项数可能小于批次大小。

对于流,事件源映射为流中的每个分片创建迭代器,并按顺序处理每个分片中的项。您可以将事件源映射配置为只读取流中显示的新项,或者从较旧的项开始。如果您的函数返回错误,则重新处理整个批次,直到函数成功,或直到批次中的项到期。为确保按顺序处理,将暂停对受影响的分片的处理,直到解决错误为止。已处理的项不会从流中删除,并且可能由其他函数或使用者处理。

对于队列,不一定按顺序处理项。失败的批次作为单个项返回到队列,并且可以在与原始批次不同的分组中处理。有时,即使没有发生任何函数错误,事件源映射也可能会从队列中接收相同的项两次。Lambda 在成功处理后删除队列中的项。

有关直接调用 Lambda 函数的服务的信息,请参阅 将 AWS Lambda 与其他服务结合使用