AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

支持的事件源

本主题列出了支持的 AWS 服务,您可以将这些服务配置为 AWS Lambda 函数的事件源。在预配置事件源映射后,这些事件源检测事件时将自动调用您的 Lambda 函数。有关调用模式的更多信息,请参阅事件源映射

对于本主题中列出的所有事件源,请注意以下几点:

  • 事件源将维护事件源映射,基于流的服务(Amazon Kinesis Streams 和 Amazon DynamoDB Streams)除外。对于基于流的服务,AWS Lambda 将维护事件源映射。AWS Lambda 为您提供 CreateEventSourceMapping 操作以便您创建和管理事件源映射。有关更多信息,请参阅 事件源映射

     

  • 调用 Lambda 函数时这些事件源使用的调用类型也将进行预配置。例如,Amazon S3 始终异步调用 Lambda 函数,Amazon Cognito 将同步调用 Lambda 函数。仅在您使用 Invoke 操作自行调用 Lambda 函数(例如,根据需要从自定义应用程序调用 Lambda 函数)时,可以控制调用类型。

     

  • 为了处理 AWS 事件,您的 Lambda 函数可能需要包含附加库,具体取决于用于创建该函数的编程语言。用 Node.js 或 Python 编写的函数不需要任何附加库。对于 C#,您需要包括 AWS Lambda for .NET Core。对于 Java,您需要包括 aws-lambda-java-libs

    重要

    每个包括的程序包都不需要修改就可以使用。移除依赖项、添加冲突依赖项或有选择地包括程序包中的类可能会导致意外行为。

您也可以根据需要调用 Lambda 函数。有关详细信息,请参阅 其他事件源:根据需要调用 Lambda 函数

有关这些事件源发布的事件的示例,请参阅事件源发布的示例事件

Amazon S3

您可以编写 Lambda 函数来处理 S3 存储桶事件,例如,对象创建事件或对象删除事件。例如,当用户将一张照片上传到存储桶时,您可能希望 Amazon S3 调用 Lambda 函数,以便读取图像和创建照片缩略图。

您可以使用 Amazon S3 中的存储桶通知配置来配置事件源映射,并标识您希望 Amazon S3 发布的存储桶事件以及要调用的 Lambda 函数。

有关示例 Amazon S3 事件,请参阅事件消息结构Amazon S3 放置示例事件Amazon S3 删除示例事件。有关示例使用案例,请参阅配合使用 AWS Lambda 和 Amazon S3

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon S3 异步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon DynamoDB

您可以使用 Lambda 函数作为 Amazon DynamoDB 表的触发器。触发器是为响应对 DynamoDB 表做出的更新而采取的自定义操作。要创建触发器,首先要为表启用 Amazon DynamoDB Streams。AWS Lambda 将轮询流,而 Lambda 函数将处理已发布到流的任何更新。

这是一个基于流的事件源。对于基于流的服务,您可以在 AWS Lambda 中创建事件源映射,并标识要轮询的流以及要调用的 Lambda 函数。

有关示例 DynamoDB 事件,请参阅步骤 2.3.2:测试 Lambda 函数(手动调用)Amazon DynamoDB 更新示例事件。有关一般格式,请参阅 Amazon DynamoDB API Reference 中的 GetRecord。有关示例使用案例,请参阅配合使用 AWS Lambda 和 Amazon DynamoDB

给定事件源的错误处理取决于 Lambda 的调用方式。DynamoDB 是一个基于流的事件源。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Kinesis Streams

可以将 AWS Lambda 配置为自动轮询流并处理任何新记录,例如,网站点击流、财务交易记录、社交媒体源、IT 日志和位置跟踪事件。这样,AWS Lambda 会定期 (每秒一次) 轮询流中的新记录。

对于基于流的服务,您可以在 AWS Lambda 中创建事件源映射,并标识要轮询的流以及要调用的 Lambda 函数。

有关示例事件,请参阅步骤 2.3:创建 Lambda 函数并手动对其进行测试Amazon Kinesis Streams 示例事件。有关示例使用案例,请参阅配合使用 AWS Lambda 和 Kinesis

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon Kinesis Streams 是一个基于流的事件源。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Simple Notification Service

