如何在AWS Lambda中访问标头?

Vip*_*ngh 5 amazon-web-services node.js aws-lambda aws-api-gateway

我正在使用AWS Api Gateway.我使用API​​网关创建了资源和方法.

我创建了Lambda函数,用于生成json格式的签名URL,以通过CloudFront访问s3存储桶.

当我使用GET方法调用lambda函数时.我传递"channekID"作为查询字符串.我想发送X-API-Key自定义标头以进行授权.

我尝试了很多东西,但没有找到任何解决方案.如何在Lambda函数中发送自定义标头?并在访问Lambda中的标头值之后如何使用x-api-key进行授权?

Luc*_*iks 10

您无法使用Lambda访问标头.但是你可以做的是在Api网关中创建一个映射模板,将标题值放在事件对象中.

标头应该位于$input.params(x)可以在映射模板中使用的变量中.请参阅如何准确集成此文档完整文档.

更新:在您的映射模板中(在api网关 - >您的端点 - >集成请求下),添加如下内容:

#set($inputRoot = $input.path('$'))
{
  "apikey" : "$input.params('X-Api-Key')"
}
Run Code Online (Sandbox Code Playgroud)

现在你可以在lambda函数下访问api键了event.apikey(我没有测试过这个,但我们在生产中使用类似的东西).请注意,您可以对所有标题变量以及正文中的变量执行此操作.