异步调用 Lambda 函数 - AWS Lambda

异步调用 Lambda 函数

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

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

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

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

要使用 AWS Command Line Interface(AWS CLI)或一种 AWS SDK 来异步调用 Lambda 函数,请将 InvocationType 参数设置为 Event。以下示例显示了调用函数的 AWS 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,则 AWS CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 AWS Command Line Interface 用户指南中的 AWS CLI 支持的全局命令行选项

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