您可以编写 Lambda 函数来处理 Amazon Simple Notification Service 通知。在将消息发布到 Amazon SNS 主题时,服务可以通过将消息负载作为参数传递来调用 Lambda 函数。随后,您的 Lambda 函数代码可以处理事件,例如,将消息发布到其他 Amazon SNS 主题或将消息发送到其他 AWS 服务。

这还使您能够触发 Lambda 函数以响应 Amazon CloudWatch 警报和其他使用 Amazon SNS 的 AWS 服务。

可以通过主题订阅配置在 Amazon SNS 中配置事件源映射。有关更多信息,请参阅 Amazon Simple Notification Service 开发人员指南 中的使用 Amazon SNS 通知调用 Lambda 函数

有关示例活动,请参阅附录:消息与 JSON 格式Amazon SNS 示例事件。有关示例使用案例,请参阅将 AWS Lambda 与其他账户中的 Amazon SNS 结合使用

当用户调用 Lambda 函数订阅的主题的 SNS Publish API 时,Amazon SNS 会调用 Lambda,进而异步调用函数。随后,Lambda 将返回传输状态。如果调用 Lambda 时出错,Amazon SNS 将重新尝试调用 Lambda 函数(最多尝试 3 次)。在尝试 3 次后,如果 Amazon SNS 仍无法成功调用 Lambda 函数,则 Amazon SNS 将向 CloudWatch 发送传输状态失败消息。

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon SNS 异步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Simple Email Service

Amazon Simple Email Service (Amazon SES) 是一项经济高效的电子邮件服务。利用 Amazon SES,您可以发送电子邮件以及使用服务来接收消息。有关 Amazon SES 的更多信息,请参阅Amazon Simple Email Service。在使用 Amazon SES 接收消息时,可以将 Amazon SES 配置为在消息到达时调用您的 Lambda 函数。然后,该服务通过将实际上是 Amazon SNS 事件中的 Amazon SES 消息的传入电子邮件事件作为一个参数传入,来调用您的 Lambda 函数。有关示例方案,请参阅考虑 Amazon SES 电子邮件接收的使用案例

您可使用规则配置在 Amazon SES 中配置事件源映射。Amazon Simple Email Service 开发人员指南 中的以下主题提供额外的信息:

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon SES 异步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Cognito

利用 Amazon Cognito 事件功能,您可以运行 Lambda 函数以响应 Amazon Cognito 中的事件。例如,您可以为同步触发事件调用 Lambda 函数,每当同步数据集时,就会发布该事件。要了解更多信息并完成一个示例,请参阅“移动开发”博客中的 Amazon Cognito 事件简介:同步触发

可使用 Amazon Cognito 事件订阅配置来配置事件源映射。有关事件源映射和示例事件的信息,请参阅 Amazon Cognito 开发人员指南 中的 Amazon Cognito 事件。有关其他示例事件,请参阅 Amazon Cognito 同步触发示例事件

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon Cognito 配置为同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

AWS CloudFormation

作为部署 AWS CloudFormation 堆栈的一部分,您可以将 Lambda 函数指定为自定义资源来执行任何自定义命令。通过将 Lambda 函数与自定义资源关联,您可以在创建、更新或删除 AWS CloudFormation 堆栈时调用 Lambda 函数。

您可使用堆栈定义在 AWS CloudFormation 中配置事件源映射。有关更多信息,请参阅 AWS CloudFormation 用户指南 中的 AWS Lambda 支持的自定义资源

有关示例事件,请参阅AWS CloudFormation 创建请求示例事件。请注意,此事件实际上是 Amazon SNS 事件中的 AWS CloudFormation 消息。

给定事件源的错误处理取决于 Lambda 的调用方式。AWS CloudFormation 同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon CloudWatch Logs

您可以使用 AWS Lambda 函数对使用 CloudWatch Logs 订阅的 Amazon CloudWatch Logs 进行自定义分析。利用 CloudWatch Logs 订阅,可以从 CloudWatch Logs 访问日志事件的实时源并将其传输到 AWS Lambda 函数,以对其进行自定义处理、分析或将其加载到其他系统。有关 CloudWatch Logs 的更多信息,请参阅监控日志文件

您可使用日志订阅配置在 Amazon CloudWatch Logs 中保留事件源映射。有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的使用订阅实时处理日志数据(示例 2:AWS Lambda)

