View a markdown version of this page

REST API 実行ログのログ配信を作成する - Amazon API Gateway

REST API 実行ログのログ配信を作成する

実行ログは、独自の CloudWatch Logs ロググループ、Amazon S3 バケット、または Firehose ストリームにルーティングできます。これを行うには、Amazon CloudWatch Logs 配信を作成します。これには、配信ソースの作成、配信先の作成、配信とのリンクの 3 つの手順が含まれます。

前提条件

ログ配信を作成する前に、以下のものが揃っていることを確認してください。

  • REST API ステージで実行ログ記録が有効になっていること。loggingLevel を ERROR または INFO に設定します。ログ記録が有効になっていない場合、配信ソースの作成は失敗します。

  • 送信先リソース: 独自の CloudWatch Logs のロググループ、Amazon S3 バケット、または Firehose ストリーム。

  • Amazon CloudWatch Logs 配信 API を呼び出すアクセス許可。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「AWS サービスからのログ記録を有効にする」を参照してください。

Amazon CloudWatch Logs 配信の API Gateway 固有の値

API Gateway 実行ログの配信を作成するときは、次の値を使用します。

リソースARN

arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name}

ログタイプ

EXECUTION_LOGS

ログ配信を作成する (AWS CLI)

次の例では、REST API から所有する CloudWatch Logs ロググループに実行ログを送信する配信を作成します。

  1. 配信ソースを作成する

    REST API を配信ソースとして登録します。

    aws logs put-delivery-source \ --name my-apigw-source \ --log-type EXECUTION_LOGS \ --resource-arn arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name}
  2. 配信先を作成する

    ロググループを配信先として登録します。

    aws logs put-delivery-destination \ --name my-log-destination \ --delivery-destination-configuration "destinationResourceArn=arn:aws:logs:{region}:{account-id}:log-group:{log-group-name}"
  3. 配信を作成する

    ソースを送信先にリンクします。

    aws logs create-delivery \ --delivery-source-name my-apigw-source \ --delivery-destination-arn arn:aws:logs:{region}:{account-id}:delivery-destination:my-log-destination

Amazon S3 または Firehose にログを送信するには、put-delivery-destination コマンドで適切なリソース ARN を指定します。Amazon CloudWatch Logs 配信の完全なワークフローの詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「AWS サービスからのログ記録を有効にする」を参照してください。

複数の配信先にログを送信するには、異なる配信先で同じ配信ソースを使用して追加の配信を作成します。

レコードフィールド

Amazon CloudWatch Logs 配信では、実行ログには送信先ごとにカスタマイズできる構造化フィールドが含まれます。以下のフィールドが利用できます。

  • resource_arn – API ステージの ARN

  • event_timestamp – ログイベントの時刻

  • api_id – REST API の識別子

  • stage – ステージ名

  • resource_path – リクエストのリソースパス

  • http_method – HTTP メソッド

  • payload – 実行ログの内容 (標準実行ログと同じ)

create-delivery の --record-fields パラメータと put-delivery-destination の --output-format パラメータを使用して、含めるフィールドと各送信先の出力形式を選択できます。

使用可能な出力形式は、送信先によって異なります。

  • CloudWatch Logs – json、plain

  • Amazon S3 – json、plain、w3c、parquet

  • Firehose – json、plain

標準実行ログ出力の一致

標準の実行ログ記録 (ペイロードのみ、追加フィールドなし) に一致する配信出力が必要な場合は、--output-format "plain" に put-delivery-destination を追加し、--record-fields "payload" --field-delimiter "" に create-delivery を追加します。

ログ配信の作成 (CloudFormation)

CloudFormation テンプレートのステージ ARN をアセンブルするときは、次のパターンを使用します。

DeliverySource: Type: AWS::Logs::DeliverySource Properties: Name: my-apigw-source LogType: EXECUTION_LOGS ResourceArn: !Sub "arn:${AWS::Partition}:apigateway:${AWS::Region}:${AWS::AccountId}:/restapis/${MyApi}/stages/${MyStageName}"

ログ配信を作成する (API Gateway コンソール)

ステージの詳細ページの [ログとトレース] セクションからログ配信を作成できます。

  1. https://console.aws.amazon.com/apigateway で API Gateway コンソールにサインインします。

  2. REST API を選択し、[ステージ] を選択します。

  3. ステージを選択します。

  4. [ログとトレース] セクションの [ログの配信先] で、[宛先を追加] を選択します。

  5. 送信先タイプ (CloudWatch Logs、Amazon S3、または Firehose) を選択し、送信先リソースを指定します。

  6. [保存] を選択します。

重要

配信先を追加する前に、ステージで実行ログを有効にする必要があります。ログ記録が [オフ] に設定されている場合、配信設定はログを生成しません。

注記

クロスアカウント配信先を設定するには、AWS CLI を使用します。送信元アカウントで配信を作成する前に、送信先アカウントに配信先ポリシーを作成する必要があります。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「アカウント間の配信の例」を参照してください。