Amazon S3 TablesのメンテナンスイベントがCloudTrailで確認できるようになりました
はじめに
こんにちは、データ事業本部の小高です。
2025年10月22日、S3 Tablesのメンテナンス操作に関するCloudTrailイベントが追加されました。これにより、S3 Tablesが自動実行するcompaction(ファイル圧縮)やsnapshot expiration(スナップショット削除)といったメンテナンス操作をCloudTrailで追跡できるようになりました。
本記事では、実際にこの機能を試してみた結果を紹介します。
各サービスの概要について紹介しているブログがありますので、そちらをご参照ください。
S3 Tablesについて
S3 Tablesのcompactionについて
S3 Tablesのsnapshot expirationについて
アップデート内容
S3 Tablesは、クエリパフォーマンスの最適化とコスト削減のために、以下のメンテナンス操作を自動的に実行します:
- Compaction: 小さなファイルを大きなファイルに結合し、クエリパフォーマンスを向上
- Snapshot Expiration: 保持ポリシーに基づいて古いスナップショットを削除
これらの操作は今まで「いつ実行されたか」を確認する手段がありませんでしたが、
今回のアップデートでCloudTrailの管理イベントとして記録されるようになりました。
やってみた
前提条件
- 各リソースが作成済み
- テーブルバケット: lfa-table-bucket-20250403
- Namespace: 20250404_namespace
- テーブル名: sales_a
 
- テーブルバケット: 
- CloudTrailのTrailが設定済み(Management eventsが有効)
メンテナンスジョブの設定は下記のとおりです。
~ $ aws s3tables get-table-maintenance-configuration \
       --table-bucket-arn {テーブルバケットのARN} \
       --namespace 20250404_namespace \
       --name sales_a \
       --region ap-northeast-1
{
    "tableARN": "{テーブルバケットのARN}",
    "configuration": {
        "icebergCompaction": {
            "status": "enabled",
            "settings": {
                "icebergCompaction": {
                    "targetFileSizeMB": 512,
                    "strategy": "auto"
                }
            }
        },
        "icebergSnapshotManagement": {
            "status": "enabled",
            "settings": {
                "icebergSnapshotManagement": {
                    "minSnapshotsToKeep": 1,
                    "maxSnapshotAgeHours": 6
                }
            }
        }
    }
}
事前準備
テーブルに複数回レコードを追加
compactionを発生されるためにテーブルにレコードを複数回に分けてinsertしていきます。
既にテーブルにレコードがありましたので
下記のクエリ文をAthenaで何回も実行してParquetファイルを生成しました。
insertクエリ
INSERT INTO "20250404_namespace"."sales_a"
SELECT * FROM "20250404_namespace"."sales_a"
LIMIT 10000;
実行後Parquetファイルがいくつか生成されました。
生成ファイル確認クエリ
  SELECT
      file_path,
      file_size_in_bytes,
      file_size_in_bytes / 1024.0 / 1024.0 as file_size_mb,
      record_count
  FROM "20250404_namespace"."sales_a$files"
  ORDER BY file_path DESC

これで準備が整いました。
compactionとスナップショットの削除を待ちます。
確認結果
CloudTrailのイベント履歴から確認してみます。

ちゃんとTablesMaintenanceEventで検索して3件ヒットしました!
それぞれのイベント名をクリックして、中身を見ていきましょう。
1件目
"activityType": "icebergCompaction"と記載がありcompactionの履歴が無事確認できました。
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "maintenance.s3tables.amazonaws.com"
    },
    "eventTime": "2025-10-25T16:30:23Z",
    "eventSource": "s3tables.amazonaws.com",
    "eventName": "TablesMaintenanceEvent",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "maintenance.s3tables.amazonaws.com",
    "userAgent": "maintenance.s3tables.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "f81e2dfe-2f85-3f03-a60a-15a057869f81",
    "readOnly": false,
    "resources": [
        {
            "accountId": "xxxxxxxx",
            "type": "AWS::S3Tables::TableBucket",
            "ARN": "{テーブルバケットのARN}"
        },
        {
            "accountId": "xxxxxxxx",
            "type": "AWS::S3Tables::Table",
            "ARN": "{テーブルバケットのARN}"
        }
    ],
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "xxxxxxxx",
    "sharedEventID": "cd6748d5-f084-4a47-bc33-9156c1749698",
    "serviceEventDetails": {
        "activityType": "icebergCompaction"
    },
    "eventCategory": "Management"
}
クエリでファイルを確認したところ、1ファイルに圧縮されていることも確認できました。

2件目
"activityType": "icebergSnapshotManagement"と記載がありスナップショットの削除履歴が無事確認できました。
ちなみに3件目のイベント履歴もスナップショットでして、私が今回の検証をはじめる前に少しテーブルをいじっていたことが影響しています。。。
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AWSService",
        "invokedBy": "maintenance.s3tables.amazonaws.com"
    },
    "eventTime": "2025-10-25T10:28:26Z",
    "eventSource": "s3tables.amazonaws.com",
    "eventName": "TablesMaintenanceEvent",
    "awsRegion": "ap-northeast-1",
    "sourceIPAddress": "maintenance.s3tables.amazonaws.com",
    "userAgent": "maintenance.s3tables.amazonaws.com",
    "requestParameters": null,
    "responseElements": null,
    "eventID": "7028b2e6-7fc3-3576-a45d-f744f6f46e48",
    "readOnly": false,
    "resources": [
        {
            "accountId": "xxxxxxxx",
            "type": "AWS::S3Tables::TableBucket",
            "ARN": "{テーブルバケットのARN}"
        },
        {
            "accountId": "xxxxxxxx",
            "type": "AWS::S3Tables::Table",
            "ARN": "arn:{テーブルバケットのARN}"
        }
    ],
    "eventType": "AwsServiceEvent",
    "managementEvent": true,
    "recipientAccountId": "xxxxxxxx",
    "sharedEventID": "0954689b-d62e-41bc-ac1f-9d886b580042",
    "serviceEventDetails": {
        "activityType": "icebergSnapshotManagement"
    },
    "eventCategory": "Management"
}
まとめ
アップデートの内容通りCloudTrailにて、S3 Tablesが自動実行するcompactionとsnapshot expirationの確認ができました。
今まで少しブラックボックス化していたメンテナンス処理の追跡も可能となり、より効果的なテーブル管理が実現できました。
S3 Tablesはこれから更なるアップデートが期待されると思いますので、引き続き情報をキャッチアップしてお届けしていきます。












