自訂 HTTP API 存取日誌 - Amazon API Gateway

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

自訂 HTTP API 存取日誌

您可以使用下列變數來自訂 HTTP API 存取日誌。要進一步了解 HTTP API 的存取日誌,請參閱設定 HTTP API 的記錄功能

參數 描述
$context.accountId

API 擁有者的 AWS 帳戶識別碼。

$context.apiId

API Gateway 指派給您 API 的識別碼。

$context.authorizer.claims.property

方法呼叫者成功驗證後,從 JSON Web Token (JWT) 傳回的宣告屬性,例如$context.authorizer.claims.username。如需詳細資訊,請參閱 使用 JWT 授權方控制對 HTTP API 的存取權

注意

呼叫 $context.authorizer.claims 會傳回 null。

$context.authorizer.error 從授權方傳回的錯誤訊息。
$context.authorizer.principalId

Lambda 授權方傳回的主要使用者識別。

$context.authorizer.property

API Gateway Lambda 授權方函數所傳回 context 對應之指定索引鍵/值對的值。例如,如果授權方傳回下列 context 映射:

"context" : { "key": "value", "numKey": 1, "boolKey": true }

呼叫 $context.authorizer.key 會傳回 "value" 字串,呼叫 $context.authorizer.numKey 會傳回 1,而呼叫 $context.authorizer.boolKey 會傳回 true

$context.awsEndpointRequestId

AWS 端點來自x-amz-request-idx-amzn-requestId標頭的要求 ID。

$context.awsEndpointRequestId2

AWS 端點來自x-amz-id-2標頭的請求 ID。

$context.customDomain.basePathMatched

傳入請求相符的 API 映射路徑。適用於用戶端使用自訂網域名稱來存取 API 時。例如,如果用戶端向 https://api.example.com/v1/orders/1234 傳送請求,並且請求讓 API 映射與路徑 v1/orders 相符,則該值為 v1/orders。如需進一步了解,請參閱使用適用於 HTTP API 的 API 映射

$context.dataProcessed 處理的資料量 (以位元組為單位)。
$context.domainName

用來叫用 API 的完整網域名稱。這應該與傳入的 Host 標頭相同。

$context.domainPrefix

$context.domainName 的第一個標籤。

$context.error.message

包含 API Gateway 錯誤訊息的字串。

$context.error.messageString $context.error.message 的引用值,即 "$context.error.message"
$context.error.responseType

一種 GatewayResponse 的類型。如需詳細資訊,請參閱 使用 CloudWatch 指標來監控 WebSocket API 執行設定閘道回應以自訂錯誤回應

$context.extendedRequestId 等同於 $context.requestId
$context.httpMethod

使用的 HTTP 方法。有效值包含:DELETEGETHEADOPTIONSPATCHPOSTPUT

$context.identity.accountId

與請求相關聯的 AWS 帳戶 ID。支援使用 IAM 授權的路由。

$context.identity.caller

已簽署請求之發起人的主體識別符。支援使用 IAM 授權的路由。

$context.identity.cognitoAuthenticationProvider

提出請求的發起人所使用的 Amazon Cognito 身分驗證提供者清單 (以逗號分隔)。僅在使用 Amazon Cognito 登入資料簽署請求時才可使用。

例如,適用於 Amazon Cognito 使用者集區的身分,cognito-idp. region.amazonaws.com/user_pool_id,cognito-idp.region.amazonaws.com/user_pool_id:CognitoSignIn:token subject claim

如需詳細資訊,請參閱 Amazon Cognito 開發人員指南中的使用聯合身分

$context.identity.cognitoAuthenticationType

提出請求的發起人的 Amazon Cognito 身分驗證類型。僅在使用 Amazon Cognito 登入資料簽署請求時才可使用。可能的值包括用於已驗證身分的 authenticated 和未經驗證身分的 unauthenticated

$context.identity.cognitoIdentityId

