使用手动分区为整个组织范围的跟踪创建表
要在 Athena 中为整个组织的 CloudTrail 日志文件创建表,请按照 使用手动分区在 Athena 中为 CloudTrail 日志创建表 中的步骤操作,但需要按照以下过程中的说明进行修改。
为整个组织的 CloudTrail 日志记录创建 Athena 表
-
在
CREATE TABLE
语句中,修改LOCATION
子句以包含组织 ID,如下例所示:LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/
organization_id
/' -
在
PARTITIONED BY
子句中,为账户 ID 添加一个字符串条目,如下例所示:PARTITIONED BY (account string, region string, year string, month string, day string)
以下示例显示的是综合结果:
... PARTITIONED BY (account string, region string, year string, month string, day string) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS INPUTFORMAT 'com.amazon.emr.cloudtrail.CloudTrailInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/
organization_id
/Account_ID
/CloudTrail/' -
ALTER TABLE
语句的ADD PARTITION
子句包含账户 ID,如下例所示:ALTER TABLE table_name ADD PARTITION (account='
111122223333
', region='us-east-1', year='2022', month='08', day='08') -
ALTER TABLE
语句的LOCATION
子句包含组织 ID、账户 ID 以及您要添加的分区,如下例所示:LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/
organization_id
/Account_ID
/CloudTrail/us-east-1/2022/08/08/'以下示例
ALTER TABLE
语句显示的是综合结果:ALTER TABLE table_name ADD PARTITION (account='
111122223333
', region='us-east-1', year='2022', month='08', day='08') LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id
/111122223333
/CloudTrail/us-east-1/2022/08/08/'
请注意,在大型组织中,使用此方法为每个组织帐户 ID 手动添加和维护分区可能很麻烦。在这种情况下,请考虑使用 CloudTrail Lake 而不是 Athena。在这种情况下,CloudTrail Lake 具有以下优势:
-
自动聚合整个组织的日志
-
不需要设置或维护分区或 Athena 表
-
查询直接在 CloudTrail 控制台中运行
-
使用与 SQL 兼容的查询语言
有关更多信息,请参阅《Amazon CloudTrail 用户指南》中的使用 Amazon CloudTrail Lake。