簡體   English   中英

如何在我的 AWS REST API 訪問日志中查看完整的 HTTP 請求(標頭、方法、正文)?

[英]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 支持CLFJSONXML 如需更多參考,您必須了解 - 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM