amazon-web-services - 如何使用 AWS ApiGateway HttpApi 调用 lambda 异步
问题描述
我正在使用 AWS Api Gateway 的新 HTTP Api(2019 年 12 月推出的 API)。
我曾经使用 REST Api,它允许您通过添加 X-Amz-Invocation-Type:Event 标头来异步触发 lambda 函数。
新的 HTTP Api 不允许您指定该标头,如何异步调用 lambda 函数?
提前致谢
解决方案
仅当集成为非代理时,您才能通过 API Gateway 异步调用 Lambda 函数。默认情况下,HTTP API 仅支持Lambda 和 HTTP 端点的代理集成,因此无法X-Amz-Invocation-Type
在 API Gateway 集成配置中设置标头。
为了通过 HTTP API 异步调用 Lambda,您可以使用两个 Lambda 函数,其中一个充当实际函数的代理。
HTTP API -->同步调用 Lambda1 --> 异步调用 Lambda2
下面是 Lambda1 异步调用 Lambda2 的示例 NodeJS 代码片段 -
const params = {
FunctionName: 'FUNCTION_NAME',
InvocationType: 'Event',
Payload: JSON.parse(event.body) // this is the event coming from API Gateway to Lambda1
};
await lambda.invoke(params).promise(); // await here is only going to wait for the HTTP request to be successful. Once Lambda2 is invoked, it will return immediately
推荐阅读
- c# - C# - 即使在输入正确的主机名和端口后,获取 Socket Exception 连接尝试也失败
- java - 在java中使用流和过滤器删除用户输入的单词
- regex - 使用 REEXTRACT 提取 Google Sheet ID
- python - BERT 编码层在评估期间为所有输入产生相同的输出 (PyTorch)
- android - Android:小部件只能在重新安装应用程序后使用
- ruby-on-rails - 尝试在 Rails 中登录时如何修复 NoMethodError
- xml - 从 XML 中删除 XML 定义
- python - 在 django 邮件中附加 queryset-to-csv 文件
- swift - 使用 LibTorch 依赖构建 Swift macOS 应用程序时遇到问题
- c# - 目标参数计数异常:C#