提出請求的發起人的 Amazon Cognito 身分 ID。僅在使用 Amazon Cognito 登入資料簽署請求時才可使用。

$context.identity.cognitoIdentityPoolId

提出請求的發起人的 Amazon Cognito 身分集區 ID。僅在使用 Amazon Cognito 登入資料簽署請求時才可使用。

$context.identity.principalOrgId

AWS 組織 ID。支援使用 IAM 授權的路由。

$context.identity.clientCert.clientCertPem

用戶端在交互 TLS 驗證期間所呈現的 PEM 編碼用戶端憑證。當用戶端使用已啟用交互 TLS 的自訂網域名稱存取 API 時會顯示。

$context.identity.clientCert.subjectDN

用戶端提供之憑證主體的辨別名稱。當用戶端使用已啟用交互 TLS 的自訂網域名稱存取 API 時會顯示。

$context.identity.clientCert.issuerDN

用戶端提供之憑證發行者的辨別名稱。當用戶端使用已啟用交互 TLS 的自訂網域名稱存取 API 時會顯示。

$context.identity.clientCert.serialNumber

憑證的序號。當用戶端使用已啟用交互 TLS 的自訂網域名稱存取 API 時會顯示。

$context.identity.clientCert.validity.notBefore

憑證無效之前的日期。當用戶端使用已啟用交互 TLS 的自訂網域名稱存取 API 時會顯示。

$context.identity.clientCert.validity.notAfter

憑證無效之後的日期。當用戶端使用已啟用交互 TLS 的自訂網域名稱存取 API 時會顯示。

$context.identity.sourceIp

對 API Gateway 提出請求之即時 TCP 連線的來源 IP 地址。

$context.identity.user

將針對資源存取授權之使用者的主體識別符。支援使用 IAM 授權的路由。

$context.identity.userAgent

API 發起人的 User-Agent 標頭。

$context.identity.userArn

身分驗證之後識別之有效使用者的 Amazon Resource Name (ARN)。支援使用 IAM 授權的路由。如需更多詳細資訊,請參閱 https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html

$context.integration.error 從整合傳回的錯誤訊息。等同於 $context.integrationErrorMessage
$context.integration.integrationStatus 對於 Lambda 代理整合,狀態碼會從後端 Lambda 函數程式碼傳回 AWS Lambda,而不是從後端 Lambda 函數
$context.integration.latency 整合延遲 (以毫秒為單位)。等同於 $context.integrationLatency
$context.integration.requestId AWS 端點的要求識別碼。等同於 $context.awsEndpointRequestId
$context.integration.status 從整合傳回的狀態碼。對於 Lambda 代理整合而言,這是您的 Lambda 函數程式碼傳回的狀態碼。
$context.integrationErrorMessage

包含整合錯誤訊息的字串。

$context.integrationLatency 整合延遲 (以毫秒為單位)。
$context.integrationStatus 對於 Lambda 代理整合,此參數代表從後端 Lambda 函數傳回的狀態碼 AWS Lambda,而非從後端 Lambda 函數傳回。
$context.path 請求路徑。例如,/{stage}/root/child
$context.protocol 請求通訊協定,例如 HTTP/1.1
注意

API Gateway API 可以接受 HTTP/2 請求,但 API Gateway 會使用 HTTP/1.1 將請求傳送至後端整合。因此,即使用戶端傳送使用 HTTP/2 的請求,請求通訊協定也會記錄為 HTTP/1.1。

$context.requestId

API Gateway 指派給 API 請求的 ID。

$context.requestTime CLF 格式化請求時間 (dd/MMM/yyyy:HH:mm:ss +-hhmm)。
$context.requestTimeEpoch Epoch 格式化請求時間。
$context.responseLatency 回應延遲 (以毫秒為單位)。
$context.responseLength 回應承載長度 (以位元組為單位)。
$context.routeKey

API 請求的路由金鑰,例如 /pets

$context.stage

API 請求的部署階段 (例如,betaprod)。

$context.status 方法回應狀態。