CreateEventSourceMapping - AWS Lambda

CreateEventSourceMapping

在事件源和 AWS Lambda 函数之间创建映射。Lambda 从事件源读取项目并调用该函数。

有关如何配置不同事件源的详细信息,请参阅以下主题。

以下错误处理选项仅适用于流源(DynamoDB 和 Kinesis):

  • BisectBatchOnFunctionError – 如果函数返回错误,则将批次拆分为两批并重试。

  • DestinationConfig – 将丢弃的记录发送到 Amazon SQS 队列或 Amazon SNS 主题。

  • MaximumRecordAgeInSeconds – 丢弃超过指定期限的记录。默认值为无限 (-1)。如果设置为无限 (-1),则会一直重试失败的记录,直到记录过期。

  • MaximumRetryAttempts – 在指定重试次数后丢弃记录。默认值为无限 (-1)。如果设置为无限 (-1),则会一直重试失败的记录,直到记录过期。

  • ParallelizationFactor – 同时处理来自每个分片的多个批次。

有关适用于每个事件源的配置参数信息,请参阅以下主题。

请求语法

POST /2015-03-31/event-source-mappings/ HTTP/1.1 Content-type: application/json { "AmazonManagedKafkaEventSourceConfig": { "ConsumerGroupId": "string" }, "BatchSize": number, "BisectBatchOnFunctionError": boolean, "DestinationConfig": { "OnFailure": { "Destination": "string" }, "OnSuccess": { "Destination": "string" } }, "DocumentDBEventSourceConfig": { "CollectionName": "string", "DatabaseName": "string", "FullDocument": "string" }, "Enabled": boolean, "EventSourceArn": "string", "FilterCriteria": { "Filters": [ { "Pattern": "string" } ] }, "FunctionName": "string", "FunctionResponseTypes": [ "string" ], "MaximumBatchingWindowInSeconds": number, "MaximumRecordAgeInSeconds": number, "MaximumRetryAttempts": number, "ParallelizationFactor": number, "Queues": [ "string" ], "ScalingConfig": { "MaximumConcurrency": number }, "SelfManagedEventSource": { "Endpoints": { "string" : [ "string" ] } }, "SelfManagedKafkaEventSourceConfig": { "ConsumerGroupId": "string" }, "SourceAccessConfigurations": [ { "Type": "string", "URI": "string" } ], "StartingPosition": "string", "StartingPositionTimestamp": number, "Topics": [ "string" ], "TumblingWindowInSeconds": number }

URI 请求参数

该请求不使用任何 URI 参数。

请求体

请求接受采用 JSON 格式的以下数据。

AmazonManagedKafkaEventSourceConfig

Amazon Managed Streaming for Apache Kafka (Amazon MSK) 事件源的特定配置设置。

类型:AmazonManagedKafkaEventSourceConfig 对象

必需:否

BatchSize

Lambda 从流或队列中提取并发送到函数的每个批处理中的最大记录数。Lambda 在单次调用中将批处理中的所有记录传递给函数,最高可传递同步调用的负载上限 (6 MB)。

  • Amazon Kinesis – 默认值为 100。最大值为 10,000。

  • Amazon DynamoDB Streams – 默认值为 100。最大值为 10,000。

  • Amazon Simple Queue Service – 默认值为 10。对于标准队列,最大值为 10,000。对于 FIFO 队列,最大值为 10。

  • Amazon Managed Streaming for Apache Kafka – 默认值为 100。最大值为 10,000。

  • 自行管理的 Apache Kafka – 默认值为 100。最大值为 10,000。

  • Amazon MQ(ActiveMQ 和 RabbitMQ) – 默认值为 100。最大值为 10,000。

  • DocumentDB – 默认值 100。最大值为 10,000。

类型:整数

有效范围:最小值为 1。最大值为 10000。

必需:否

BisectBatchOnFunctionError

(仅限 Kinesis 和 DynamoDB Streams)如果函数返回错误,则将分处理拆分为两个并重试。

类型:布尔值

必需:否

DestinationConfig

(仅限 Kinesis、DynamoDB Streams、Amazon MSK 和自行管理的 Kafka)用于在 Lambda 处理事件后指定事件目标的配置对象。

类型:DestinationConfig 对象

必需:否

DocumentDBEventSourceConfig

DocumentB 事件源的特定配置设置。

类型:DocumentDBEventSourceConfig 对象

必需:否

Enabled

当为 true 时,事件源映射处于活动状态。当为 false 时,Lambda 暂停轮询和调用。

默认值:True

类型:布尔值

必需:否

EventSourceArn

事件源的 Amazon Resource Name (ARN)。

  • Amazon Kinesis – 数据流或流使用者的 ARN。

  • Amazon DynamoDB Streams – 流的 ARN。

  • Amazon Simple Queue Service – 队列的 ARN。

  • Amazon Managed Streaming for Apache Kafka – 集群的 ARN 或 VPC 连接的 ARN(用于跨账户事件源映射)。

  • Amazon MQ – 代理的 ARN。

  • Amazon DocumentDB – DocumentDB 更改流的 ARN。

类型:字符串

模式:arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

必需:否

FilterCriteria

定义用于确定 Lambda 是否应处理事件的筛选条件的对象。有关更多信息,请参阅 Lambda 事件筛选

类型:FilterCriteria 对象

必需:否

FunctionName

Lambda 函数的名称。

名称格式
  • 函数名称MyFunction

  • 函数 ARNarn:aws:lambda:us-west-2:123456789012:function:MyFunction

  • 版本或别名 ARNarn:aws:lambda:us-west-2:123456789012:function:MyFunction:PROD

  • 部分 ARN123456789012:function:MyFunction

长度约束仅适用于完整 ARN。如果您仅指定函数名称,它的长度将限制为 64 个字符。

类型:字符串

长度限制:最小长度为 1。长度上限为 140。

模式:(arn:(aws[a-zA-Z-]*)?:lambda:)?([a-z]{2}(-gov)?-[a-z]+-\d{1}:)?(\d{12}:)?(function:)?([a-zA-Z0-9-_]+)(:(\$LATEST|[a-zA-Z0-9-_]+))?

必需:是

FunctionResponseTypes

(Kinesis、DynamoDB Streams 和 Amazon SQS)应用于事件源映射的当前响应类型枚举的列表。

类型:字符串数组

数组成员:最少 0 项。最多 1 项。

有效值:ReportBatchItemFailures

必需:否

MaximumBatchingWindowInSeconds

Lambda 在调用函数之前收集记录的最长时间,以秒为单位。您可以将 MaximumBatchingWindowInSeconds 配置为介于 0 秒到 300 秒之间的任意值,以秒的整数倍调整。

对于流和 Amazon SQS 事件源,默认批处理时段为 0 秒。对于 Amazon MSK、自行管理的 Apache Kafka、Amazon MQ 和 DocumentDB 事件源,默认批处理时间窗口为 500 毫秒。请注意,由于您只能以秒为增量更改 MaximumBatchingWindowInSeconds,所以在更改后无法恢复到 500 毫秒的默认批处理时段。要恢复原定设置的批处理时段,必须创建新的事件源映射。

相关设置:对于流和 Amazon SQS 事件源,当将 BatchSize 设置为大于 10 的值时,必须将 MaximumBatchingWindowInSeconds 至少设置为 1。

类型:整数

有效范围:最小值为 0。最大值为 300。

必需:否

MaximumRecordAgeInSeconds

(仅限 Kinesis 和 DynamoDB Streams)丢弃超过指定龄期的记录。默认值为无限 (-1)。

类型:整数

有效范围:最小值为 -1。最大值为 604800。

必需:否

MaximumRetryAttempts

(仅限 Kinesis 和 DynamoDB Streams)在指定重试次数后丢弃记录。默认值为无限 (-1)。如果设置为无限 (-1),则会一直重试失败的记录,直到记录过期。

