API Gateway で HTTP API のログ記録を設定する
ログ記録を有効にして CloudWatch Logs にログを記録することができます。ログ変数を使用して、ログの内容をカスタマイズできます。
セキュリティ体制を向上させるには、HTTP API のすべてのステージのログを CloudWatch Logs に書き込むことをお勧めします。これは、さまざまなコンプライアンスフレームワークに準拠するために必要になる場合があります。詳細については、AWS Security Hub ユーザーガイドの「Amazon API Gateway のコントロール」を参照してください。
HTTP API のログ記録を有効にするには、以下を実行する必要があります。
ログ記録を有効にするために必要なアクセス許可がユーザーにあることを確認します。
CloudWatch Logs ロググループを作成します。
API のステージの CloudWatch Logs ロググループの ARN を指定します。
ログ記録を有効にするアクセス許可
API のログ記録を有効にするには、 ユーザーに次のアクセス許可が必要です。
例
ロググループを作成し、HTTP API のログ記録を有効にする
ロググループを作成し、AWS マネジメントコンソール または AWS CLI を使用してアクセスログ記録を有効化できます。
ログ形式の例
いくつかの一般的なアクセスログ形式の例は API Gateway コンソールで使用できます。それらの例を以下に示します。
-
CLF(Common Log Format): $context.identity.sourceIp - - [$context.requestTime] "$context.httpMethod $context.routeKey $context.protocol" $context.status $context.responseLength $context.requestId $context.extendedRequestId -
JSON:{ "requestId":"$context.requestId", "ip": "$context.identity.sourceIp", "requestTime":"$context.requestTime", "httpMethod":"$context.httpMethod","routeKey":"$context.routeKey", "status":"$context.status","protocol":"$context.protocol", "responseLength":"$context.responseLength", "extendedRequestId": "$context.extendedRequestId" } -
XML:<request id="$context.requestId"> <ip>$context.identity.sourceIp</ip> <requestTime>$context.requestTime</requestTime> <httpMethod>$context.httpMethod</httpMethod> <routeKey>$context.routeKey</routeKey> <status>$context.status</status> <protocol>$context.protocol</protocol> <responseLength>$context.responseLength</responseLength> <extendedRequestId>$context.extendedRequestId</extendedRequestId> </request> -
CSV(カンマ区切り値):$context.identity.sourceIp,$context.requestTime,$context.httpMethod,$context.routeKey,$context.protocol,$context.status,$context.responseLength,$context.requestId,$context.extendedRequestId