API网关:AWS子域LAMBDA集成
我试图融入我的lambda函数,因为时间过久,与API网关必须运行异步。我相信我必须选择“AWS服务”并指定Lambda,而不是选择“Lambda”集成类型。 (例如,this和this似乎暗示)。API网关:AWS子域LAMBDA集成
但是,当我尝试将AWS子域设置为我的Lambda函数的ARN时,我收到消息“AWS ARN for integration必须包含路径或操作”。如果我将子域名设置为我的Lambda函数的名称,那么在尝试部署时,我会收到“AWS ARN for integration contains invalid path”。
什么是正确的AWS子域这种类型的集成?
请注意,我也可以采取this post的建议并设置Kinesis流,但对于我的简单用例来说这似乎过分。如果这是解决我的问题的正确方法,那么很乐意尝试。
编辑:包括屏幕截图
编辑:请参考下面的注释不完整的解决方案。
所以这是非常恼人成立,但这里有两种方法:
-
建立经常性的LAMBDA整合,然后添加在这里http://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html描述的InvocationType头。值应该是'Event'。
- 这很烦人,因为当您将Lambda函数作为Integration类型时,控制台不会让您添加标题。您必须使用SDK或CLI,或使用Swagger轻松添加标头。
-
将整件事为控制台的AWS集成(这是你的问题做什么),只是让你可以设置InvocationType头在控制台
- 离开子域空白
- “使用路径覆盖”并将其设置为
/2015-03-31/functions/<FunctionARN>/invocations
其中<FunctionARN>
是你的lambda函数 - HTTP方法的全部ARN是POST
- 添加静态头呃
X-Amz-Invocation-Type
与价值'Event'
谢谢!对于后代,我尝试了选项#2,它的工作。我没有尝试选项#1 –
我修正了标题名称,谢谢指出。 –
我不明白你在此背景下的短语 “AWS子域” 的使用。这个术语在控制台中使用吗?显示一个截图,也许? ARN格式似乎将是形式'阿尔恩:AWS:波长:{}区域:{帐户ID}:功能:{函数名称}/invocations',所有的事情不括在'{}'是文字字符串,如[在这里]所示(http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html)。 –
好的,我可以更清楚了!我会更新我的帖子以反映这一点。另外,对于后人:将AWS Subdomain设置为空白并将Path Override设置为Action:InvokeFunction允许我部署API,但尚未(尚未?)使其可用。 –
谢谢你的澄清。 –