CloudTrail SerDe
AWS CloudTrail は、Amazon Web Services アカウントの AWS API コールとイベントを記録するサービスです。CloudTrail は、暗号化されたログを生成し、それらを Amazon S3 に保存します。ログの LOCATION
を指定することで、Athena を使用してこれらのログを Amazon S3 から直接クエリできます。
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 を使用して、それらに基づくテーブルを作成します。
この例では、フィールド requestParameters
、responseElements
、および additionalEventData
は実際には JSON の STRUCT
の一種ですが、CREATE TABLE
ステートメントでは、json_extract
関数を使用してデータを取得できるように、それらを STRING
として指定します。詳細については、「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 ログのクエリ」を参照してください。