- 公開日
- 最終更新日
S3 イベント通知にバケットのシステム生成タグが含まれるようになりました
この記事を共有する
目次
はじめに
先日、Amazon S3(以下、S3)のイベント通知に AWS が付与したタグが含まれるようになったというアップデートがありました。
これまで複数バケットのイベントを拾うには、Amazon EventBridge(以下、EventBridge)のルールにバケット名を全部並べる必要がありました。
バケットが増えるたびにルールを直す作業が地味に面倒だったので、試してみました。
アップデートの内容
2026 年 7 月 16 日のアップデートで、S3 のイベント通知にシステム生成タグが含まれるようになりました。
システム生成タグとは、AWS のサービスがバケットに自動で付けるタグのことです。
対象は汎用バケットで、全リージョンで利用できます。
追加費用はかからず、既存のイベント通知設定を変更する必要もありません。
詳細は What's New の告知 にまとまっています。
AWS CloudFormation で作ったバケットには最初から付いている
ここが今回いちばん嬉しかった点です。
AWS CloudFormation(以下、CloudFormation)でバケットを作ると、スタック名などのタグが自動で付きます。
つまり IaC で作ったバケットなら、何もしなくてもイベント側でスタック単位の絞り込みができるようになりました。
EventBridge に届くイベントは以下のような形になります。
{
"detail-type": "Object Created",
"source": "aws.s3",
"detail": {
"bucket": {
"name": "amzn-s3-demo-bucket",
"aws-generated-tags": {
"aws:cloudformation:stack-name": "amzn-s3-demo-stack",
"aws:cloudformation:stack-id": "arn:aws:cloudformation:ap-northeast-1:111122223333:stack/amzn-s3-demo-stack/51af3dc0",
"aws:cloudformation:logical-id": "S3DemoBucket"
}
},
"object": {
"key": "example-key",
"size": 5
}
}
}
detail.bucket.aws-generated-tags が今回追加されたフィールドです。
イベント構造の全体は EventBridge に送られる S3 イベントのドキュメント にあります。
ルールの書き方が変わる
これまではバケット名を列挙していました。
バケットを 1 つ追加するたびにテンプレートを直す必要があり、直し忘れるとイベントが拾われません。
EventPattern:
source:
- aws.s3
detail-type:
- Object Created
detail:
bucket:
name:
- amzn-s3-demo-bucket-1
- amzn-s3-demo-bucket-2
- amzn-s3-demo-bucket-3
タグで絞り込むと、同じスタックで作られたバケットをまとめて拾えます。
バケットが増えてもルールは変わりません。
EventPattern:
source:
- aws.s3
detail-type:
- Object Created
detail:
bucket:
aws-generated-tags:
aws:cloudformation:stack-name:
- amzn-s3-demo-stack
CloudFormation で書くと以下のようになります。
バケット側は EventBridgeConfiguration を有効にしておく必要があります。
Resources:
ExampleBucket:
Type: AWS::S3::Bucket
Properties:
NotificationConfiguration:
EventBridgeConfiguration:
EventBridgeEnabled: true
ExampleRule:
Type: AWS::Events::Rule
Properties:
EventPattern:
source:
- aws.s3
detail-type:
- Object Created
detail:
bucket:
aws-generated-tags:
aws:cloudformation:stack-name:
- !Ref AWS::StackName
Targets:
- Arn: !GetAtt ExampleFunction.Arn
Id: ExampleTarget
!Ref AWS::StackName を使えば、自分のスタックが作ったバケットだけを拾うルールになります。

使う前に知っておきたいこと
実際に使ってみて、注意が必要だと感じた点が 2 つあります。
タグが無いバケットではフィールドごと存在しません。
値が空になるのではなく、aws-generated-tags というフィールド自体が出てきません。
手作業で作ったバケットには AWS 生成のタグが付いていないので、このルールでは拾われないことになります。
IaC 管理から漏れているバケットを見つける手がかりとしても使えそうです。
まとめ
今回は S3 のイベント通知に追加されたシステム生成タグを使って、EventBridge のルールをバケット名の列挙から解放しました。
一番よかったのは、CloudFormation でバケットを作っていたおかげで設定を何も足さずに恩恵を受けられたことです。
IaC で作っておくと後から出た機能がそのまま乗ってくる、という体験は久しぶりでした。
バケットが増えるたびに EventBridge のルールを直している方の参考になれば幸いです。
この記事は私が書きました
野間 太一
記事一覧猫とCloudFormationが好きです。