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

CloudTrail SerDe

Amazon CloudTrail 是一个为亚马逊云科技账号记录 Amazon API 调用和事件的服务。CloudTrail 生成加密日志并将其存储在 Amazon S3 中。您可以使用 Athena 通过指定日志文件的 LOCATION 直接从 Amazon S3 查询这些日志。

要在 Athena 中查询 CloudTrail 日志,请通过日志创建表,并使用 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

示例

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

在本示例中,字段 requestParametersresponseElementsadditionalEventData 其实是 JSON 中的一种 STRUCT,但是 CREATE TABLE 语句将它们指定为 STRING,因此可以在其上使用 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';

有关更多信息,请参阅查询 Amazon CloudTrail 日志