使用手动分区为整个组织范围的跟踪创建表 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用手动分区为整个组织范围的跟踪创建表

要在 Athena 中为整个组织的 CloudTrail 日志文件创建表,请按照 使用手动分区在 Athena 中为 CloudTrail 日志创建表 中的步骤操作,但需要按照以下过程中的说明进行修改。

为整个组织的 CloudTrail 日志记录创建 Athena 表
  1. CREATE TABLE 语句中,修改 LOCATION 子句以包含组织 ID,如下例所示:

    LOCATION 's3://amzn-s3-demo-bucket/AWSLogs/organization_id/'
  2. 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/'
  3. ALTER TABLE 语句的 ADD PARTITION 子句包含账户 ID,如下例所示:

    ALTER TABLE table_name ADD PARTITION (account='111122223333', region='us-east-1', year='2022', month='08', day='08')
  4. 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