如何从我的 Amazon API Gateway API 异步调用 Lambda 函数?

1 分钟阅读
0

我想为我的 Amazon API Gateway API 异步调用 AWS Lambda 函数,而不是执行同步调用。

解决方案

REST API

在 Lambda 非代理集成中,默认情况下同步调用后端 Lambda 函数。可以将 'Event' 指定为 Lambda 调用类型,将 Lambda 函数配置为异步调用 Lambda 非代理集成。

1.    打开 API Gateway 控制台,选择 APIs,然后选择您的 REST API。

2.    在 Resources(资源)中,选择GET,然后选择 Integration Request(集成请求)。

3.    对于 Integration type(集成类型),选择 Lambda Function(Lambda 函数)。

4.    展开 HTTP Headers(HTTP 标头),然后选择 Add header(添加标头)。

5.    对于 Name(名称),输入 X-Amz-Invocation-Type

6.    对于 Mapped from(映射来源),输入 'Event'

7.    重新部署 REST API

要使用异步或同步选项调用 Lambda 函数,请添加 InvocationType 标头。

1.    打开 API Gateway 控制台,选择 APIs,然后选择您的 REST API。

2.    在 Resources(资源)中,选择GET,然后选择 Method Request(方法请求)。

3.    在 Request Validator(请求验证器)中,选择编辑图标和下拉列表,然后选择 Validate query string parameters and headers(验证查询字符串参数和标头)。

4.    选择更新图标以保存更改。

5.    展开 HTTP Headers(HTTP 标头),然后选择 Add header(添加标头)。

6.    对于 Name(名称),输入 InvocationType,然后选择 Required(必填)。

7.    在 Integration Request(集成请求)中,展开 HTTP Headers(HTTP 标头),然后选择 Add header(添加标头)。

8.    对于 Name(名称),输入 X-Amz-Invocation-Type

9.     对于Mapped from(映射来源),输入 method.request.header.InvocationType

10.    重新部署 REST API

客户端可以在异步调用的 API 请求中包含 InvocationType: Event 标头,或者为同步调用包含 InvocationType: RequestResponse 标头。

有关更多信息,请参阅 设置后端 Lambda 函数的异步调用

HTTP API

HTTP API 仅支持 Lambda 的代理集成。不能在 HTTP API 的 API Gateway 集成中设置 X-Amz-Invocation-Type 标头。您可以使用两个 Lambda 函数,其中一个充当代理。

示例配置:

HTTP API --> Invoke Lambda1 synchronously --> Invoke Lambda2 asynchronously

AWS 官方
AWS 官方已更新 1 年前