我正在尝试将我的 lambda 函数与 API 网关集成,该函数必须异步运行,因为它需要太长时间。我相信我必须选择“AWS 服务”并指定 Lambda,而不是选择“Lambda”集成类型。 (例如。this http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-method-settings-console.html and this http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html似乎暗示着这一点。)
但是,当我尝试将 AWS 子域设置为 Lambda 函数的 ARN 时,我收到消息“用于集成的 AWS ARN 必须包含路径或操作”。如果我将子域设置为 Lambda 函数的名称,则在尝试部署时会收到“用于集成的 AWS ARN 包含无效路径”。
对于这种类型的集成来说,正确的 AWS 子域是什么?
请注意,我也可以听取以下人士的建议这个帖子 https://stackoverflow.com/questions/37297339/aws-api-gateway-default-response-and-trigger-aws-lambda并设置 Kinesis 流,但这对于我的简单用例来说似乎过多。如果这是解决我的问题的正确方法,很高兴尝试。
编辑:包括屏幕截图
编辑:请参阅下面的评论以了解不完整的解决方案。
所以设置起来相当烦人,但这里有两种方法:
-
设置常规 Lambda 集成,然后添加此处描述的 InitationType 标头http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html。该值应为“事件”。
- 这很烦人,因为当您将 Lambda 函数作为集成类型时,控制台不允许您添加标头。您必须使用 SDK 或 CLI,或者使用 Swagger,以便轻松添加标头。
-
在控制台中将整个过程设置为 AWS 集成(这就是您在问题中所做的事情),这样您就可以在控制台中设置 InitationType 标头
- 将子域留空
- “使用路径覆盖”并将其设置为
/2015-03-31/functions/<FunctionARN>/invocations
where <FunctionARN>
是 lambda 函数的完整 ARN
- HTTP方法是POST
- 添加静态标头
X-Amz-Invocation-Type
有价值'Event'
http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)