手動パーティショニングを使用して組織全体の証跡用のテーブルを作成する
Athena で組織全体の CloudTrail ログファイル用のテーブルを作成するには、「Athena で手動パーティショニングを使用して CloudTrail ログ用のテーブルを作成する」(Athena で手動パーティショニングを使用して CloudTrail ログ用のテーブルを作成する) の手順に従います。ただし、次の手順に記載されている変更を加えてください。
組織全体の CloudTrail ログ用の Athena テーブルを作成するには
-
次の例のように、
CREATE TABLE
ステートメントで、組織 ID が含まれるようにLOCATION
句を変更します。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 のパーティションを手動で追加および維持するのは面倒である可能性があることに留意してください。このようなシナリオでは、Athena ではなく CloudTrail Lake の利用を検討してください。このようなシナリオにおいて CloudTrail Lake を利用することには、次の利点があります:
-
組織全体のログを自動的に集約する
-
パーティションまたは Athena テーブルの設定やメンテナンスが不要
-
クエリが CloudTrail コンソールで直接実行される
-
SQL 互換のクエリ言語を使用する
詳細については、「AWS CloudTrail ユーザーガイド」の「AWS CloudTrail Lake の使用」を参照してください。