如何在AWS Lambda中访问标题?

我正在使用AWS Api网关。 我已经使用API​​网关创build了资源和方法。

我已经创build了Lambda函数来生成json格式的签名URL,以通过CloudFront访问s3存储桶。

当我使用GET方法调用lambda函数时。 我通过“channekID”作为查询string。 我想发送X-API-Key自定义标题以及授权。

我已经尝试了很多东西,但没有find任何解决scheme。 如何在Lambda函数中发送自定义标头? 并在访问Lambda中的标题值之后如何授权使用x-api-key?

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

头文件应该位于可以在映射模板中使用的$input.params(x)variables中。 请参阅完整的文档 ,了解如何正确整合这一点。

更新:在你的映射模板(在api网关 – >你的端点 – >集成请求下),添加如下所示:

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

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

Api Gateway团队检查,Luc的答案是正确的。 您的Lambda函数上下文只能访问请求主体,因此客户端发送到Api网关的任何头文件都必须映射到请求模板中。 Luc给出的例子是一个很好的例子,但也请查阅参考文档:

http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

插口