【发布时间】:2022-10-19 13:48:03
【问题描述】:
我正在尝试通过 API Gateway 将 Authorization 标头传递到 Lambda 函数中。我可以在网关日志中看到密钥。但是,即使在我使用标准脚本(见下文)转换输入之后,授权头仍然无法进入 Lambda 函数。
关于我所缺少的任何建议?
API 日志摘录
Endpoint request headers:
{
X-Amz-Date=20220419T143450Z,
x-amzn-apigateway-api-id=?????????,
Accept=application/x-www-form-urlencoded,
User-Agent=AmazonAPIGateway_hhompg4,
Host=lambda.us-east-1.amazonaws.com,
X-Amz-Content-Sha256=??????????????????????????????????????????????????,
X-Amzn-Trace-Id=Root=1-????????-???????????????????,
x-amzn-lambda-integration-tag=abcd-4e32-1234-???????????????, Authorization=*********************************************************************************************************************************************************************************************************************************************************************************************************************************************70cc,
X-Amz-Source-Arn=arn:aws:execute-api:us-east-1:-----------------:asfd/test/POST/,
X-Amz-Security-Token=---------------------------------------// [TRUNCATED]
方法执行 / - POST - 集成请求转换脚本:
{
"method": "$context.httpMethod",
"body" : $input.json('$'),
"headers": {
#foreach($param in $input.params().header.keySet())
"$param": "$util.escapeJavaScript($input.params().header.get($param))"
#if($foreach.hasNext),#end
#end
}
}
到达 lambda 函数的事件键:
2022-04-19T14:29:34.457Z INFO Object.keys(event) [
'resource',
'path',
'httpMethod',
'headers',
'multiValueHeaders',
'queryStringParameters',
'multiValueQueryStringParameters',
'pathParameters',
'stageVariables',
'requestContext',
'body',
'isBase64Encoded'
]
Object.keys(event.headers)
[
'accept',
'accept-encoding',
'accept-language',
'cache-control',
'content-type',
'Host',
'origin',
'referer',
'sec-ch-ua',
'sec-ch-ua-mobile',
'sec-ch-ua-platform',
'sec-fetch-dest',
'sec-fetch-mode',
'sec-fetch-site',
'sec-fetch-user',
'upgrade-insecure-requests',
'User-Agent',
'X-Amzn-Trace-Id',
'X-Forwarded-For',
'X-Forwarded-Port',
'X-Forwarded-Proto'
]
【问题讨论】:
-
内容类型是:“application/x-www-form-urlencoded”而不是“application/json”。很酷,脚本现在正在运行。但是对于标头,我仍然没有将 Authorization 标头放入 Lambda。
-
``` INFO Object.keys(event) [ 'method', 'body', 'headers' ] ``` ``` INFO Object.keys(event.headers) [ 'accept', 'accept-encoding', '接受语言','缓存控制','内容类型','主机','来源','引用者','sec-ch-ua','sec-ch-ua-mobile','sec- ch-ua-platform'、'sec-fetch-dest'、'sec-fetch-mode'、'sec-fetch-site'、'sec-fetch-user'、'upgrade-insecure-requests'、'User-代理','X-Amzn-Trace-Id','X-Forwarded-For','X-Forwarded-Port','X-Forwarded-Proto']```
标签: aws-lambda aws-api-gateway