如何在 AWS Lambda 中访问 header?
How to Access header in AWS Lambda?
我正在使用 AWS Api 网关。
我使用 API 网关创建了资源和方法。
我创建了 Lambda 函数,用于生成 json 格式的已签名 URL 以通过 CloudFront 访问 s3 存储桶。
当我使用 GET 方法调用 lambda 函数时。我将 "channekID" 作为查询字符串传递。我也想发送 X-API-Key 自定义 header 以获得授权。
我尝试了很多东西,但没有找到任何解决方案。
如何在 Lambda 函数中发送自定义 header?
在 Lambda 中访问 header 值之后
如何授权使用 x-api-key ?
您无法使用 Lambda 访问 header。但是您可以做的是在 Api 网关中创建一个映射模板,在事件 object.
中放置一个 header 值
header 应该在可以在映射模板中使用的 $input.params(x)
变量中。请参阅 full documentation 如何准确地集成它。
更新:在您的映射模板中(在 api 网关下 -> 您的端点 -> 集成请求),添加如下内容:
#set($inputRoot = $input.path('$'))
{
"apikey" : "$input.params('X-Api-Key')"
}
现在您可以在 event.apikey
下的 lambda 函数中访问 api 键(我没有对此进行测试,但我们在生产中使用了类似的东西)。请注意,您可以对所有 header 变量以及 body.
中的变量执行此操作
Api 网关团队签到,Luc 的回答是正确的。您的 Lambda 函数上下文只能访问请求 body,因此您的客户端发送到 Api 网关的任何 headers 都必须映射到请求模板中。 Luc给的例子很好,也可以看看参考文档:
杰克
我正在使用 AWS Api 网关。 我使用 API 网关创建了资源和方法。
我创建了 Lambda 函数,用于生成 json 格式的已签名 URL 以通过 CloudFront 访问 s3 存储桶。
当我使用 GET 方法调用 lambda 函数时。我将 "channekID" 作为查询字符串传递。我也想发送 X-API-Key 自定义 header 以获得授权。
我尝试了很多东西,但没有找到任何解决方案。 如何在 Lambda 函数中发送自定义 header? 在 Lambda 中访问 header 值之后 如何授权使用 x-api-key ?
您无法使用 Lambda 访问 header。但是您可以做的是在 Api 网关中创建一个映射模板,在事件 object.
中放置一个 header 值 header 应该在可以在映射模板中使用的 $input.params(x)
变量中。请参阅 full documentation 如何准确地集成它。
更新:在您的映射模板中(在 api 网关下 -> 您的端点 -> 集成请求),添加如下内容:
#set($inputRoot = $input.path('$'))
{
"apikey" : "$input.params('X-Api-Key')"
}
现在您可以在 event.apikey
下的 lambda 函数中访问 api 键(我没有对此进行测试,但我们在生产中使用了类似的东西)。请注意,您可以对所有 header 变量以及 body.
Api 网关团队签到,Luc 的回答是正确的。您的 Lambda 函数上下文只能访问请求 body,因此您的客户端发送到 Api 网关的任何 headers 都必须映射到请求模板中。 Luc给的例子很好,也可以看看参考文档:
杰克