【发布时间】:2016-11-14 02:41:40
【问题描述】:
为什么目前没有办法通过网关 API 以异步模式执行 AWS Lambda,而不涉及仅用于调用 invoke() 方法的中间 Lambda?
即使我像这样添加集成:
r = client.put_integration(
restApiId=rest_api_id,
resourceId=resource_id,
httpMethod='POST',
type='AWS',
integrationHttpMethod='POST',
uri=uri,
requestParameters={
'integration.request.header.X-Amz-Invocation-Type': "'Event'",
'integration.request.header.Invocation-Type': "'Event'"
}
)
它仍然同步执行... 是否有一些平台限制?
【问题讨论】:
-
来自文档:docs.aws.amazon.com/apigateway/latest/developerguide/…“如果您的 API 对 Lambda 函数进行异步调用,您必须使用 AWS Service Proxy 集成类型”。您在使用 Service Proxy 集成吗?
-
你的目标是响应请求然后继续工作吗?如果是这样,那么是的,您需要从处理程序内部调用一个单独的 lambda 函数。
-
@idbehold 我知道这样的解决方案,而且效果很好,但我不想使用额外的函数调用。 @MarkB 这里没有像
AWS Service Proxy这样的类型被定义为有效类型:boto3.readthedocs.io/en/latest/reference/services/… BTW,看来我现在设法以异步模式启动 Lambda 函数执行。它只是工作,没有任何变化。不确定,是什么导致它以前不能以同样的方式工作。
标签: amazon-web-services aws-lambda aws-api-gateway