HTTP API アクセスログをカスタマイズする - Amazon API Gateway

HTTP API アクセスログをカスタマイズする

次の変数を使用して、HTTP API のアクセスログをカスタマイズできます。HTTP API のアクセスログの詳細については、「API Gateway で HTTP API のログ記録を設定する」を参照してください。

パラメータ 説明
$context.accountId

API 所有者の AWS アカウント ID。

$context.apiId

API Gateway が API に割り当てる識別子。

$context.authorizer.claims.property

メソッドの呼び出し元が正常に認証された後で JSON ウェブトークン (JWT) から返されるクレームのプロパティ ($context.authorizer.claims.username など)。詳細については、「API Gateway の JWT オーソライザーを使用して HTTP API へのアクセスを制御する」を参照してください。

注記

$context.authorizer.claims を呼び出すと NULL が返されます。

$context.authorizer.error オーソライザーから返されたエラーメッセージ。
$context.authorizer.principalId

Lambda オーソライザーから返されたプリンシパルユーザー ID。

$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

x-amz-request-id または x-amzn-requestId ヘッダーからの AWS エンドポイントのリクエスト ID。

$context.awsEndpointRequestId2

x-amz-id-2 ヘッダーからの AWS エンドポイントのリクエスト ID。

$context.customDomain.basePathMatched

受信リクエストが一致した API マッピングのパス。クライアントがカスタムドメイン名を使用して API にアクセスする場合に適用されます。たとえば、クライアントがリクエストを https://api.example.com/v1/orders/1234 に送信し、リクエストがパス v1/orders を持つ API マッピングと一致する場合 、値は v1/orders になります。詳細については、「API ステージを HTTP API のカスタムドメイン名にマッピングする」を参照してください。

$context.dataProcessed 処理されたデータの量 (バイト単位)。
$context.domainName

API の呼び出しに使用された完全ドメイン名。これは、受信 Host ヘッダーと同じである必要があります。

$context.domainPrefix

$context.domainName の 1 つ目のラベル。

$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 メソッドです。有効な値には、DELETEGETHEADOPTIONSPATCHPOST および PUT があります。

$context.identity.accountId

リクエストに関連付けられた AWS アカウント ID です。IAM 認証を使用するルートでサポートされています。

$context.identity.caller

リクエストに署名した発信者のプリンシパル ID。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 認証プロバイダーについては、「Amazon Cognito 開発者ガイド」の「フェデレーティッド ID の使用」を参照してください。

$context.identity.cognitoAuthenticationType

リクエストを行う発信者の Amazon Cognito 認証タイプ。リクエストが Amazon Cognito 認証情報で署名されている場合にのみ使用できます。有効な値は、認証されたアイデンティティauthenticatedおよび認証されていないアイデンティティunauthenticatedです。

$context.identity.cognitoIdentityId

リクエストを行う発信者の Amazon Cognito ID。リクエストが Amazon Cognito 認証情報で署名されている場合にのみ使用できます。

$context.identity.cognitoIdentityPoolId

リクエストを行う発信者の Amazon Cognito ID プール 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 リソースネーム (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 から返されるステータスコード。
$context.integration.latency 統合レイテンシー (ミリ秒)。$context.integrationLatency と同等です。
$context.integration.requestId AWS エンドポイントのリクエスト ID。$context.awsEndpointRequestId と同等です。
$context.integration.status 統合から返されたステータスコード。Lambda プロキシ統合では、これは Lambda 関数コードから返されたステータスコードです。
$context.integrationErrorMessage

統合エラーメッセージを含む文字列。

$context.integrationLatency 統合レイテンシー (ミリ秒)。
$context.integrationStatus Lambda プロキシ統合の場合、このパラメータはバックエンド Lambda 関数からではなく、AWS 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 エポック形式のリクエスト時間。
$context.responseLatency レスポンスレイテンシー (ミリ秒)。
$context.responseLength レスポンスペイロードの長さ (バイト単位)。
$context.routeKey

API リクエストのルートキー (例:/pets)。

$context.stage

API リクエストのデプロイステージ (betaprod など)。

$context.status メソッドレスポンスのステータス。