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

API 管理の呼び出しを AWS CloudTrail を使用して Amazon API Gateway に記録する

AWS CloudTrail を使用して API Gateway REST API コールを AWS アカウントにキャプチャし、指定した Amazon S3 バケットにログファイルを配信できます。 これらの API 呼び出しの例には、API Gateway での新しい API、リソース、またはメソッドの作成方法が含まれます。CloudTrail は、API Gateway コンソールまたは API Gateway API から直接行われた API コールをキャプチャします。 CloudTrail によって収集された情報を使用して、API Gateway に対してどのようなリクエストが行われたかを判断することができます。リクエストの作成元のソース IP アドレス、リクエストの実行者、リクエストの実行日時などです。CloudTrail の詳細 (設定する方法や有効にする方法など) については、AWS CloudTrail User Guide を参照してください。

CloudTrail での API Gateway 情報

AWS アカウントで CloudTrail のログ記録を有効にすると、API Gateway アクションに対する API 呼び出しがログファイルに記録されます。API Gateway レコードは、他の AWS サービスレコードと一緒にログファイルに記録されます。CloudTrail は、期間とファイルサイズに基づいて、新しいファイルをいつ作成して書き込むかを決定します。

ログには、すべての API Gateway アクションが記録されます。これらのアクションについては、API Gateway REST API を参照してください。たとえば、API Gateway で新しい API、リソース、メソッドを作成する呼び出しは、CloudTrail ログファイルにエントリを生成します。

各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログのユーザー ID 情報により、リクエストが、ルートまたは IAM ユーザーの認証情報を使用して送信されたか、ロールまたはフェデレーションユーザーの一時的なセキュリティ認証情報を使用して送信されたか、あるいは別の AWS のサービスによって送信されたかを確認できます。詳細については、CloudTrail Event ReferenceuserIdentity フィールドを参照してください。

必要な場合はログファイルを自身の バケットに保管できますが、ログファイルを自動的にアーカイブまたは削除するように Amazon S3 ライフサイクルルールを定義することもできます。デフォルトでは Amazon S3 のサーバー側の暗号化 (SSE) を使用して、ログファイルが暗号化されます。

新しいログファイルが配信された場合にすぐにアクションを実行できるよう、CloudTrail が Amazon SNS 通知を発行するように選択できます。詳細については、「Amazon SNS 通知の構成」を参照してください。

また、複数の AWS リージョンと複数の AWS アカウントからの API Gateway ログファイルを 1 つの Amazon S3 バケットに集約することもできます。詳細については、「CloudTrail ログファイルの単一の Amazon S3 バケットへの集約」を参照してください。

API Gateway ログファイルエントリの概要

CloudTrail ログファイルには、複数の JSON 形式イベントで構成される 1 つ以上のログエントリが記録されます。ログエントリは任意の送信元からの単一のリクエストを表し、リクエストされたアクション、パラメータ、アクションの日時などに関する情報を含みます。ログエントリは、特定の順序になるように生成されるわけではありません。つまり、パブリック API 呼び出しの順序付けられたスタックトレースではありません。

以下の例は、API Gateway によるリソースアクションの取得を実現する CloudTrail ログエントリを示します。

Copy
{ Records: [ { eventVersion: "1.03", userIdentity: { type: "Root", principalId: "AKIAI44QH8DHBEXAMPLE", arn: "arn:aws:iam::123456789012:root", accountId: "123456789012", accessKeyId: "AKIAIOSFODNN7EXAMPLE", sessionContext: { attributes: { mfaAuthenticated: "false", creationDate: "2015-06-16T23:37:58Z" } } }, eventTime: "2015-06-17T00:47:28Z", eventSource: "apigateway.amazonaws.com", eventName: "GetResource", awsRegion: "us-east-1", sourceIPAddress: "203.0.113.11", userAgent: "example-user-agent-string", requestParameters: { restApiId: "3rbEXAMPLE", resourceId: "5tfEXAMPLE", template: false }, responseElements: null, requestID: "6d9c4bfc-148a-11e5-81b6-7577cEXAMPLE", eventID: "4d293154-a15b-4c33-9e0a-ff5eeEXAMPLE", readOnly: true, eventType: "AwsApiCall", recipientAccountId: "123456789012" }, ... additional entries ... ] }