有关示例事件,请参阅Amazon CloudWatch Logs 示例事件

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon CloudWatch Logs 异步调用您的 Lambda 函数(调用 Lambda 函数不会阻止对日志执行写入操作)。有关如何重试错误的更多信息,请参阅出错时重试

Amazon CloudWatch 事件

Amazon CloudWatch 事件可用于响应您的 AWS 资源的状态更改。当您的资源的状态发生变化时,会自动向事件流发送事件。您可以创建规则来匹配流中的选定事件并将它们发送到 AWS Lambda 函数以采取操作。例如,您可以自动调用 AWS Lambda 函数以记录 EC2 实例AutoScaling 组的状态。

您可使用规则目标定义在 Amazon CloudWatch 事件中保留事件源映射。有关更多信息,请参阅 Amazon CloudWatch Events API 参考 中的 PutTargets 操作。

有关示例事件,请参阅 Amazon CloudWatch 用户指南 中的支持事件类型

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon CloudWatch 事件异步调用您的 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

AWS CodeCommit

您可以为 AWS CodeCommit 存储库创建触发器,以便存储库中的事件可以调用 Lambda 函数。例如,当创建分支或标签时,或者推送现有分支时,您可以调用 Lambda 函数。有关更多信息,请参阅管理 AWS CodeCommit 存储库的触发器

您可以使用存储库触发器来维护 AWS CodeCommit 中的事件源映射。有关更多信息,请参阅 PutRepositoryTriggers 操作。

给定事件源的错误处理取决于 Lambda 的调用方式。AWS CodeCommit 异步调用您的 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

计划的事件(由 Amazon CloudWatch 事件提供支持)

您也可以使用 Amazon CloudWatch 事件中的计划事件功能将 AWS Lambda 设置为定期调用您的代码。要设置计划,您可以指定固定速率(小时数、天数或星期数)或指定 cron 表达式(请参阅 Amazon CloudWatch 用户指南 中的规则的计划表达式语法)。

您可使用规则目标定义在 Amazon CloudWatch 事件中保留事件源映射。有关更多信息,请参阅 Amazon CloudWatch Events API 参考 中的 PutTargets 操作。

有关示例使用案例,请参阅将 AWS Lambda 用于计划的事件

有关示例事件,请参阅计划的事件示例事件

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon CloudWatch 事件配置为异步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

AWS Config

您可以使用 AWS Lambda 函数评估 AWS 资源配置是否遵从自定义配置规则。在创建、删除或更改资源时,AWS Config 将记录这些更改并将信息发送到您的 Lambda 函数。随后,您的 Lambda 函数将评估更改,并将结果报告给 AWS Config。然后,您可以使用 AWS Config 评估整体资源合规性:您可以了解哪些资源不合规以及哪些配置属性是导致不合规的原因。

您可使用规则目标定义在 AWS Config 中保留事件源映射。有关更多信息,请参阅 AWS Config API 参考 中的 PutConfigRule 操作。

有关更多信息,请参阅使用 AWS Config 规则评估资源。有关设置自定义规则的示例,请参阅为 AWS Config 开发自定义规则。有关 Lambda 函数示例,请参阅 AWS Config 规则的示例 AWS Lambda 函数 (Node.js)

给定事件源的错误处理取决于 Lambda 的调用方式。AWS Config 配置为异步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Alexa

您可以使用 Lambda 函数构建服务,例如,赋予 Alexa 新的技能、在 Amazon Echo 上增加语音辅助功能。Alexa Skills Kit 提供了创建此类新技能(由以 Lambda 函数形式运行的您自己的服务提供)的 API、工具和文档。Amazon Echo 用户可通过询问 Alexa 问题或发出请求来访问这些新技能。有关更多信息,请参阅:

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon Echo 配置为同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Lex

Amazon Lex 是一项可在应用程序内使用语音和文本构建对话接口的 AWS 服务。Amazon Lex 提供与 AWS Lambda 的预构建集成,支持您创建 Lambda 函数,使其作为代码钩子与 Amazon Lex 机器人配合工作。在目标配置中,您可以标识 Lambda 函数以执行初始化/验证或履行操作,或者同时执行两者。

