
2026/11/2に追加される CloudTrail の S3 データイベントを Advanced Event Selector からオプトアウトしてみる
こんにちは
思い出はデータイベント
運用イノベーション部のかわいです。
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を除外すればオプトアウトが可能
オプトアウトするかはコスト次第と思いますが、記事作成時点(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 以外のデータイベントのセレクタがある場合も同様です。
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)
まとめ的な
S3 データイベントを記録している証跡だけが対象なので、まずは get-event-selectors で確認します。事前に除外する場合は S3 のセレクタに eventSource の NotEquals を1行足せばok
それではまた!
完
参考








