![](/img/trans.png)
[英]How to access HTTP headers for request to AWS API Gateway using Lambda?
[英]How can I see the full HTTP request (headers, method, body) in my AWS REST API access logs?
我在 AWS API 網關中設置了一個 API 端點。 我能夠為它設置訪問日志(我創建了一個角色,分配了它,等等)。 現在我希望能夠在這些日志中看到完整的傳入 HTTP 請求 - 方法、標頭和正文。 我怎樣才能做到這一點?
在 API 網關的Stages > Logs/tracing
中,有一個標記為“日志變量列表”的鏈接鏈接到日志格式的文檔,但該文檔要么已過時,與其鏈接到的內容無關,要么只是令人困惑,因為該建議似乎不起作用。 他們包括這個片段(相對較少的上下文或解釋究竟用它做什么):
#set($allParams = $input.params())
{
"params" : {
#foreach($type in $allParams.keySet())
#set($params = $allParams.get($type))
"$type" : {
#foreach($paramName in $params.keySet())
"$paramName" : "$util.escapeJavaScript($params.get($paramName))"
#if($foreach.hasNext),#end
#end
}
#if($foreach.hasNext),#end
#end
}
}
這似乎完全符合我的要求,但如果我將其復制粘貼到 API 網關的文本框中:
它不起作用。 當我發送一個 CURL 請求並查看日志時,我只看到我寫的文本逐字復制:
我認為您使用了錯誤的模板,因為上面的模板是$input Variable template 。
CSV
Logs 支持CLF
、 JSON
和XML
。 如需更多參考,您必須了解 - https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html 。
這是 JSON 格式示例:
{ "requestId":"$context.requestId", \
"extendedRequestId":"$context.extendedRequestId", \
"ip": "$context.identity.sourceIp", \
"caller":"$context.identity.caller", \
"user":"$context.identity.user", \
"requestTime":"$context.requestTime", \
"httpMethod":"$context.httpMethod", \
"resourcePath":"$context.resourcePath", \
"status":"$context.status", \
"protocol":"$context.protocol", \
"responseLength":"$context.responseLength" \
}
要了解上述每個字段,您必須仔細閱讀下表 - https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable -參考。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.