类型:整数

有效范围:最小值为 -1。最大值为 10000。

必需:否

ParallelizationFactor

(仅限 Kinesis 和 DynamoDB Streams)每个分片中同时处理的批处理数。

类型:整数

有效范围:最小值为 1。最大值为 10。

必需:否

Queues

(MQ) 要使用的 Amazon MQ 代理目标队列的名称。

类型:字符串数组

数组成员:固定数量为 1 项。

长度限制:最小长度为 1。最大长度为 1000。

模式:[\s\S]*

必需:否

ScalingConfig

(仅限 Amazon SQS)事件源的扩缩配置。有关更多信息,请参阅为 Amazon SQS 事件源配置最大并发

类型:ScalingConfig 对象

必需:否

SelfManagedEventSource

从中接收记录的自行管理的 Apache Kafka 集群。

类型:SelfManagedEventSource 对象

必需:否

SelfManagedKafkaEventSourceConfig

自行管理的 Apache Kafka 事件源的特定配置设置。

类型:SelfManagedKafkaEventSourceConfig 对象

必需:否

SourceAccessConfigurations

用于保护事件源的身份验证协议数组或 VPC 组件。

类型:SourceAccessConfiguration 对象数组

数组成员:最少 0 项。最多 22 项。

必需:否

StartingPosition

在流中开始读取数据的位置。对于 Amazon Kinesis 和 Amazon DynamoDB Streams 事件源,为必需项。仅 Amazon Kinesis 流、Amazon DocumentDB、Amazon MSK 和自行管理的 Apache Kafka 支持 AT_TIMESTAMP

类型:字符串

有效值:TRIM_HORIZON | LATEST | AT_TIMESTAMP

必需:否

StartingPositionTimestamp

StartingPosition 设置为 AT_TIMESTAMP 时,即开始读取的时间(以 Unix 时间秒为单位)。StartingPositionTimestamp 不能是未来时间。

类型:时间戳

必需:否

Topics

Kafka 主题的名称。

类型:字符串数组

数组成员:固定数量为 1 项。

长度限制:最小长度为 1。长度上限为 249。

模式:^[^.]([a-zA-Z0-9\-_.]+)

必需:否

TumblingWindowInSeconds

(仅限 Kinesis 和 DynamoDB Streams)DynamoDB 和 Kinesis Streams 事件源的处理时间窗口(以秒为单位)。值为 0 秒表示无滑动时间窗口。

类型:整数

有效范围:最小值为 0。最大值为 900。

必需:否

响应语法

HTTP/1.1 202 Content-type: application/json { "AmazonManagedKafkaEventSourceConfig": { "ConsumerGroupId": "string" }, "BatchSize": number, "BisectBatchOnFunctionError": boolean, "DestinationConfig": { "OnFailure": { "Destination": "string" }, "OnSuccess": { "Destination": "string" } }, "DocumentDBEventSourceConfig": { "CollectionName": "string", "DatabaseName": "string", "FullDocument": "string" }, "EventSourceArn": "string", "FilterCriteria": { "Filters": [ { "Pattern": "string" } ] }, "FunctionArn": "string", "FunctionResponseTypes": [ "string" ], "LastModified": number, "LastProcessingResult": "string", "MaximumBatchingWindowInSeconds": number, "MaximumRecordAgeInSeconds": number, "MaximumRetryAttempts": number, "ParallelizationFactor": number, "Queues": [ "string" ], "ScalingConfig": { "MaximumConcurrency": number }, "SelfManagedEventSource": { "Endpoints": { "string" : [ "string" ] } }, "SelfManagedKafkaEventSourceConfig": { "ConsumerGroupId": "string" }, "SourceAccessConfigurations": [ { "Type": "string", "URI": "string" } ], "StartingPosition": "string", "StartingPositionTimestamp": number, "State": "string", "StateTransitionReason": "string", "Topics": [ "string" ], "TumblingWindowInSeconds": number, "UUID": "string" }

响应元素

