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 ロググループに実行ログを送信する配信を作成します。
-
配信ソースを作成する
REST API を配信ソースとして登録します。
aws logs put-delivery-source \ --namemy-apigw-source\ --log-type EXECUTION_LOGS \ --resource-arn arn:aws:apigateway:{region}:{account-id}:/restapis/{rest-api-id}/stages/{stage-name} -
配信先を作成する
ロググループを配信先として登録します。
aws logs put-delivery-destination \ --namemy-log-destination\ --delivery-destination-configuration "destinationResourceArn=arn:aws:logs:{region}:{account-id}:log-group:{log-group-name}" -
配信を作成する
ソースを送信先にリンクします。
aws logs create-delivery \ --delivery-source-namemy-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 ステージの ARNevent_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 コンソール)
ステージの詳細ページの [ログとトレース] セクションからログ配信を作成できます。
https://console.aws.amazon.com/apigateway
で API Gateway コンソールにサインインします。 -
REST API を選択し、[ステージ] を選択します。
-
ステージを選択します。
-
[ログとトレース] セクションの [ログの配信先] で、[宛先を追加] を選択します。
-
送信先タイプ (CloudWatch Logs、Amazon S3、または Firehose) を選択し、送信先リソースを指定します。
-
[保存] を選択します。
重要
配信先を追加する前に、ステージで実行ログを有効にする必要があります。ログ記録が [オフ] に設定されている場合、配信設定はログを生成しません。
注記
クロスアカウント配信先を設定するには、AWS CLI を使用します。送信元アカウントで配信を作成する前に、送信先アカウントに配信先ポリシーを作成する必要があります。詳細については、「Amazon CloudWatch Logs ユーザーガイド」の「アカウント間の配信の例」を参照してください。