我想为我的 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