Amazon S3 TablesのメンテナンスイベントがCloudTrailで確認できるようになりました

Amazon S3 TablesのメンテナンスイベントがCloudTrailで確認できるようになりました

2025.10.27

はじめに

こんにちは、データ事業本部の小高です。

2025年10月22日、S3 Tablesのメンテナンス操作に関するCloudTrailイベントが追加されました。これにより、S3 Tablesが自動実行するcompaction(ファイル圧縮)やsnapshot expiration(スナップショット削除)といったメンテナンス操作をCloudTrailで追跡できるようになりました。
https://aws.amazon.com/jp/about-aws/whats-new/2025/10/amazon-s3-generates-aws-cloudtrail-events/
本記事では、実際にこの機能を試してみた結果を紹介します。
各サービスの概要について紹介しているブログがありますので、そちらをご参照ください。

S3 Tablesについて

https://dev.classmethod.jp/articles/amazon-s3-tables-tokyo-region-ga/
https://dev.classmethod.jp/articles/aws-s3-tables-getting-started-tutorial-with-console/

S3 Tablesのcompactionについて

https://dev.classmethod.jp/articles/s3-tables-file-compaction/

S3 Tablesのsnapshot expirationについて

https://dev.classmethod.jp/articles/s3-tables-snapshots-delete-schedule/

アップデート内容

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

スクリーンショット 2025-10-26 14.38.20

これで準備が整いました。
compactionとスナップショットの削除を待ちます。

確認結果

CloudTrailのイベント履歴から確認してみます。

スクリーンショット 2025-10-26 14.42.52

ちゃんと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ファイルに圧縮されていることも確認できました。

スクリーンショット 2025-10-26 14.54.42

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はこれから更なるアップデートが期待されると思いますので、引き続き情報をキャッチアップしてお届けしていきます。

参考リンク

この記事をシェアする

FacebookHatena blogX

関連記事