调用 Lambda 函数 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

调用 Lambda 函数

您可以直接使用 Lambda 控制台函数 URL HTTP(S)端点、Lambda APIAmazon 开发工具包Amazon Command Line Interface(Amazon CLI)和 Amazon 工具包直接调用 Lambda 函数。您还可以配置其他 Amazon 服务,用于调用您的函数以响应事件或外部请求或按计划运行。例如,当在 S3 存储桶中创建对象时,Amazon Simple Storage Service(Amazon S3)可以调用您的函数,或者 Amazon EventBridge(CloudWatch Events)可以按计划调用您的函数。您还可以配置 Lambda 从流或队列中读取项目,并调用您的函数来处理这些项目。

调用函数时,您可以选择同步或异步调用。使用同步调用时,您将等待函数处理该事件并返回响应。使用异步调用时,Lambda 会将事件排队等待处理并立即返回响应。对于异步调用,Lambda 可以处理重试并将调用记录发送到目标

从另一个 Amazon Web Service 调用 Lambda 函数

要让其他 Amazon 服务直接调用您的函数,您需要创建触发器。触发器是您配置的一种资源,用于在某些事件或条件发生时允许其他 Amazon 服务调用您的函数。您的函数可具有多个触发器。每个触发器都可以作为一个客户端独立调用您的函数,Lambda 传递到您的函数的每个事件仅具有一个触发器的数据。

您可以使用 Lambda 控制台创建函数的触发器。您也可以使用 Amazon Serverless Application Model(Amazon SAM)中的 Events 属性将其他服务配置为调用您的函数。要了解更多信息,请参阅《Amazon Serverless Application Model 开发人员指南》中的 AWS::Serverless::Function

要使用 Lambda 控制台创建触发器
  1. 打开 Lamba 控制台的函数页面

  2. 选择要为其创建触发器的函数。

  3. 函数概述窗格中,选择添加触发器

  4. 选择要调用函数的 Amazon 服务。

  5. 填写触发器配置窗格中的选项,然后选择添加

    根据您选择调用函数的 Amazon Web Service,触发器配置选项会有所不同。

有关可使用触发器调用您的 Lambda 函数的 Amazon 服务的完整列表,以及有关为不同服务配置触发器的更多信息,请参阅将 Lambda 与其他服务一起使用

从流或队列中调用 Lambda 函数

要使您的 Lambda 函数能够处理流或队列中的项目,例如 Amazon Kinesis 流或 Amazon Simple Queue Service(Amazon SQS)队列中的项目,您需要创建事件源映射。事件源映射是 Lambda 中的一种资源,它从流或队列中读取项目并创建包含多批项目的事件,以发送到您的 Lambda 函数。您的函数处理的每个事件可以包含数百个或数千个项。

您可以使用 Lambda 控制台、Amazon CLI、Lambda API 或 Amazon 开发工具包,为您的 Lambda 函数创建事件源映射。您也可以使用 Amazon SAM 或 Amazon CloudFormation 添加事件源映射。要在 Lambda 控制台中创建事件源映射,请按照说明在 从另一个 Amazon Web Service 调用 Lambda 函数 中创建一个触发器,然后选择支持使用事件源映射作为源的 Amazon 服务之一。

要使用 Amazon CLI、Lambda API 或 Amazon 开发工具包创建事件源映射,并查看可以与事件源映射一起使用的 Amazon 服务的列表,请参阅 Lambda 事件源映射。有关使用 Amazon SAM 中的 Events 属性创建事件源映射的更多信息,请参阅《Amazon Serverless Application Model 开发人员指南》中的 AWS::Serverless::Function

错误和重试

根据调用函数的方式,扩展行为和可能发生的错误类型会有所不同。同步调用函数时,您会在响应中收到错误并且可以重试。异步调用函数时,可使用事件源映射或配置另一个服务来调用您的函数,而重试要求以及您的函数扩展处理大量事件的方式各不相同。有关更多信息,请参阅 Amazon Lambda 中的错误处理和自动重试