我正在使用AWS Api Gateway.我使用API网关创建了资源和方法.
我创建了Lambda函数,用于生成json格式的签名URL,以通过CloudFront访问s3存储桶.
当我使用GET方法调用lambda函数时.我传递"channekID"作为查询字符串.我想发送X-API-Key自定义标头以进行授权.
我尝试了很多东西,但没有找到任何解决方案.如何在Lambda函数中发送自定义标头?并在访问Lambda中的标头值之后如何使用x-api-key进行授权?
您无法使用Lambda访问标头.但是你可以做的是在Api网关中创建一个映射模板,将标题值放在事件对象中.
标头应该位于$input.params(x)
可以在映射模板中使用的变量中.请参阅如何准确集成此文档的完整文档.
更新:在您的映射模板中(在api网关 - >您的端点 - >集成请求下),添加如下内容:
#set($inputRoot = $input.path('$')) { "apikey" : "$input.params('X-Api-Key')" }
现在你可以在lambda函数下访问api键了event.apikey
(我没有测试过这个,但我们在生产中使用类似的东西).请注意,您可以对所有标题变量以及正文中的变量执行此操作.