メニュー
Amazon Athena
ユーザーガイド

Logging Amazon Athena API Calls with AWS CloudTrail

Athena は、CloudTrail サービスと統合されます。CloudTrail は、すべての Athena API コールをキャプチャし、そのログファイルを指定した Amazon S3 バケットに配信するサービスです。

CloudTrail は、Athena コンソールまたはコードから Athena API オペレーションに対して実行された API コールをキャプチャします。CloudTrail によって収集された情報を使用して、リクエストの作成元のソース IP アドレス、リクエストの実行者、リクエストの実行日時など、Athena に対してどのようなリクエストが行われたかを判断することができます。

Athena を使用して CloudTrail のログファイルをクエリし、洞察を得ることもできます。詳細については、「CloudTrail SerDe」を参照してください。CloudTrail の詳細 (設定して有効にする方法など) については、AWS CloudTrail ユーザーガイドを参照してください。

CloudTrail 内の Athena 情報

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

Athena のすべてのアクションについては、CloudTrail でログに記録されます。アクションのリストは、Amazon Athena API リファレンスにあります。たとえば、StartQueryExecution アクションや GetQueryResults アクションを呼び出しと、CloudTrail のログファイルにエントリが生成されます。

各ログエントリには、誰がリクエストを生成したかに関する情報が含まれます。ログエントリのユーザー ID 情報は、次のことを確認するのに役立ちます。

  • リクエストが、ルートと IAM ユーザー認証情報のどちらを使用して送信されたか

  • リクエストが、ロールとフェデレーティッドユーザーのどちらの一時的なセキュリティ認証情報を使用して送信されたか

  • リクエストが、別の AWS サービスによって送信されたかどうか

詳細については、AWS CloudTrail ユーザーガイドの「CloudTrail userIdentity エレメント」を参照してください。

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

ログファイルの配信時に通知を受け取るには、新しいログファイルの配信時に Amazon SNS 通知が発行されるように CloudTrail を設定できます。詳細については、「CloudTrail 用の Amazon SNS 通知の構成」を参照してください。

また、複数の AWS リージョンと複数の AWS アカウントからの Athena ログファイルを 1 つの S3 バケットに集約することもできます。

詳細は、「Receiving CloudTrail Log Files from Multiple Regions」と「Receiving CloudTrail Log Files from Multiple Accounts」を参照してください。

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

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

次の例は、以下に関する CloudTrail のログエントリを示しています。

StartQueryExecution (成功)

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"EXAMPLE_PRINCIPAL_ID", "arn":"arn:aws:iam::123456789012:user/johndoe", "accountId":"123456789012", "accessKeyId":"EXAMPLE_KEY_ID", "userName":"johndoe" }, "eventTime":"2017-05-04T00:23:55Z", "eventSource":"athena.amazonaws.com", "eventName":"StartQueryExecution", "awsRegion":"us-east-1", "sourceIPAddress":"77.88.999.69", "userAgent":"aws-internal/3", "requestParameters":{ "clientRequestToken":"16bc6e70-f972-4260-b18a-db1b623cb35c", "resultConfiguration":{ "outputLocation":"s3://athena-johndoe-test/test/" }, "query":"Select 10" }, "responseElements":{ "queryExecutionId":"b621c254-74e0-48e3-9630-78ed857782f9" }, "requestID":"f5039b01-305f-11e7-b146-c3fc56a7dc7a", "eventID":"c97cf8c8-6112-467a-8777-53bb38f83fd5", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }

StartQueryExecution (失敗)

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"EXAMPLE_PRINCIPAL_ID", "arn":"arn:aws:iam::123456789012:user/johndoe", "accountId":"123456789012", "accessKeyId":"EXAMPLE_KEY_ID", "userName":"johndoe" }, "eventTime":"2017-05-04T00:21:57Z", "eventSource":"athena.amazonaws.com", "eventName":"StartQueryExecution", "awsRegion":"us-east-1", "sourceIPAddress":"77.88.999.69", "userAgent":"aws-internal/3", "errorCode":"InvalidRequestException", "errorMessage":"Invalid result configuration. Should specify either output location or result configuration", "requestParameters":{ "clientRequestToken":"ca0e965f-d6d8-4277-8257-814a57f57446", "query":"Select 10" }, "responseElements":null, "requestID":"aefbc057-305f-11e7-9f39-bbc56d5d161e", "eventID":"6e1fc69b-d076-477e-8dec-024ee51488c4", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" }

CreateNamedQuery

{ "eventVersion":"1.05", "userIdentity":{ "type":"IAMUser", "principalId":"EXAMPLE_PRINCIPAL_ID", "arn":"arn:aws:iam::123456789012:user/johndoe", "accountId":"123456789012", "accessKeyId":"EXAMPLE_KEY_ID", "userName":"johndoe" }, "eventTime":"2017-05-16T22:00:58Z", "eventSource":"athena.amazonaws.com", "eventName":"CreateNamedQuery", "awsRegion":"us-west-2", "sourceIPAddress":"77.88.999.69", "userAgent":"aws-cli/1.11.85 Python/2.7.10 Darwin/16.6.0 botocore/1.5.48", "requestParameters":{ "name":"johndoetest", "queryString":"select 10", "database":"default", "clientRequestToken":"fc1ad880-69ee-4df0-bb0f-1770d9a539b1" }, "responseElements":{ "namedQueryId":"cdd0fe29-4787-4263-9188-a9c8db29f2d6" }, "requestID":"2487dd96-3a83-11e7-8f67-c9de5ac76512", "eventID":"15e3d3b5-6c3b-4c7c-bc0b-36a8dd95227b", "eventType":"AwsApiCall", "recipientAccountId":"123456789012" },