如何将 AWS Lambda 设置为通过 HTTP/API 网关异步调用?
How can I set an AWS Lambda to be invoked asynchronously through HTTP/API Gateway?
我正在编写一个通过 HTTP 调用的 AWS Lambda(即 API 网关集成)。
我希望将 API 用作 GitHub webhook。当调用 webhook/lambda 时,我希望立即发送 HTTP 响应并继续执行 lambda(因为它可能需要一些时间)。
这类似于调用 lambda 时的 Event
invocation type:
- 事件:发射后忘记
- RequestResponse:等待响应
是否可以将该调用类型与 HTTP 集成一起使用?
注意:我正在使用 serverless.com 框架。
作为 @michael-sqlbot pointed out you can get this behavior by using the X-Amz-Invocation-Type:Event Header。获得此设置有点麻烦,链接的文档准确但有点过时(在我看来)。
- 路径覆盖需要:
/2015-03-31/functions/<ARN TO YOUR LAMBDA>/invocations
- 执行角色需要能够调用您的 lambda。
- 最初设置集成请求时,您无法添加 headers,因此您必须保存它,然后返回并添加 headers。从那里您可以通过将字符串
'Event'
放在 Mapped from
字段中来将 X-Amz-Invocation-Type 硬编码为 Event(如下图所示)
或者...您也可以通过将您的 lambda 连接到 API 网关(我们称之为 lambda A)使用 Event
调用类型。这样 A 就不会关心 B 的响应,并且可以 return 在几百毫秒内成功响应 API 网关(假设您没有做太多其他事情)。然后 Lambda B 可以继续 运行,无论需要多长时间(只要它在 5 分钟的 lambda 限制或您配置的超时内)。
我正在编写一个通过 HTTP 调用的 AWS Lambda(即 API 网关集成)。
我希望将 API 用作 GitHub webhook。当调用 webhook/lambda 时,我希望立即发送 HTTP 响应并继续执行 lambda(因为它可能需要一些时间)。
这类似于调用 lambda 时的 Event
invocation type:
- 事件:发射后忘记
- RequestResponse:等待响应
是否可以将该调用类型与 HTTP 集成一起使用?
注意:我正在使用 serverless.com 框架。
作为 @michael-sqlbot pointed out you can get this behavior by using the X-Amz-Invocation-Type:Event Header。获得此设置有点麻烦,链接的文档准确但有点过时(在我看来)。
- 路径覆盖需要:
/2015-03-31/functions/<ARN TO YOUR LAMBDA>/invocations
- 执行角色需要能够调用您的 lambda。
- 最初设置集成请求时,您无法添加 headers,因此您必须保存它,然后返回并添加 headers。从那里您可以通过将字符串
'Event'
放在Mapped from
字段中来将 X-Amz-Invocation-Type 硬编码为 Event(如下图所示)
或者...您也可以通过将您的 lambda 连接到 API 网关(我们称之为 lambda A)使用 Event
调用类型。这样 A 就不会关心 B 的响应,并且可以 return 在几百毫秒内成功响应 API 网关(假设您没有做太多其他事情)。然后 Lambda B 可以继续 运行,无论需要多长时间(只要它在 5 分钟的 lambda 限制或您配置的超时内)。