2026/11/2に追加される CloudTrail の S3 データイベントを Advanced Event Selector からオプトアウトしてみる

2026/11/2に追加される CloudTrail の S3 データイベントを Advanced Event Selector からオプトアウトしてみる

2026年11月2日から CloudTrail の S3 データイベントにライフサイクルイベントと認証失敗イベントが追加されます。本記事では、オプトアウトの方法について紹介します。
2026.10.13

こんにちは
思い出はデータイベント
運用イノベーション部のかわいです。

2026/11/2から、CloudTrail の S3 データイベントに以下2点が追加されます(という通知がありました)。
AWS からの通知では「CloudTrail データイベントは S3 Server Access Logging (SAL) と完全に同等になる」と案内されています。

追加されるイベント eventSource eventType 内容
ライフサイクルイベント s3lifecycle.amazonaws.com AwsServiceEvent 有効期限切れ削除、削除マーカー作成、ストレージクラス移行、不完全なマルチパートアップロードの中止など
認証失敗イベント s3-authn-errors.amazonaws.com AwsApiCall 署名不一致や無効なアクセスキーなど、認証段階で弾かれたリクエスト

TL;DR

  • 料金は通常のデータイベントと同じ $0.10/10万イベント。何もしなければ11月2日から自動で記録、課金が始まる
  • 影響を受けるのは S3 のデータイベントを記録している証跡、イベントデータストアのみ。管理イベントのみの証跡は対象外
  • 不要な場合、事前に Advanced Event Selector で eventSource を除外すればオプトアウトが可能

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/filtering-data-events.html

オプトアウトするかはコスト次第と思いますが、記事作成時点(10/13)ではまだ CloudTrail に記録されないため、11月2日より前に正確に件数を見積もる方法は用意されていません(AWS確認済み)。

上記を踏まえ、本記事ではオプトアウトの方法について紹介したいと思います。

1. 証跡が対象かを確認する

まず、調べたい証跡が今回の対象かを調べます。
CloudShell等から以下を実行します。

aws cloudtrail get-event-selectors --trail-name <証跡名>

# 有効な場合の出力例
~ $ aws cloudtrail get-event-selectors --trail-name test
{
    "TrailARN": "arn:aws:cloudtrail:ap-northeast-1:xxxxxxxxxxxx:trail/test",
    "AdvancedEventSelectors": [
        {
            "Name": "test",
            "FieldSelectors": [
                {
                    "Field": "eventCategory",
                    "Equals": [
                        "Data"
                    ]
                },
                {
                    "Field": "resources.type",
                    "Equals": [
                        "AWS::S3::Object"
                    ]
                }
            ]
        },
        {
            "Name": "管理イベントセレクター",
            "FieldSelectors": [
                {
                    "Field": "eventCategory",
                    "Equals": [
                        "Management"
                    ]
                }
            ]
        }
    ]
}

上記出力例のように、AdvancedEventSelectors に resources.type が AWS::S3::Object のセレクタがあれば対象です。なければ今回の変更は影響しません。

本例ではコンソールで証跡を作ってデータイベントを設定しており、その場合は、Advanced Event Selector がデフォルトになっています(2026/10/13時点)。
EventSelectors(基本イベントセレクタ)が返る場合は eventSource での除外が書けないので、先に Advanced への切り替えが必要です。

2. S3 データイベント用のセレクタに除外条件を追加する

S3 データイベント用のセレクタに、eventSource の NotEquals を1行追加します。

以下のput-event-selectors は全体を置き換えてしまうため、S3 のセレクタだけを渡すと管理イベントの記録が止まります。そのため前手順で確認した既存セレクタをすべて並べて渡します。Lambda や DynamoDB など、S3 以外のデータイベントのセレクタがある場合も同様です。

https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-event-selectors.html

aws cloudtrail put-event-selectors --trail-name <証跡名> --advanced-event-selectors '[
  {"Name":"test","FieldSelectors":[
    {"Field":"eventCategory","Equals":["Data"]},
    {"Field":"resources.type","Equals":["AWS::S3::Object"]},
    {"Field":"eventSource","NotEquals":["s3lifecycle.amazonaws.com"]}]},
  {"Name":"管理イベントセレクター","FieldSelectors":[
    {"Field":"eventCategory","Equals":["Management"]}]}
]'

# 出力例
{
    "TrailARN": "arn:aws:cloudtrail:ap-northeast-1::trail/test",
    "AdvancedEventSelectors": [
        {
            "Name": "test",
            "FieldSelectors": [
                {
                    "Field": "eventCategory",
                    "Equals": [
                        "Data"
                    ]
                },
                {
                    "Field": "resources.type",
                    "Equals": [
                        "AWS::S3::Object"
                    ]
                },
                {
                    "Field": "eventSource",
                    "NotEquals": [
                        "s3lifecycle.amazonaws.com"
                    ]
                }
            ]
        },
        {
            "Name": "管理イベントセレクター",
            "FieldSelectors": [
                {
                    "Field": "eventCategory",
                    "Equals": [
                        "Management"
                    ]
                }
            ]
        }
    ]
}

上記はドキュメントの例 4そのままで、認証失敗を外す例 5は、値が s3-authn-errors.amazonaws.com に変わるだけです。

両方まとめて外す例はドキュメントにはありませんが、API リファレンスでは NotEquals は文字列の配列なので、値を2つ並べられます。なので、両方外したい場合は以下のように書きます。

{ "Field": "eventSource", "NotEquals": ["s3lifecycle.amazonaws.com", "s3-authn-errors.amazonaws.com"] }

11月2日以降のログについて

現時点で分かっている点として、以下が CloudTrail より確認可能になるようです。

  • ライフサイクルの eventName は ExpireObject、CreateDeleteMarker、TransitionObject など。SAL での操作名(S3.EXPIRE.OBJECT 等)は serviceEventDetails.lifecycleAction に入る(AWS通知本文より)
  • 認証失敗: eventName は Authenticate + エラーコード(例: AuthenticateSignatureDoesNotMatch)

https://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/filtering-data-events.html#filtering-data-events-eventsource-s3auth)より)

まとめ的な

S3 データイベントを記録している証跡だけが対象なので、まずは get-event-selectors で確認します。事前に除外する場合は S3 のセレクタに eventSource の NotEquals を1行足せばok

それではまた!

完

参考

https://docs.aws.amazon.com/awscloudtrail/latest/userguide/filtering-data-events.html
https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html
https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/put-event-selectors.html
https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedFieldSelector.html
https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-and-other-bucket-config.html
https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerLogs.html

この記事をシェアする

関連記事