CloudTrail SerDe - Amazon Athena
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CloudTrail SerDe

AWS CloudTrail 是一项服务,它记录 AWS 账户的 AWS API 调用和事件。CloudTrail 生成加密日志并将其存储在 Amazon S3 中。您可以使用 Athena 通过指定日志文件的 LOCATION 直接从 Amazon S3 查询这些日志。

要在 CloudTrail 中查询 Athena 日志,请从日志创建表,并使用 CloudTrail SerDe 反序列化日志数据。

除了使用 CloudTrail SerDe 之外,实例存在于您需要使用其他 SerDe 或从 JSON 中提取数据的位置。CloudTrail 日志中的某些字段是可能具有可变数据格式(这取决于服务)的 STRING 值。因此,CloudTrail SerDe 无法预先对其进行反序列化。要查询以下字段,请确定数据模式,然后使用其他 SerDe,例如 OpenX JSON - SerDe。或者,要将数据移出这些字段,请使用 JSON_EXTRACT 函数。有关更多信息,请参阅从 JSON 中提取数据

  • requestParameters

  • responseElements

  • additionalEventData

  • serviceEventDetails

SerDe名称

CloudTrail SerDe

库名称

com.amazon.emr.hive.serde.CloudTrailSerde

Examples

以下示例对一组虚构的日志使用 CloudTrail SerDe 以创建基于日志的表。

在本示例中,字段 requestParametersresponseElementsadditionalEventData 作为在 JSON 中使用的 STRUCT 数据类型的一部分而包括进来。要从这些字段中获取数据,请使用 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 日志