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

调用 AWS Lambda 函数

在 AWS Lambda 上构建应用程序时,核心组件是 Lambda 函数和事件源。事件源是发布事件的 AWS 服务或自定义应用程序,Lambda 函数是处理事件的自定义代码。为了清晰起见,请考虑以下情景:

  • 文件处理 – 假设您有一个照片共享应用程序。人们使用您的应用程序上传照片,应用程序将这些用户照片存储到 Amazon S3 存储桶中。然后,您的应用程序创建每个用户照片的缩略图版本,并在用户的资料页面上显示这些缩略图。在这种情景下,您可以选择创建 Lambda 函数来自动创建缩略图。Amazon S3 是支持的 AWS 事件源之一,可以发布对象创建的事件并调用您的 Lambda 函数。您的 Lambda 函数代码可以从 S3 存储桶读取照片对象、创建缩略图版本,然后将其保存到其他 S3 存储桶中。

  • 数据和分析 – 假设您在构建分析应用程序并将原始数据存储到 DynamoDB 表中。在您编写、更新或删除表中的项目时,DynamoDB 流可以将项目更新事件发布到与表关联的流。在这种情况下,事件数据提供项目键、事件名称 (例如插入、更新和删除) 以及其他相关详细信息。您可以编写 Lambda 函数,通过聚合原始数据来生成自定义指标。

  • 网站 – 假设您在创建网站并且希望在 Lambda 上托管后端逻辑。您可以在 HTTP 上调用 Lambda 函数,使用 Amazon API Gateway 作为 HTTP 终端节点。现在,您的 Web 客户端可以调用 API,然后 API 网关 可将请求路由到 Lambda。

  • 移动应用程序 – 假设您有生成事件的自定义移动应用程序。您可创建 Lambda 函数来处理由自定义应用程序发布的事件。例如,在此情景中,您可以配置 Lambda 函数来处理自定义移动应用程序中的点击。

AWS Lambda 支持将多种 AWS 服务作为事件源。有关更多信息,请参阅 将 AWS Lambda 与其他服务结合使用。当您配置了这些事件源触发 Lambda 函数时,Lambda 函数在出现事件时自动调用。您可以定义事件源映射,这是您如何确定要跟踪的事件以及要调用的 Lambda 函数。

以下为事件源和端到端体验工作方式的介绍性示例。

示例 1:Amazon S3 推送事件并调用 Lambda 函数

Amazon S3 可以在存储桶上发布不同类型的事件,例如 PUT、POST、COPY 和 DELETE 对象事件。使用存储桶通知功能,您可以配置事件源映射,引导 Amazon S3 在出现特定事件类型时调用 Lambda 函数,如下图中所示。

图中说明了以下序列:

  1. 用户在存储桶中创建对象。

  2. Amazon S3 检测到对象创建事件。

  3. Amazon S3 使用由执行角色提供的权限来调用 Lambda 函数。

  4. AWS Lambda 执行 Lambda 函数,指定事件作为参数。

配置 Amazon S3 来将您的函数作为存储桶通知操作调用。要授予 Amazon S3 调用该函数的权限,请更新函数的基于资源的策略

示例 2:AWS Lambda 从 Kinesis 流中拉取事件并调用 Lambda 函数

对于基于轮询的事件源,AWS Lambda 轮询源,然后在源上检测到记录时调用 Lambda 函数。

下图显示了自定义应用程序如何将记录写入 Kinesis 流中。

图中说明了以下序列:

  1. 自定义应用程序将记录写入 Kinesis 流。

  2. AWS Lambda 持续轮询流,在服务检测到流上的新记录时调用 Lambda 函数。AWS Lambda 根据您在 Lambda 中创建的事件源映射来确定要轮询的流以及调用的 Lambda 函数。

  3. 使用传入事件调用 Lambda 函数。

使用基于流的事件源时,您可以在 AWS Lambda 中创建事件源映射。Lambda 以同步方式调用该函数来从流读取项目。您不必授予 Lambda 调用该函数的权限,但它需要读取流的权限。