如果此操作成功,则该服务将会发送回 HTTP 202 响应。

服务以 JSON 格式返回以下数据。

AmazonManagedKafkaEventSourceConfig

Amazon Managed Streaming for Apache Kafka (Amazon MSK) 事件源的特定配置设置。

类型:AmazonManagedKafkaEventSourceConfig 对象

BatchSize

Lambda 从流或队列中提取并发送到函数的每个批处理中的最大记录数。Lambda 在单次调用中将批处理中的所有记录传递给函数,最高可传递同步调用的负载上限 (6 MB)。

默认值:因服务而异。对于 Amazon SQS,默认值为 10。对于所有其他服务,默认值为 100。

相关设置:当将 BatchSize 设置为一个大于 10 的值时,必须至少将 MaximumBatchingWindowInSeconds 设置为 1。

类型:整数

有效范围:最小值为 1。最大值为 10000。

BisectBatchOnFunctionError

(仅限 Kinesis 和 DynamoDB Streams)如果函数返回错误,则将分处理拆分为两个并重试。默认值为 False。

类型:布尔值

DestinationConfig

(仅限 Kinesis、DynamoDB Streams、Amazon MSK 和自行管理的 Apache Kafka 事件源)用于在 Lambda 处理事件后指定事件目标的配置对象。

类型:DestinationConfig 对象

DocumentDBEventSourceConfig

DocumentB 事件源的特定配置设置。

类型:DocumentDBEventSourceConfig 对象

EventSourceArn

事件源的 Amazon Resource Name (ARN)。

类型:字符串

模式:arn:(aws[a-zA-Z0-9-]*):([a-zA-Z0-9\-])+:([a-z]{2}(-gov)?-[a-z]+-\d{1})?:(\d{12})?:(.*)

FilterCriteria

定义用于确定 Lambda 是否应处理事件的筛选条件的对象。有关更多信息,请参阅 Lambda 事件筛选

类型:FilterCriteria 对象

FunctionArn

Lambda 函数的 ARN。

类型:字符串

模式:arn:(aws[a-zA-Z-]*)?:lambda:[a-z]{2}(-gov)?-[a-z]+-\d{1}:\d{12}:function:[a-zA-Z0-9-_]+(:(\$LATEST|[a-zA-Z0-9-_]+))?

FunctionResponseTypes

(Kinesis、DynamoDB Streams 和 Amazon SQS)应用于事件源映射的当前响应类型枚举的列表。

类型:字符串数组

数组成员:最少 0 项。最多 1 项。

有效值:ReportBatchItemFailures

LastModified

上次更新事件源映射或其状态更改的日期(以 Unix 时间秒为单位)。

类型:时间戳

LastProcessingResult

函数的最后一次 Lambda 调用结果。

类型:字符串

MaximumBatchingWindowInSeconds

Lambda 在调用函数之前收集记录的最长时间,以秒为单位。您可以将 MaximumBatchingWindowInSeconds 配置为介于 0 秒到 300 秒之间的任意值,以秒的整数倍调整。

对于流和 Amazon SQS 事件源,默认批处理时段为 0 秒。对于 Amazon MSK、自行管理的 Apache Kafka、Amazon MQ 和 DocumentDB 事件源,默认批处理时间窗口为 500 毫秒。请注意,由于您只能以秒为增量更改 MaximumBatchingWindowInSeconds,所以在更改后无法恢复到 500 毫秒的默认批处理时段。要恢复原定设置的批处理时段,必须创建新的事件源映射。

相关设置:对于流和 Amazon SQS 事件源,当将 BatchSize 设置为大于 10 的值时,必须将 MaximumBatchingWindowInSeconds 至少设置为 1。

类型:整数

有效范围:最小值为 0。最大值为 300。

MaximumRecordAgeInSeconds

(仅限 Kinesis 和 DynamoDB Streams)丢弃超过指定龄期的记录。原定设置值为 -1,该值将最大年龄设置为无限。将该值设置为无限后,Lambda 永远不会删除旧记录。

