Amazon Athena
ユーザーガイド

CloudTrail SerDe

AWS CloudTrail は、AWS アカウントの AWS API コールとイベントを記録するサービスです。CloudTrail は暗号化されたログを生成して Amazon S3 に保存します。Athena では、保存先の Amazon S3 を LOCATION で指定し、そこでログを直接クエリできます。

Athena で CloudTrail ログをクエリするには、ログからテーブルを作成し、CloudTrail SerDe を使用してログデータを逆シリアル化します。

CloudTrail SerDe の使用に加えて、別の SerDe を使用したり、JSON からデータを抽出したりすることがインスタンスで必要になる場合があります。CloudTrail ログでは、特定のフィールドの STRING 値が、サービスに応じて変数のデータ形式になる場合があります。その結果、CloudTrail SerDe は想定どおりにデータを逆シリアル化できなくなります。以下のフィールドをクエリするには、データのパターンを識別して OpenX JSON SerDe など、別の SerDe を使用します。また、これらのフィールドからデータを取得するには、JSON_EXTRACT 関数を使用します。詳細については、「JSON からのデータの抽出」を参照してください。

  • requestParameters

  • responseElements

  • additionalEventData

  • serviceEventDetails

SerDe 名

CloudTrail SerDe

ライブラリ名

com.amazon.emr.hive.serde.CloudTrailSerde

次の例では、架空のログファイルのセットに対して CloudTrail SerDe を使用し、このログを基にしてテーブルを作成します。

次の例には、JSON で使用する STRUCT データ型の一部として requestParametersresponseElements、および additionalEventData の各フィールドが含まれています。これらのフィールドからデータを取得するには、JSON_EXTRACT 関数を使用します。詳細については、「JSON からのデータの抽出」を参照してください。

CREATE EXTERNAL TABLE cloudtrail_logs ( eventversion STRING, userIdentity STRUCT< type:STRING, principalid:STRING, arn:STRING, accountid:STRING, invokedby:STRING, accesskeyid:STRING, userName:STRING, sessioncontext:STRUCT< attributes:STRUCT< mfaauthenticated:STRING, creationdate:STRING>, sessionIssuer:STRUCT< type:STRING, principalId:STRING, arn:STRING, accountId:STRING, userName:STRING>>>, eventTime STRING, eventSource STRING, eventName STRING, awsRegion STRING, sourceIpAddress STRING, userAgent STRING, errorCode STRING, errorMessage STRING, requestParameters STRING, responseElements STRING, additionalEventData STRING, requestId STRING, eventId STRING, resources ARRAY<STRUCT< ARN:STRING, accountId:STRING, type:STRING>>, eventType STRING, apiVersion STRING, readOnly STRING, recipientAccountId STRING, serviceEventDetails STRING, sharedEventID STRING, vpcEndpointId STRING ) ROW FORMAT SERDE 'com.amazon.emr.hive.serde.CloudTrailSerde' STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://cloudtrail_bucket_name/AWSLogs/Account_ID/';

次のクエリは、24 時間中に行われたログイン数を返します。

SELECT useridentity.username, sourceipaddress, eventtime, additionaleventdata FROM default.cloudtrail_logs WHERE eventname = 'ConsoleLogin' AND eventtime >= '2017-02-17T00:00:00Z' AND eventtime < '2017-02-18T00:00:00Z';

詳細については、「AWS CloudTrail ログのクエリ」を参照してください。

このページの内容: