メニュー
Amazon API Gateway
開発者ガイド

API Gateway の API ログ作成をセットアップする

リクエストの実行や API へのクライアントアクセスに関連する問題のデバッグに役立つ Amazon CloudWatch Logs を有効にして、API 呼び出しを追跡できます。有効にすると、API Gateway は CloudWatch で API 呼び出しのログを記録します。API ログ作成には実行ログ作成とアクセスログ作成の 2 つのタイプがあります。

実行ログ作成では、API Gateway は CloudWatch Logs を管理します。このプロセスには、ロググループとログストリームの作成、および呼び出し元のリクエストとレスポンスのログストリームへのレポートが含まれます。記録されたデータには、エラーまたは実行の追跡 (リクエストまたはレスポンスパラメータ値またはペイロードなど)、Lambda オーソライザー (以前のカスタムオーソライザー) が使用するデータ、API キーが必要かどうか、使用量プランが有効かどうかなどの情報が含まれます。

API をデプロイすると、API Gateway はそのロググループの下にロググループとログストリームを作成します。ロググループの名前は API-Gateway-Execution-Logs_{rest-api-id}/{stage_name} 形式に従います。各ロググループ内で、ログはログデータにさらに分割され、ログデータがレポートされるときに [Last Event Time] によって順序付けられます。

アクセスログの作成では、API 開発者として、API にアクセスしたユーザーと、呼び出し元が API にアクセスした方法を記録します。独自のロググループを作成したり、既存のロググループを選択したりすることができます。これらは、API Gateway で管理することができます。アクセスの詳細を指定するには、$context 変数を選択し、選択した形式で表示し、ロググループを宛先として選択します。各ログの一意性を維持するために、アクセスログ形式に $context.requestId を含める必要があります。

Common Log Format (CLF)、JSON、XML、CSV など、分析バックエンドでも採用されているログ形式を選択します。その後、フィードに直接アクセスログを入力して、メトリクスを計算してレンダリングすることができます。ログ形式を定義するには、ステージaccessLogSettings/destinationArn プロパティでロググループ ARN を設定します。[ARN] 列が表示用に選択されている場合は、CloudWatch コンソールでロググループ ARN を取得できます。アクセスログフォーマットを定義するには、ステージ上の accessLogSetting/format プロパティで選択したフォーマットを設定します。

一般的に使用されるアクセスログ形式の例は、API Gateway コンソールに表示され、以下のように一覧表示されます。

  • CLF (Common Log Format):

    $context.identity.sourceIp $context.identity.caller \ $context.identity.user [$context.requestTime] \ "$context.httpMethod $context.resourcePath $context.protocol" \ $context.status $context.responseLength $context.requestId

    行連結文字 (\) は視覚的な補助で、ログ形式で改行はできません。

  • JSON:

    { "requestId":"$context.requestId", \ "ip": "$context.identity.sourceIp", \ "caller":"$context.identity.caller", \ "user":"$context.identity.user", \ "requestTime":"$context.requestTime", \ "httpMethod":"$context.httpMethod", \ "resourcePath":"$context.resourcePath", \ "status":"$context.status", \ "protocol":"$context.protocol", \ "responseLength":"$context.responseLength" \ }

    行連結文字 (\) は視覚的な補助で、ログ形式で改行はできません。

  • XML:

    <request id="$context.requestId"> \ <ip>$context.identity.sourceIp</ip> \ <caller>$context.identity.caller</caller> \ <user>$context.identity.user</user> \ <requestTime>$context.requestTime</requestTime> \ <httpMethod>$context.httpMethod</httpMethod> \ <resourcePath>$context.resourcePath</resourcePath> \ <status>$context.status</status> \ <protocol>$context.protocol</protocol> \ <responseLength>$context.responseLength</responseLength> \ </request>

    行連結文字 (\) は視覚的な補助で、ログ形式で改行はできません。

  • CSV (カンマ区切り値):

    $context.identity.sourceIp,$context.identity.caller,\ $context.identity.user,$context.requestTime,$context.httpMethod,\ $context.resourcePath,$context.protocol,$context.status,\ $context.responseLength,$context.requestId

    行連結文字 (\) は視覚的な補助で、ログ形式で改行はできません。

アクセス許可

CloudWatch Logs を有効にするには、アカウントで API Gateway に CloudWatch のログを読み書きするための適切なアクセス許可を付与する必要があります。[AmazonAPIGatewayPushToCloudWatchLogs] 管理ポリシー ([arn:aws:iam::aws:policy/service-role/AmazonAPIGatewayPushToCloudWatchLogs] の ARN) はすべての必要なアクセス権限を持ちます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogGroups", "logs:DescribeLogStreams", "logs:PutLogEvents", "logs:GetLogEvents", "logs:FilterLogEvents" ], "Resource": "*" } ] }

これらのアクセス許可をアカウントに付与するには、apigateway.amazonaws.com を信頼できるエンティティとして使用して IAM ロールを作成し、前述のポリシーを IAM ロールに添付し、アカウントcloudWatchRoleArn プロパティに IAM ロール ARN を設定します。

API Gateway コンソールを使用して API ログ作成をセットアップする

API ログ作成を設定するには、API をステージにデプロイする必要があります。また、アカウントに適切な CloudWatch Logs ロール ARN を設定する必要があります。

  1. API Gateway コンソールにサインインします。

  2. プライマリナビゲーションパネルから [Settings] を選択します。適切な権限を持つ IAM ロールの ARN を [CloudWatch log role ARN] に入力します。これは一度行う必要があります。

  3. 次のいずれかを行ってください。

    1. 既存の API を選択し、ステージを選択します。

    2. API を作成し、ステージにデプロイします。

  4. [Stage Editor] で [Logs] を選択します。

  5. 実行ログ作成を有効にするには、[CloudWatch Settings] の下の [Enable CloudWatch Logs] を選択します。ドロップダウンメニューから [Error] または [Info] を選択します。必要に応じて、[Enable Detailed CloudWatch Metrics] を選択します。

  6. アクセスログの作成を有効にするには、[Custom Access Logging] の下の [Enable Access Logging] を選択します。次に、[CloudWatch Group] にロググループの ARN を入力します。[Log Format] にログの形式を入力します。[CLF]、[JSON]、[XML]、[CSV] を選択して、提供された例の 1 つをガイドとして使用できます。

  7. [Save Changes] を選択します。

注記

実行ログとアクセスログを互いに独立して有効にすることができます。

API Gateway が API にリクエストのログを作成する準備が整いました。ステージ設定、ログ、またはステージ変数を更新するときに API を再デプロイする必要はありません。