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

Lambda 如何处理异步调用

多个 Amazon Web Services(如 Amazon Simple Storage Service(Amazon S3)和 Amazon Simple Notification Service(Amazon SNS)将异步调用函数以处理事件。您也可以使用 Amazon Command Line Interface(Amazon CLI)或一种 Amazon SDK 来异步调用 Lambda 函数。在异步调用函数时,您不会等待函数代码的响应。您将事件交给 Lambda,Lambda 处理其余部分。您可以配置 Lambda 处理错误的方式,并将调用记录发送到下游资源,例如 Amazon Simple Queue Service(Amazon SQS)或 Amazon EventBridge(EventBridge),以将应用程序的组件链接在一起。

下图显示了异步调用 Lambda 函数的客户端。Lambda 在将事件发送到函数之前对事件排队。

客户端异步调用函数。Lambda 在将事件发送到函数之前对事件排队。

对于异步调用,Lambda 将事件置于队列中并返回成功响应,而不返回其他信息。一个单独的进程会从队列中读取事件并将其发送到函数。

异步调用 Lambda 函数

要使用 Amazon Command Line Interface(Amazon CLI)或一种 Amazon SDK 来异步调用 Lambda 函数,请将调用类型参数设置为 Event。以下示例显示了调用函数的 Amazon CLI 命令。

aws lambda invoke \ --function-name my-function \ --invocation-type Event \ --cli-binary-format raw-in-base64-out \ --payload '{ "key": "value" }' response.json

您应看到以下输出:

{ "StatusCode": 202 }

如果使用 cli-binary-format 版本 2,则 Amazon CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 Amazon Command Line Interface 用户指南中的 Amazon CLI 支持的全局命令行选项

输出文件 (response.json) 不包含任何信息,但运行此命令时仍会创建该文件。如果 Lambda 无法将事件添加到队列,则命令输出中将显示错误消息。