注意

最长记录期限的最小有效值为 60 秒。尽管小于 60 和大于 -1 的值都在参数的绝对范围内,但不允许使用它们

类型:整数

有效范围:最小值为 -1。最大值为 604800。

MaximumRetryAttempts

(仅限 Kinesis 和 DynamoDB Streams)在指定重试次数后丢弃记录。原定设置值为 -1,该值将最大重试次数设置为无限。将 MaximumRetryAttempts 设置为无限后,Lambda 会重试失败的记录,直到事件源中的记录过期为止。

类型:整数

有效范围:最小值为 -1。最大值为 10000。

ParallelizationFactor

(仅限 Kinesis 和 DynamoDB Streams)每个分片中同时处理的批处理数。默认值是 1。

类型:整数

有效范围:最小值为 1。最大值为 10。

Queues

(Amazon MQ) 要使用的 Amazon MQ 代理目标队列的名称。

类型:字符串数组

数组成员:固定数量为 1 项。

长度限制:最小长度为 1。最大长度为 1000。

模式:[\s\S]*

ScalingConfig

(仅限 Amazon SQS)事件源的扩缩配置。有关更多信息,请参阅为 Amazon SQS 事件源配置最大并发

类型:ScalingConfig 对象

SelfManagedEventSource

适用于事件源的自行管理 Apache Kafka 集群。

类型:SelfManagedEventSource 对象

SelfManagedKafkaEventSourceConfig

自行管理的 Apache Kafka 事件源的特定配置设置。

类型:SelfManagedKafkaEventSourceConfig 对象

SourceAccessConfigurations

用于保护与定义事件源的身份验证协议数组 VPC 组件或虚拟化主机。

类型:SourceAccessConfiguration 对象数组

数组成员:最少 0 项。最多 22 项。

StartingPosition

在流中开始读取数据的位置。对于 Amazon Kinesis 和 Amazon DynamoDB Streams 事件源,为必需项。仅 Amazon Kinesis 流、Amazon DocumentDB、Amazon MSK 和自行管理的 Apache Kafka 支持 AT_TIMESTAMP

类型:字符串

有效值:TRIM_HORIZON | LATEST | AT_TIMESTAMP

StartingPositionTimestamp

StartingPosition 设置为 AT_TIMESTAMP 时,即开始读取的时间(以 Unix 时间秒为单位)。StartingPositionTimestamp 不能是未来时间。

类型:时间戳

State

事件源映射的状态。此状态可以是以下值之一:CreatingEnablingEnabledDisablingDisabledUpdatingDeleting

类型:字符串

StateTransitionReason

表明是用户还是 Lambda 对事件源映射进行了最后一次更改。

类型:字符串

Topics

Kafka 主题的名称。

类型:字符串数组

数组成员:固定数量为 1 项。

长度限制:最小长度为 1。长度上限为 249。

模式:^[^.]([a-zA-Z0-9\-_.]+)

TumblingWindowInSeconds

(仅限 Kinesis 和 DynamoDB Streams)DynamoDB 和 Kinesis Streams 事件源的处理时间窗口(以秒为单位)。值为 0 秒表示无滑动时间窗口。

类型:整数

有效范围:最小值为 0。最大值为 900。

UUID

事件源映射的标识符。

类型:字符串

错误

有关所有操作返回的常见错误的信息,请参阅 常见错误

InvalidParameterValueException

请求中的参数之一无效。

HTTP 状态代码:400

ResourceConflictException

资源已存在,或者其他操作正在进行中。

HTTP 状态代码:409

ResourceNotFoundException

请求中指定的资源不存在。

HTTP 状态代码:404

ServiceException

AWS Lambda 服务遇到了内部错误。

HTTP 状态代码:500

TooManyRequestsException

超出了请求吞吐量限制。有关更多信息,请参阅 Lambda 限额

HTTP 状态代码:429

另请参阅

有关在特定语言的 AWS SDK 中使用此 API 的更多信息,请参阅以下内容: