はじめに
この記事は、下記について書いた記事となります。
- 対象読者:初めてAPIGWのログ設定をする人 / 公式ドキュメントを探す時間を短縮したい人
- 記事内容:公式ドキュメントを元にAPIGWのログ取得 (実行ログ•アクセスログ) を有効化 / 無効化する方法を記載 (取得したログは、CloudWatch Logs ロググループへ送信する方式)
実際にAPIGWのログ設定を実施してみた内容となります。
この記事がどなたかのご参考となれば幸いです。
APIGWのログ:実行ログ/アクセスログ
API Gateway での CloudWatch によるログの形式
CloudWatch による API のログには、実行ログとアクセスログの 2 種類があります。実行ログでは、API Gateway によって CloudWatch Logs が管理されます。このプロセスには、ロググループとログストリームの作成、および呼び出し元のリクエストとレスポンスのログストリームへのレポートが含まれます。
- 実行ログ (有効化時)
:自動的に作成されるAPI-Gateway-Execution-Logs_{rest-api-id}/{stage_name}形式のロググループに送信される - アクセスログ (有効化時)
:任意に作成したロググループを指定、そちらに送信される
ログ取得:有効化
- ログ出力用 IAM ロールが設定されているか確認 (※未設定であれば設定を実施)

- APIGWのメインナビゲーションペイン > API > 対象のAPI を選択
- APIGWのメインナビゲーションペイン > ステージ > ログとトレース > 編集 からログの設定画面へ遷移
![]()

- 実行ログ有効化:ログ記録レベル – 今回は
エラーと情報ログを選択

- 【補足】実行ログのログ記録レベルは以下の種類がある
API Gateway での CloudWatch による REST API のログの設定 – API Gateway コンソールを使用した CloudWatch による API のログの設定
・オフ — この段階ではログ記録はオンになっていません。
・エラーのみ — ログ記録はエラーに対してのみ有効になっています。
・エラーと情報ログ — ログ記録はすべてのイベントに対して有効になっています。
・リクエストとレスポンスの完全なログ — 詳細なログ記録がすべてのイベントに対して有効になっています。このログは API のトラブルシューティングに役立ちますが、機密データが記録される可能性があります。注記
本稼働用 API には、[リクエストとレスポンスの完全なログ] を有効にしないことをお勧めします。
- アクセスログ有効化
:カスタムのアクセスログ – 有効化ボタンをオン
:アクセスログの送信先 ARN – 任意に作成したロググループのARNを入力
:ログの形式 – 今回は下記にあるテンプレート例を入力 (※一行で入力する必要あり)

アクセスログの作成では、API デベロッパーとして、API にアクセスしたユーザーと、呼び出し元が API にアクセスした方法を記録します。独自のロググループを作成したり、既存のロググループを選択したりすることができます。これらは、API Gateway で管理することができます。アクセスの詳細を指定するには、$context 変数、ログ形式、ロググループの送信先を選択します。
アクセスログには少なくとも
$context.requestIdまたは$context.extendedRequestIdが含まれている必要があります。ベストプラクティスとして、$context.requestIdと$context.extendedRequestIdをログ形式に含めます。
API Gateway マッピングテンプレートとアクセスのログ記録の変数リファレンス – $context 変数テンプレートの例
{
"stage" : "$context.stage",
"request_id" : "$context.requestId",
"api_id" : "$context.apiId",
"resource_path" : "$context.resourcePath",
"resource_id" : "$context.resourceId",
"http_method" : "$context.httpMethod",
"source_ip" : "$context.identity.sourceIp",
"user-agent" : "$context.identity.userAgent",
"account_id" : "$context.identity.accountId",
"api_key" : "$context.identity.apiKey",
"caller" : "$context.identity.caller",
"user" : "$context.identity.user",
"user_arn" : "$context.identity.userArn"
}
(一行形式)
{ "stage":"$context.stage", "request_id":"$context.requestId", "api_id":"$context.apiId", "resource_path":"$context.resourcePath", "resource_id":"$context.resourceId", "http_method":"$context.httpMethod", "source_ip":"$context.identity.sourceIp", "user-agent":"$context.identity.userAgent", "account_id":"$context.identity.accountId", "api_key":"$context.identity.apiKey", "caller":"$context.identity.caller", "user":"$context.identity.user", "user_arn":"$context.identity.userArn" }
- 保存を押下
- 設定確認

ログ取得:無効化
- 現状設定 確認

- APIGWのメインナビゲーションペイン > API > 対象のAPI を選択
- APIGWのメインナビゲーションペイン > ステージ > ログとトレース > 編集 からログの設定画面へ遷移

- 実行ログ無効化:ログ記録レベル –
オフを選択

- アクセスログ無効化:カスタムのアクセスログ – 有効化ボタンをオフ

- 保存を押下
- 設定確認
![]()
(内容としては以上となります。)