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 Management Console または 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