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

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

CloudTrail SerDe

AWS CloudTrail 是一项服务,它记录 AWS 账户的 AWS 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 数据类型的一部分而包括进来。要从这些字段中获取数据,请使用 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 日志