有关更多信息,请参阅使用 Lambda 函数。有关示例使用案例,请参阅练习 1:使用蓝图创建 Amazon Lex 机器人

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon Lex 配置为同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon API Gateway

您可以通过 HTTPS 调用 Lambda 函数。您可以使用 Amazon API Gateway 定义自定义 REST API 和终端节点来做到这一点。您可以将各个 API 操作(如 GETPUT)映射到特定的 Lambda 函数。当向该 API 终端节点发送 HTTPS 请求时,Amazon API Gateway 服务会调用相应的 Lambda 函数。

有关更多信息,请参阅同步调用 Lambda 函数。有关示例使用案例,请参阅将 AWS Lambda 与 Amazon API Gateway 结合使用(按需并通过 HTTPS)

给定事件源的错误处理取决于 Lambda 的调用方式。Amazon API Gateway 配置为同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

此外,您还可以将 Lambda 函数用于将数据发布到本主题中所列的某个支持的 AWS 事件源的其他 AWS 服务。例如,您可以:

  • 触发 Lambda 函数以响应 CloudTrail 更新(因为它将所有 API 访问事件记录到 Amazon S3 存储桶中)。

  • 触发 Lambda 函数以响应 CloudWatch 警报(因为它将警报事件发布到 Amazon SNS 主题)。

AWS IoT 按钮

AWS IoT 按钮是一个基于 Amazon Dash Button 硬件的可编程按钮。这种简单的 Wi-Fi 设备易于配置,专为帮助开发人员开始使用 AWS Lambda 以及众多其他 AWS 服务而设计,无需编写特定于设备的代码。

您可以在云中对按钮进行逻辑编码,配置按钮单击以计数或跟踪项目、呼叫或提醒某人、启动或停止某些操作、订购服务或甚至提供反馈。例如,您可以通过单击按钮开锁或启动汽车、打开车库门、叫计程车、呼叫配偶或客户服务代表、跟踪常见家务的进行情况及药物或商品的使用情况,或远程控制家用电器。

给定事件源的错误处理取决于 Lambda 的调用方式。AWS IoT 配置为异步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon CloudFront

利用 Lambda@Edge,您可以在 AWS 区域和 Amazon CloudFront 边缘站点运行 Lambda 函数以响应 CloudFront 事件,而无需配置或管理服务器。您可以在以下时间点使用 Lambda 函数来更改 CloudFront 请求和响应:

  • 在 CloudFront 收到查看器的请求之后 (查看器请求)

  • 在 CloudFront 将请求转发到源之前 (源请求)

  • 在 CloudFront 收到来自源的响应之后 (源响应)

  • 在 CloudFront 将响应转发到查看器之前 (查看器响应)

有关更多信息,请参阅 AWS Lambda@Edge

给定事件源的错误处理取决于 Lambda 的调用方式。CloudFront 配置为同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

Amazon Kinesis Firehose

Amazon Kinesis Firehose 是将流数据加载到AWS 中的最简单方法。它可以捕获、转换流数据并将其加载到下游服务 (例如 Kinesis Analytics 或 Amazon S3) 中,从而使您能够利用现成的业务智能工具和仪表板执行近实时分析。您可以编写 Lambda 函数来请求附加的自定义数据处理,然后它会在下游发送。

给定事件源的错误处理取决于 Lambda 的调用方式。Kinesis Firehose 配置为同步调用 Lambda 函数。有关如何重试错误的更多信息,请参阅出错时重试

其他事件源:根据需要调用 Lambda 函数

除了使用事件源调用 Lambda 函数之外,您还可以根据需要调用 Lambda 函数。在此情况下,您无需预先配置任何事件源映射。不过,请确保自定义应用程序具有调用 Lambda 函数所需的权限。

例如,用户应用程序还可以生成事件(构建您自己的自定义事件源)。用户应用程序(如客户端、手机或 Web 应用程序)可以发布事件,并使用 AWS 软件开发工具包或 AWS 移动软件开发工具包(如 适用于 Android 的 AWS 移动软件开发工具包)调用 Lambda 函数。

有关更多信息,请参阅用于 Amazon Web Services 的工具。有关示例教程,请参阅将 AWS Lambda 与 Amazon API Gateway 结合使用(按需并通过 HTTPS)