

# Amazon S3 イベント通知
<a name="EventNotifications"></a>

Amazon S3 イベント通知機能を使用して、S3 バケットで特定のイベントが発生したときに通知を受け取ることができます。通知を有効にするには、Amazon S3 から発行するイベントを識別する通知設定を追加します。Amazon S3 から通知を送信する宛先も指定されていることを確認してください。この設定は、バケットに関連付けられた*通知*サブリソースに保存します 詳細については、[汎用バケットの設定オプション](UsingBucket.md#bucket-config-options-intro) を参照してください。Amazon S3 では、このサブリソースを管理するための API も利用できます。

**重要**  
Amazon S3 イベント通知は、少なくとも 1 回配信されるように設計されています。通常、イベント通知は数秒で配信されますが、1 分以上かかる場合もあります。

## Amazon S3 イベント通知の概要。
<a name="notification-how-to-overview"></a>

現在、Amazon S3 は次のイベントの通知を発行できます。
+ 新しいオブジェクトの作成イベント
+ オブジェクトの削除イベント
+ オブジェクトイベントの復元
+ 低冗長化ストレージ (RRS) オブジェクトの紛失イベント
+ レプリケーションイベント
+ S3 ライフサイクルの有効期限イベント
+ S3 ライフサイクルの移行イベント
+ S3 Intelligent−Tiering 自動アーカイブイベント
+ オブジェクトのタグ付けイベント
+ オブジェクト ACL PUT イベント

サポートしたすべてのイベントタイプの詳細は、[SQS、SNS、および Lambda でサポートされているイベントタイプ](notification-how-to-event-types-and-destinations.md#supported-notification-event-types) を参照してください。

Amazon S3 は、次の宛先にイベントの通知メッセージを送信できます。通知設定でこれらの送信先の Amazon リソースネーム (ARN) 値を指定します。
+ Amazon Simple Notification Service (Amazon SNS) のトピック
+ Amazon Simple Queue Service Amazon SQS キュー
+ AWS Lambda 関数
+ Amazon EventBridge

詳細については、「[サポートされているイベントの送信先](notification-how-to-event-types-and-destinations.md#supported-notification-destinations)」を参照してください。

**注記**  
Amazon Simple キューサービス FIFO (先入れ先出し) キューは、Amazon S3 イベント通知の送信先としてサポートされていません。Amazon S3 イベントの通知を Amazon SQS FIFO キューに送信するには、Amazon EventBridge を使用できます。詳細については、「[Amazon EventBridge を有効にします](enable-event-notifications-eventbridge.md)」を参照してください。

**警告**  
通知が通知をトリガーするのと同じバケットに書き込むと、実行ループが発生する可能性があります。例えば、オブジェクトがアップロードされるたびにバケットで Lambda 関数をトリガーし、その関数によってオブジェクトがバケットにアップロードされると、その関数によって間接的にその関数自体がトリガーされます。これを回避するには、2 つのバケットを使用するか、受信オブジェクトで使用されるプレフィックスにのみ適用されるようにトリガーを設定します。  
AWS Lambda で Amazon S3 通知を使用する方法の詳細と例については、**「AWS Lambda デベロッパーガイド」の「[AWS Lambda を Amazon S3 に使用する](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html)」を参照してください。

バケットごとに作成できるイベント通知設定数の詳細については、*AWS 全般のリファレンス*の[「Amazon S3 サービスクォータ」](https://docs.aws.amazon.com/general/latest/gr/s3.html#limits_s3)を参照してください。

イベント通知の詳細については、以下のセクションを参照してください。

**Topics**
+ [Amazon S3 イベント通知の概要。](#notification-how-to-overview)
+ [イベント通知のタイプおよび送信先](notification-how-to-event-types-and-destinations.md)
+ [Amazon SQS、Amazon SNS、Lambda を使用します](how-to-enable-disable-notification-intro.md)
+ [EventBridge の使用](EventBridge.md)

# イベント通知のタイプおよび送信先
<a name="notification-how-to-event-types-and-destinations"></a>

Amazon S3 では、通知を発行できるいくつかのイベント通知のタイプと送信先がサポートされています。イベント通知を設定するときに、イベントタイプと送信先を指定できます。各イベント通知に指定できる送信先は 1 つだけです。Amazon S3 イベント通知は、通知メッセージごとに 1 つのイベントエントリを送信します。

**Topics**
+ [サポートされているイベントの送信先](#supported-notification-destinations)
+ [SQS、SNS、および Lambda でサポートされているイベントタイプ](#supported-notification-event-types)
+ [Amazon EventBridge でサポートされているイベントタイプ。](#supported-notification-event-types-eventbridge)
+ [イベントの順序付けと重複イベント](#event-ordering-and-duplicate-events)

## サポートされているイベントの送信先
<a name="supported-notification-destinations"></a>

Amazon S3 は、次の宛先にイベントの通知メッセージを送信できます。
+ Amazon Simple Notification Service (Amazon SNS)のトピック
+ Amazon Simple Queue Service Amazon SQS キュー
+ AWS Lambda
+ Amazon EventBridge

ただし、各イベント通知に指定できる送信先タイプは 1 つだけです。

**注記**  
Amazon SNS トピックまたは Amazon SQS キューにメッセージを投稿するには、Amazon S3 のアクセス許可を付与する必要があります。また、ユーザーに代わって AWS Lambda 関数を呼び出すためにも Amazon S3 の許可を付与する必要があります。これらの許可を付与する方法については、[宛先にイベント通知メッセージを発行するアクセス許可の付与](grant-destinations-permissions-to-s3.md) を参照してください。

### Amazon SNS トピック
<a name="amazon-sns-topic"></a>

Amazon SNS は、柔軟性に優れたフルマネージド型のプッシュメッセージングサービスです。このサービスを使用すると、モバイルデバイスまたは配信サービスにメッセージを配信できます。SNS で 一度メッセージを送信すると、1 回または複数回配信できます。現在 、 標準 SNS は S3 イベント通知の宛先としてのみ許可されていますが、SNS FIFO は許可されていません。

Amazon SNS は承認エンドポイントやクライアントへのメッセージの配信または送信の調整と管理を行います。Amazon SNS コンソールを使用して、通知の送信先にする Amazon SNS トピックを作成できます。

トピックは、Amazon S3 バケットと同じ AWS リージョンにある必要があります。Amazon SNS トピックの作成方法の詳細については、*Amazon Simple Notification Service デベロッパーガイド*の [Amazon SNS の開始方法](https://docs.aws.amazon.com/sns/latest/dg/sns-getting-started.html)および [Amazon SNS のよくある質問](https://aws.amazon.com/sns/faqs/) を参照してください。

イベント通知宛先として作成した Amazon SNS トピックを使用するには、以下のものが必要です。
+ Amazon SNS トピックの Amazon リソースネーム (ARN)
+ 有効な Amazon SNS トピックサブスクリプション。これにより、Amazon SNS トピックにメッセージが公開されると、トピックのサブスクライバーに通知されます。

### Amazon SQS キュー
<a name="amazon-sqs-queue"></a>

Amazon SQS には、コンピュータ間で送受信されるメッセージを格納するための、信頼性の高いスケーラブルなホストされたキューが用意されています。Amazon SQS を使用すると、どのような量のデータでも転送することができ、他のサービスが常に利用可能である必要もありません。Amazon SQS コンソールを使用すると、通知の送信先にする Amazon SQS キューを作成できます。

Amazon SQS キューは、Amazon S3 バケットと同じ AWS リージョン に存在する必要があります。Amazon SQS キューの作成方法の説明は、**「Amazon Simple Queue Service デベロッパーガイド」の「[Amazon Simple Queue Service とは](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/welcome.html)」および「[Amazon SQS の開始方法](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)」を参照してください。

イベント通知の送信先として Amazon SQS キューを使用するには、以下が必要です。
+ Amazon SQS キューの Amazon リソースネーム (ARN)

**注記**  
Amazon Simple キューサービス FIFO (先入れ先出し) キューは、Amazon S3 イベント通知の送信先としてサポートされていません。Amazon S3 イベントの通知を Amazon SQS FIFO キューに送信するには、Amazon EventBridge を使用できます。詳細については、「[Amazon EventBridge を有効にします](enable-event-notifications-eventbridge.md)」を参照してください。

### Lambda 関数
<a name="lambda-function"></a>

AWS Lambda を使用して、AWS の他のサービスをカスタムロジックで拡張したり、AWS のスケール、パフォーマンス、セキュリティで動作する独自のバックエンドを作成したりすることができます。Lambda を使用すると、必要な場合にのみ実行される離散イベント駆動型アプリケーションを作成できます。また、これを使用して、これらのアプリケーションを 1 日数回のリクエストから 1 秒あたり数千回のリクエストに自動的にスケーリングすることもできます。

Lambda は、Amazon S3 バケットイベントに応答してカスタムコードを実行できます。カスタムコードを Lambda にアップロードし、Lambda 関数と呼ばれるものを作成します。Amazon S3 は特定のタイプのイベントを検出すると、そのイベントを AWS Lambda に公開し、Lambda で関数を呼び出すことができます。それに応じて、Lambda が関数を実行します。例えば、検出される可能性のあるイベントタイプの 1 つは、オブジェクトで作成されたイベントです。

AWS Lambda コンソールを使用すると、AWS インフラストラクチャを使用してユーザーに代わってコードを実行する Lambda 関数を作成できます。Lambda 関数は S3 バケットと同じリージョンに存在する必要があります。Lambda 関数をイベント通知の送信先として設定するには、Lambda 関数の名前または ARN も必要になります。

**警告**  
通知が通知をトリガーするのと同じバケットに書き込むと、実行ループが発生する可能性があります。例えば、オブジェクトがアップロードされるたびにバケットで Lambda 関数をトリガーし、その関数によってオブジェクトがバケットにアップロードされると、その関数によって間接的にその関数自体がトリガーされます。これを回避するには、2 つのバケットを使用するか、受信オブジェクトで使用されるプレフィックスにのみ適用されるようにトリガーを設定します。  
AWS Lambda で Amazon S3 通知を使用する方法の詳細と例については、**「AWS Lambda デベロッパーガイド」の「[AWS Lambda を Amazon S3 に使用する](https://docs.aws.amazon.com/lambda/latest/dg/with-s3.html)」を参照してください。

### Amazon EventBridge
<a name="eventbridge-dest"></a>

Amazon EventBridge はサーバーレスのイベントバスで、AWS サービスからのイベントを受信します。イベントに一致するルールを設定し、それらを AWS サービスや HTTP エンドポイントなどのターゲットに配信できます。詳細については、**「Amazon EventBridge ユーザーガイド」の「[Amazon EventBridge とは](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。

他の宛先とは異なり、バケットの EventBridge へのイベントの配信を有効または無効にすることができます。配信を有効にすると、すべてのイベントが EventBridge に送信されます。さらに、EventBridge ルールを使用して、イベントを追加のターゲットに送信することもできます。

## SQS、SNS、および Lambda でサポートされているイベントタイプ
<a name="supported-notification-event-types"></a>

Amazon S3 は、次のタイプのイベントを発行できます。通知設定で、これらのイベントタイプを指定します。


|  イベントタイプ |  説明  | 
| --- | --- | 
|  `s3:TestEvent`  |  通知が有効な場合、Amazon S3 はテスト通知を公開します これは、トピックが存在し、バケット所有者が指定されたトピックを公開する許可があることを保証するためです。 通知の有効化に失敗した場合、テスト通知を受信しません。  | 
|  `s3:ObjectCreated:*` `s3:ObjectCreated:Put` `s3:ObjectCreated:Post` `s3:ObjectCreated:Copy` `s3:ObjectCreated:CompleteMultipartUpload`  |  `PUT`、`POST`、`COPY` などの Amazon S3 API オペレーションはオブジェクトを作成できます。これらのイベントタイプで、特定の API を使用してオブジェクトが作成されたときに通知を有効にできます。または、オブジェクトの作成に使用された API に関係なく、`s3:ObjectCreated:*` イベントタイプを使用して通知を要求できます。 `s3:ObjectCreated:CompleteMultipartUpload` には、コピーオペレーションの [https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) を使用して作成されたオブジェクトが含まれます。  | 
|  `s3:ObjectRemoved:*` `s3:ObjectRemoved:Delete` `s3:ObjectRemoved:DeleteMarkerCreated`  |  `ObjectRemoved` イベントタイプを使用することで、オブジェクトまたはオブジェクトのバッチがバケットから削除されたときに通知を有効にできます。 `s3:ObjectRemoved:Delete` イベントタイプを使用することで、オブジェクトが削除されたとき、またはバージョニングが有効なオブジェクトが完全に削除されたときに通知が送信されるようにリクエストできます。その代わりに、`s3:ObjectRemoved:DeleteMarkerCreated` を使用することで、削除マーカーがバージョニング・オブジェクトを作成すると、通知が送信されるようにリクエストできます。バージョン管理されたオブジェクトを削除する方法については、[バージョニングが有効なバケットからのオブジェクトバージョンの削除](DeletingObjectVersions.md) を参照してください。ワイルドカードとして `s3:ObjectRemoved:*` を使用することで、オブジェクトが削除されるたびに通知が送信されるようにリクエストできます。 これらのイベント通知では、ライフサイクル設定や失敗したオペレーションから自動削除のアラートはありません。  | 
|  `s3:ObjectRestore:*` `s3:ObjectRestore:Post` `s3:ObjectRestore:Completed` `s3:ObjectRestore:Delete`  |  `ObjectRestore` イベントタイプを使用することで、S3 Glacier Flexible Retrieval ストレージクラス、S3 Glacier Deep Archive ストレージクラス、S3 Intelligent-Tiering アーカイブアクセス階層、および S3 Intelligent-Tiering Deep アーカイブアクセス階層からオブジェクトを復元するときに、開始および完了の通知を受け取ることができます。オブジェクトの復元されたコピーの有効期限が切れたときの通知を受け取ることもできます。 `s3:ObjectRestore:Post` イベントタイプは、オブジェクトの復元開始を通知します。`s3:ObjectRestore:Completed` イベントタイプは、復元完了を通知します。`s3:ObjectRestore:Delete` イベントタイプは、復元されたオブジェクトの一時コピーの有効期限が切れると通知します。  | 
| s3:ReducedRedundancyLostObject | この通知イベントは、Amazon S3 が RRS ストレージクラスのオブジェクトが失われたことを検出したときに受け取ります。 | 
|  `s3:Replication:*` `s3:Replication:OperationFailedReplication` `s3:Replication:OperationMissedThreshold` `s3:Replication:OperationReplicatedAfterThreshold` `s3:Replication:OperationNotTracked`  |  `Replication` イベントタイプを使用すると、S3 レプリケーションメトリクスまたは S3 Replication Time Control (S3 RTC) が有効になっているレプリケーション構成の通知を受信できます。保留中のバイト数、保留中のオペレーション、およびレプリケーションのレイテンシーを追跡すると、レプリケーションイベントの進行状況を 1 分単位でモニタリングできます。レプリケーションメトリクスについては、「[メトリクス、イベント通知、ステータスによるレプリケーションのモニタリング](replication-metrics.md)」をご参照ください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html)  | 
|  `s3:LifecycleExpiration:*` `s3:LifecycleExpiration:Delete` `s3:LifecycleExpiration:DeleteMarkerCreated`  |  `LifecycleExpiration` イベントタイプを使用すると、Amazon S3 が S3 ライフサイクル設定に基づいてオブジェクトを削除したときに通知を受け取ることができます。 `s3:LifecycleExpiration:Delete` イベントタイプは、バージョン管理されていないバケット内のオブジェクトが削除されたときに通知します。また、S3 ライフサイクル設定によってオブジェクトバージョンが完全に削除された場合にも通知されます。`s3:LifecycleExpiration:DeleteMarkerCreated` イベントタイプは、バージョン対応バケット内のオブジェクトの現在のバージョンが削除されたときに S3 ライフサイクル が削除マーカーを作成したときに通知します。  | 
| s3:LifecycleTransition | この通知イベントは、S3 ライフサイクル設定によってオブジェクトが別の Amazon S3 ストレージクラスに移行されたときに受信されます。 | 
| s3:IntelligentTiering | この通知イベントは、S3 Intelligent−Tiering ストレージクラス内のオブジェクトがアーカイブアクセス層またはディープアーカイブアクセス層に移動したときに受信されます。 | 
|  `s3:ObjectTagging:*` `s3:ObjectTagging:Put` `s3:ObjectTagging:Delete`  |  `ObjectTagging` イベントタイプを使用すると、オブジェクトタグがオブジェクトに追加またはオブジェクトから削除されたときに通知を有効にできます。 `s3:ObjectTagging:Put` イベントタイプは、タグがオブジェクトの PUT であるか、既存のタグが更新されたときに通知します。`s3:ObjectTagging:Delete` イベントタイプは、タグがオブジェクトから削除されたときに通知します。 | 
| s3:ObjectAcl:Put | この通知イベントは、ACL がオブジェクトに PUT されたとき、または既存の ACL が変更されたときに受け取ります。リクエストによってオブジェクトの ACL が変更されない場合、イベントは生成されません。 | 

## Amazon EventBridge でサポートされているイベントタイプ。
<a name="supported-notification-event-types-eventbridge"></a>

Amazon S3 から Amazon EventBridge に送信するイベントタイプのリストについては、「[EventBridge の使用](EventBridge.md)」を参照してください。

## イベントの順序付けと重複イベント
<a name="event-ordering-and-duplicate-events"></a>

Amazon S3 イベント通知は、通知を少なくとも 1 回配信するように設計されていますが、イベントが発生したのと同じ順序で通知が受信されるとは限りません。まれに、Amazon S3 の再試行メカニズムによって、同じオブジェクトイベントに対して重複する S3 イベント通知が発生することがあります。重複イベントまたは順序が異なるイベント処理の詳細については、「**AWS Storage Blog」の「[Manage event ordering and duplicate events with Amazon S3 Event Notifications](https://aws.amazon.com/blogs/storage/manage-event-ordering-and-duplicate-events-with-amazon-s3-event-notifications/)」を参照してください。

# Amazon SQS、Amazon SNS、Lambda を使用します
<a name="how-to-enable-disable-notification-intro"></a>

通知の有効化は、バケットレベルのオペレーションです。バケットに関連付けられた *通知* サブリソースに通知設定情報が格納されます。通常、バケット通知設定を作成または変更してから、変更が有効になるまで通常 5 分かかります。通知が最初に有効になったとき、`s3:TestEvent` が発生します。次のいずれかの方法を使用して通知設定の管理を行います。
+ **Amazon S3 コンソールの使用** − コンソール UI では、コードを記述しなくても、バケットの通知設定を指定できます。詳細については、[Amazon S3 コンソールを使用したイベント通知の有効化と設定](enable-event-notifications.md) を参照してください。
+ ** AWS SDK をプログラムで使用する** − 内部的には、コンソールも SDK も Amazon S3 REST API を呼び出して、バケットに関連付けられた*通知*サブリソースを管理します。AWS SDK を使用した通知設定の例については、[チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md) を参照してください。
**注記**  
コードから直接 Amazon S3 REST API を呼び出すこともできます。しかし、そうするのはリクエストを認証するためのコードを作成する必要があるため面倒な場合もあります。

使用する方法を問わず、Amazon S3 は通知設定を XML として、バケットに関連付けられた *通知* サブリソースに保存します。バケットのサブリソースの詳細については、[汎用バケットの設定オプション](UsingBucket.md#bucket-config-options-intro) を参照してください。

**注記**  
削除された送信先が原因で複数の失敗したイベント通知を受け取った場合、削除しようとすると **[以下の送信先設定を検証できません]** と表示される場合があります。これは、S3 コンソールで失敗した通知をすべて同時に削除することで解決できます。

**Topics**
+ [宛先にイベント通知メッセージを発行するアクセス許可の付与](grant-destinations-permissions-to-s3.md)
+ [Amazon S3 コンソールを使用したイベント通知の有効化と設定](enable-event-notifications.md)
+ [プログラムによるイベント通知の設定](#event-notification-configuration)
+ [チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md)
+ [オブジェクトキー名のフィルタリングを使用したイベント通知の設定](notification-how-to-filtering.md)
+ [イベントメッセージの構造](notification-content-structure.md)

# 宛先にイベント通知メッセージを発行するアクセス許可の付与
<a name="grant-destinations-permissions-to-s3"></a>

Amazon S3 プリンシパルに、SNS トピック、SQS キュー、Lambda 関数へメッセージを公開する関連する API を呼び出すため必要なアクセス許可を付与する必要があります。これは、Amazon S3 がイベント通知メッセージを宛先に公開できるようにするためです。

イベント通知メッセージを送信先に公開する場合のトラブルシューティングについては、[「Amazon S3 イベント通知を Amazon Simple Notification Service に公開するためのトラブルシューティング](https://repost.aws/knowledge-center/sns-not-receiving-s3-event-notifications)」トピックを参照してください。

**Topics**
+ [AWS Lambda 関数を呼び出すアクセス許可の付与](#grant-lambda-invoke-permission-to-s3)
+ [SNS トピックまたは SQS キューにメッセージを発行するアクセス許可の付与](#grant-sns-sqs-permission-for-s3)

## AWS Lambda 関数を呼び出すアクセス許可の付与
<a name="grant-lambda-invoke-permission-to-s3"></a>

Amazon S3 は Lambda 関数を呼び出してイベントメッセージを AWS Lambda に発行し、イベントメッセージを引数として指定します。

Amazon S3 コンソールを使用して Lambda 関数の AmazonS3 バケットにイベント通知を設定すると、コンソールは Lambda 関数に必要なアクセス許可を設定します。これは、Amazon S3 がバケットから関数を呼び出す許可があるからです。詳細については、[Amazon S3 コンソールを使用したイベント通知の有効化と設定](enable-event-notifications.md) を参照してください。

AWS Lambda から Amazon S3 の許可を付与して、Lambda 関数を呼び出すこともできます。詳細については、*AWS Lambda デベロッパーガイド*の[チュートリアル: Amazon S3 で AWS Lambda を使用する](https://docs.aws.amazon.com/lambda/latest/dg/with-s3-example.html)を参照してください。

## SNS トピックまたは SQS キューにメッセージを発行するアクセス許可の付与
<a name="grant-sns-sqs-permission-for-s3"></a>

SNS トピックや SQS キューにメッセージを発行する許可を Amazon S3 に付与するには、AWS Identity and Access Management (IAM) ポリシーを宛先 SNS トピックや SQS キューにアタッチします。

SNS トピックや SQS キューにポリシーをアタッチする方法の例については、[チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md) を参照してください。アクセス許可の詳細については、次のトピックを参照してください。
+ 「[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/AccessPolicyLanguage_UseCases_Sns.html)」の「*Amazon SNS アクセスコントロールのケース例*」
+ **「Amazon Simple Queue サービスデベロッパーガイド」の「[Amazon SQS での Identity and Access Management](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/UsingIAM.html)」

### 発行先 SNS トピックの IAM ポリシー
<a name="sns-topic-policy"></a>

以下は、発行先 SNS トピックにアタッチする AWS Identity and Access Management (IAM) ポリシーの例です。このポリシーを使用してイベント通知の宛先 Amazon SNS トピックを設定する方法については、[チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md) を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "Example SNS topic policy",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SNS:Publish"
            ],
            "Resource": "arn:aws:sns:us-east-1:111122223333:example-sns-topic",
            "Condition": {
                "ArnEquals": {
                    "aws:SourceArn": "arn:aws:s3:::amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

### 発行先 SQS キューの IAM ポリシー
<a name="sqs-queue-policy"></a>

以下は、発行先 SQS キューにアタッチする IAM ポリシーの例です。このポリシーを使用してイベント通知の宛先 Amazon SQS キューを設定する方法については、[チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md) を参照してください。

このポリシーを使用するには、Amazon SQS キューの ARN、バケット名、およびバケット所有者の AWS アカウント ID を更新する必要があります。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "SQS:SendMessage"
            ],
            "Resource": "arn:aws:sqs:us-east-1:111122223333:queue-name",
            "Condition": {
                "ArnLike": {
                    "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket"
                },
                "StringEquals": {
                    "aws:SourceAccount": "bucket-owner-123456789012"
                }
            }
        }
    ]
}
```

------

Amazon SNS および Amazon SQS IAM ポリシーの両方について、`StringLike` 条件の代わりにポリシーで `ArnLike` 条件を指定できます。

`ArnLike` を使用する場合、ARN のパーティション、サービス、アカウント ID、リソースタイプ、および部分的なリソース ID 部分が、リクエストコンテキストの ARN と完全に一致する必要があります。部分一致が許可されるのは、リージョンとリソースパスのみです。

 `ArnLike` の代わりに `StringLike` を使用すると、マッチングでは ARN 構造が無視され、ワイルドカード文字で置換される部分に関係なく部分一致が可能になります。詳細については、「*IAM ユーザーガイド*」の「[IAM JSON のポリシー要素](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)」を参照してください。

```
"Condition": {         
  "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:amzn-s3-demo-bucket" }
  }
```

### AWS KMS キーポリシー
<a name="key-policy-sns-sqs"></a>

SQS キューまたは SNS トピックが AWS Key Management Service (AWS KMS) カスタマーマネージドキーで暗号化されている場合は、暗号化されたトピックまたはキューを操作するための許可を Amazon S3 サービスプリンシパルに付与する必要があります。Amazon S3 サービスプリンシパルに許可を付与するには、カスタマーマネージドキーのキーポリシーに次のステートメントを追加します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "example-ID",
    "Statement": [
        {
            "Sid": "example-statement-ID",
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": [
                "kms:GenerateDataKey",
                "kms:Decrypt"
            ],
            "Resource": "*"
        }
    ]
}
```

------

AWS KMS キーポリシーの詳細については、*AWS Key Management Service デベロッパーガイド*の [AWS KMS でキーポリシーを使用する](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)を参照してください。

Amazon SQS および Amazon SNS 用の AWS KMS でのサーバー側の暗号化の使用の詳細については、以下を参照してください。
+ 「**Amazon Simple Notification Service デベロッパーガイド」の「[キー管理](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)」。
+ **「Amazon Simple Queue Service デベロッパーガイド」の「[キー管理](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)」。
+ [AWS KMS コンピューティングブログ](https://aws.amazon.com/blogs/compute/encrypting-messages-published-to-amazon-sns-with-aws-kms/) の *Encrypting messages published to Amazon SNS with AWS*。

# Amazon S3 コンソールを使用したイベント通知の有効化と設定
<a name="enable-event-notifications"></a>

イベントが発生するたびに送信先へ通知メッセージを送信する特定の Amazon S3 汎用バケットイベントを有効にできます。このセクションでは、Amazon S3 コンソールを使用してイベント通知を有効にする方法について説明します。AWS SDK および Amazon S3 REST API でイベント通知を使用する方法については、[プログラムによるイベント通知の設定](how-to-enable-disable-notification-intro.md#event-notification-configuration) を参照してください。

**前提条件**: バケットのイベント通知を有効にするには、送信先タイプのいずれか 1 つを設定し、アクセス許可を設定する必要があります。詳細については、[サポートされているイベントの送信先](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) および [宛先にイベント通知メッセージを発行するアクセス許可の付与](grant-destinations-permissions-to-s3.md) を参照してください。

**注記**  
Amazon Simple キューサービス FIFO (先入れ先出し) キューは、Amazon S3 イベント通知の送信先としてサポートされていません。Amazon S3 イベントの通知を Amazon SQS FIFO キューに送信するには、Amazon EventBridge を使用できます。詳細については、「[Amazon EventBridge を有効にします](enable-event-notifications-eventbridge.md)」を参照してください。

**Topics**
+ [Amazon S3 コンソールを使用して Amazon SNS、Amazon SQS、または Lambda 通知を有効にします。](#enable-event-notifications-sns-sqs-lam)

## Amazon S3 コンソールを使用して Amazon SNS、Amazon SQS、または Lambda 通知を有効にします。
<a name="enable-event-notifications-sns-sqs-lam"></a>

**S3 バケットのイベント通知を有効化および設定するには**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. バケットリストで、イベントを有効にするバケットの名前を選択します。

1. [**プロパティ**] を選択します。

1. [**Event Notifications (イベント通知)**] セクションに移動し、[**Create event notification (イベント通知の作成)**] を選択します。

1. [**General configuration (全般設定)**] セクションで、イベント通知にわかりやすいイベント名を指定します。オプションで、プレフィックスとサフィックスを指定して、指定した文字で終わるキーを持つオブジェクトのみに通知を制限することもできます。

   1. [**Event name (イベント名)**] の説明を入力します。

      名前を入力しない場合は、グローバル一意識別子 (GUID) が生成され、名前に使用されます。

   1. (オプション) プレフィックスでイベント通知をフィルタリングするには、**プレフィックス**を入力します。

      例えば、特定のフォルダ (`images/` など) にファイルが追加されたときにのみ通知を受信するようにプレフィックスフィルタを設定できます。

   1. (オプション) サフィックスでイベント通知をフィルタリングするには、**サフィックス**を入力します。

      詳細については、[オブジェクトキー名のフィルタリングを使用したイベント通知の設定](notification-how-to-filtering.md) を参照してください。

1. **イベントタイプ**セクションで、通知を受信する 1 つ以上のイベントタイプを選択します。

   異なるイベントタイプのリスト化については、[SQS、SNS、および Lambda でサポートされているイベントタイプ](notification-how-to-event-types-and-destinations.md#supported-notification-event-types) を参照してください。

1. [**Destination (ターゲット)**] セクションで、イベント通知の送信先を選択します。
**注記**  
イベント通知を公開する前に、Amazon S3 プリンシパルが関連 API を呼び出すために必要なアクセス許可を付与する必要があります。これは、Lambda 関数、SNS トピック、または SQS キューに通知を発行できるようにするためです。

   1. ターゲットタイプ ([**Lambda Function (Lambda 関数)**]、[**SNS Topic (SNS トピック)**]、または [**SQS Queue (SQS キュー)**]) を選択します。

   1. ターゲットタイプを選択したら、リストから関数、トピック、またはキューを選択します。

   1. または、Amazon リソースネーム (ARN) を指定する場合は、[**Enter ARN (ARN を入力)**] を選択して ARN を入力します。

   詳細については、[サポートされているイベントの送信先](notification-how-to-event-types-and-destinations.md#supported-notification-destinations) を参照してください。

1. [**Save Changes (変更の保存)**] を選択すると、Amazon S3 がテストメッセージをイベント通知の送信先に送信します。

## プログラムによるイベント通知の設定
<a name="event-notification-configuration"></a>

デフォルトで、通知はどのタイプのイベントにも有効ではありません。したがって、*通知*サブリソースに最初は空の設定で格納されています。

```
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
</NotificationConfiguration>
```

特定のタイプのイベントに対して通知を有効にするには、XML を、Amazon S3 がパブリッシュするイベントのタイプとパブリッシュ先を識別する適切な設定に置き換えます。各宛先には、対応する XML 設定を追加します。

**イベントメッセージを SQS キューに発行するには**  
1 つ以上のイベントタイプの通知の送信先として SQS キューを設定するには、`QueueConfiguration` を追加します。

```
<NotificationConfiguration>
  <QueueConfiguration>
    <Id>optional-id-string</Id>
    <Queue>sqs-queue-arn</Queue>
    <Event>event-type</Event>
    <Event>event-type</Event>
     ...
  </QueueConfiguration>
   ...
</NotificationConfiguration>
```

**イベントメッセージを SNS トピックに発行するには**  
特定のイベントタイプの通知の送信先として SNS トピックを設定するには、`TopicConfiguration` を追加します。

```
<NotificationConfiguration>
  <TopicConfiguration>
     <Id>optional-id-string</Id>
     <Topic>sns-topic-arn</Topic>
     <Event>event-type</Event>
     <Event>event-type</Event>
      ...
  </TopicConfiguration>
   ...
</NotificationConfiguration>
```

**AWS Lambda 関数を呼び出し、イベントメッセージを引数として指定するには**  
特定のイベントタイプの通知の送信先として Lambda 関数を設定するには、`CloudFunctionConfiguration` を追加します。

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>   
     <Id>optional-id-string</Id>   
     <CloudFunction>cloud-function-arn</CloudFunction>        
     <Event>event-type</Event>      
     <Event>event-type</Event>      
      ...  
  </CloudFunctionConfiguration>
   ...
</NotificationConfiguration>
```

**バケットで設定されているすべての通知を削除するには**  
バケットに設定されたすべての通知を削除するには、*notification* サブリソースに空の `<NotificationConfiguration/>` エレメントを保存します。

Amazon S3 は、特定のタイプのイベントを検出すると、そのイベント情報を含むメッセージを発行します。詳細については、[イベントメッセージの構造](notification-content-structure.md) を参照してください。

イベント通知の設定の詳細については、次のトピックを参照してください。
+ [チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する](ways-to-add-notification-config-to-bucket.md).
+ [オブジェクトキー名のフィルタリングを使用したイベント通知の設定](notification-how-to-filtering.md)

# チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する
<a name="ways-to-add-notification-config-to-bucket"></a>

Amazon S3 通知は、Amazon Simple Notification Service (Amazon SNS) または Amazon Simple Queue Service (Amazon SQS) を使用して受信できます。このチュートリアルでは、Amazon SNS トピックと Amazon SQS キューを使用して、バケットに通知設定を追加します。

**注記**  
Amazon Simple キューサービス FIFO (先入れ先出し) キューは、Amazon S3 イベント通知の送信先としてサポートされていません。Amazon S3 イベントの通知を Amazon SQS FIFO キューに送信するには、Amazon EventBridge を使用できます。詳細については、「[Amazon EventBridge を有効にします](enable-event-notifications-eventbridge.md)」を参照してください。

**Topics**
+ [チュートリアルの概要](#notification-walkthrough-summary)
+ [ステップ 1: Amazon SQS キューを作成する](#step1-create-sqs-queue-for-notification)
+ [ステップ 2: Amazon SNS トピックを作成する](#step1-create-sns-topic-for-notification)
+ [ステップ 3: 通知設定をバケットに追加する](#step2-enable-notification)
+ [ステップ 4: セットアップをテストする](#notification-walkthrough-1-test)

## チュートリアルの概要
<a name="notification-walkthrough-summary"></a>

このチュートリアルは、以下を行う際に役立ちます。
+ `s3:ObjectCreated:*` タイプのイベントを Amazon SQS キューに発行する。
+ `s3:ReducedRedundancyLostObject` タイプのイベントを Amazon SNS トピックに発行する。

通知設定の情報については、[Amazon SQS、Amazon SNS、Lambda を使用します](how-to-enable-disable-notification-intro.md) を参照してください。

コンソールを使用して、コードを記述することなく、これらの手順をすべて実行できます。また、通知設定をプログラムで追加できるように、AWS SDK for Java および .NET を使用したコード例も用意されています。

この手順には、以下のステップが含まれます。

1. Amazon SQS キュー を作成する。

   Amazon SQS コンソールを使用して、SQS キューを作成します。Amazon S3 がそのキューにプログラムで送信するどのメッセージにもアクセスできます。ただし、このチュートリアルでは、コンソールで通知メッセージを確認します。

   キューにアクセスポリシーをアタッチして、メッセージを発行するための Amazon S3 アクセス許可を付与します。

1. Amazon SNS トピックを作成する。

   Amazon SNS コンソールを使用して、SNS トピックを作成し、トピックにサブスクライブします。これにより、そこに投稿されたすべてのイベントが配信されます。通信プロトコルとして E メールを指定します。トピックを作成すると、Amazon SNS から E メールが送信されます。E メール内のリンクを使用して、トピックのサブスクリプションを確認します。

   トピックにアクセスポリシーをアタッチして、メッセージを発行するための Amazon S3 アクセス許可を付与します。

1. 通知設定をバケットに追加します。

## ステップ 1: Amazon SQS キューを作成する
<a name="step1-create-sqs-queue-for-notification"></a>

次の手順に従い、Amazon Simple Queue Service (Amazon SQS) キューを作成し、このキューにサブスクライブします。

1. Amazon SQS コンソールを使用して、キューを作成します。手順については、「[Amazon Simple Queue Service デベロッパーガイド](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html)」の「*Getting Started with Amazon SQS*」を参照してください。

1. キューに添付したアクセスポリシーを次のポリシーに置き換えます。

   1. Amazon SQS コンソールの [**Queues**] (キュー) リストで、キューの名前を選択します。

   1. [**Access policy**] (アクセスポリシー) タブで [**Edit**] (編集) をクリックします。

   1. キューに添付されているアクセスポリシーを置き換えます。その中で、Amazon SQS ARN、ソースバケット名、バケット所有者アカウント ID を提供します。

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Id": "example-ID",
          "Statement": [
              {
                  "Sid": "example-statement-ID",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": "s3.amazonaws.com"
                  },
                  "Action": [
                      "SQS:SendMessage"
                  ],
                  "Resource": "arn:aws:sqs:us-west-2:111122223333:s3-notification-queue",
                  "Condition": {
                      "ArnLike": {
                          "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1"
                      },
                      "StringEquals": {
                          "aws:SourceAccount": "bucket-owner-123456789012"
                      }
                  }
              }
          ]
      }
      ```

------

   1. **[保存]** を選択します。

1. (オプション) Amazon SQS キューまたは Amazon SNS トピックで、AWS Key Management Service (AWS KMS) によるサーバー側の暗号化が有効になっている場合は、次のポリシーを関連する対称暗号化カスタマーマネージドキーに追加します。

   Amazon SQS または Amazon SNS 用の AWS マネージドキーは変更できないため、カスタマーマネージドキーにポリシーを追加する必要があります。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "example-ID",
       "Statement": [
           {
               "Sid": "example-statement-ID",
               "Effect": "Allow",
               "Principal": {
                   "Service": "s3.amazonaws.com"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*"
           }
       ]
   }
   ```

------

   AWS KMS で Amazon SQS および Amazon SNS で SSE を使用する方法の詳細については、以下を参照してください。
   + 「[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-key-management.html)」の「*Key management*」。
   + 「[Amazon Simple Queue Service デベロッパーガイド](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-key-management.html)」の「*Key management*」。

1. キューの ARN を書き留めます。

   作成した SQS キューは、AWS アカウント 内の別のリソースです。固有の Amazon リソースネーム (ARN) があります。この ARN は次のステップで必要になります。ARN の形式は次のとおりです。

   ```
   arn:aws:sqs:aws-region:account-id:queue-name
   ```

## ステップ 2: Amazon SNS トピックを作成する
<a name="step1-create-sns-topic-for-notification"></a>

手順に従って、Amazon SNS トピックを作成してサブスクライブします。

1. Amazon SNS コンソールを使用してトピックを作成します。詳細については、「[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/CreateTopic.html)」の「*Creating an Amazon SNS topic*」を参照してください。

1. トピックを受信します。この演習では、通信プロトコルとしてメールを使用します。手順については、[Amazon Simple Notification Service デベロッパーガイド](https://docs.aws.amazon.com/sns/latest/dg/sns-create-subscribe-endpoint-to-topic.html)の *Amazon SNS トピックへのサブスクライブ*を参照してください。

   トピックのサブスクリプションの確認を求めるメールがお客様宛てに送信されます。サブスクリプションを確認します。

1. トピックにアタッチされたアクセスポリシーを次のポリシーに置き換えます。その中で、SNS トピックの ARN、バケット名、バケット所有者のアカウント ID を提供します。

1. トピックの ARN を書き留めておきます。

   作成した SNS トピックは、AWS アカウント内の別のリソースであり、一意の ARN があります。この ARN は次のステップで必要になります。ARN は次のような形式になります。

   ```
   arn:aws:sns:aws-region:account-id:topic-name
   ```

## ステップ 3: 通知設定をバケットに追加する
<a name="step2-enable-notification"></a>

Amazon S3 コンソールを使用するか、プログラムで AWS SDK を使用して、バケットの通知を有効にすることができます。バケットでの通知を設定するオプションのいずれかを選択します。このセクションでは、AWS SDK for Java および .NET を使用するコード例を示します。

### オプション A: コンソールを使用してバケットの通知を有効にする
<a name="step2-enable-notification-using-console"></a>

Amazon S3 コンソールを使用して、Amazon S3 に次のアクションをリクエストする通知設定を追加します。
+ [**All object create events (すべてのオブジェクト作成イベント)**] タイプのイベントを Amazon SQS キューに発行する。
+ [**Object in RRS lost (RRS オブジェクトの紛失)**] タイプのイベントを Amazon SNS トピックに発行する。

通知設定を保存すると、Amazon S3 からテストメッセージが発行され、このメッセージが E メールで送信されます。

手順については、[Amazon S3 コンソールを使用したイベント通知の有効化と設定](enable-event-notifications.md) を参照してください。

### オプション B: AWS SDK を使用してバケットの通知を有効にする
<a name="step2-enable-notification-using-awssdk-dotnet"></a>

------
#### [ .NET ]

次の C\$1 のコード例では、バケットに通知設定を追加する完全なコードのリストを示します。コードを更新して、バケット名と SNS トピックの ARN を提供する必要があります。コード例を設定および実行する方法の詳細については、「*AWS SDK for .NET デベロッパーガイド*」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/latest/developer-guide/net-dg-setup.html)」 を参照してください。

```
using Amazon;
using Amazon.S3;
using Amazon.S3.Model;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Amazon.DocSamples.S3
{
    class EnableNotificationsTest
    {
        private const string bucketName = "*** bucket name ***";
        private const string snsTopic = "*** SNS topic ARN ***";
        private const string sqsQueue = "*** SQS topic ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint bucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 client;

        public static void Main()
        {
            client = new AmazonS3Client(bucketRegion);
            EnableNotificationAsync().Wait();
        }

        static async Task EnableNotificationAsync()
        {
            try
            {
               PutBucketNotificationRequest request = new PutBucketNotificationRequest
                {
                    BucketName = bucketName
                };

                TopicConfiguration c = new TopicConfiguration
                {
                    Events = new List<EventType> { EventType.ObjectCreatedCopy },
                    Topic = snsTopic
                };
                request.TopicConfigurations = new List<TopicConfiguration>();
                request.TopicConfigurations.Add(c);
                request.QueueConfigurations = new List<QueueConfiguration>();
                request.QueueConfigurations.Add(new QueueConfiguration()
                {
                    Events = new List<EventType> { EventType.ObjectCreatedPut },
                    Queue = sqsQueue
                });
                
                PutBucketNotificationResponse response = await client.PutBucketNotificationAsync(request);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' ", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown error encountered on server. Message:'{0}' ", e.Message);
            }
        }
    }
}
```

------
#### [ Java ]

AWS SDK for Java を使用してバケット通知を設定する方法の例については、「*Amazon S3 API リファレンス*」の「[Process S3 event notifications](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_Scenario_ProcessS3EventNotification_section.html)」を参照してください。

------

## ステップ 4: セットアップをテストする
<a name="notification-walkthrough-1-test"></a>

さて、バケットにオブジェクトをアップロードしたり、Amazon SQS コンソールのイベント通知を検証することでセットアップをテストできます。手順については、*Amazon Simple Queue Service デベロッパーガイドの開始方法」セクション*の[メッセージの受信](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.htmlReceiveMessage.html)を参照してください。

# オブジェクトキー名のフィルタリングを使用したイベント通知の設定
<a name="notification-how-to-filtering"></a>

Amazon S3 イベント通知を設定する場合、Amazon S3 による通知の送信をトリガーするサポートターゲットの Amazon S3 イベントタイプを指定する必要があります。指定しなかったイベントタイプが S3 バケットで発生しても、Amazon S3 は通知を送信しません。

通知がオブジェクトのキー名のプレフィックスまたはサフィックスでフィルタリングされるように設定できます。例えば、ファイル名の拡張子が `.jpg` であるイメージファイルがバケットに追加されたときにのみ、通知が送信されるように設定できます。または、「`images/`」というプレフィックスの付いたオブジェクトがバケットに追加されたときに Amazon SNS トピックに通知が送信されるように設定し、同じバケット内にある「`logs/`」というプレフィックスの付いたオブジェクトの通知が AWS Lambda 関数に渡されるようにすることができます。

**注記**  
ワイルドカード文字 (「\$1」) は、フィルタでプレフィックスまたはサフィックスとして使用することはできません。プレフィックスまたはサフィックスにスペースが含まれている場合は、それを「\$1」文字に置き換える必要があります。プレフィックスまたはサフィックスの値に他の特殊文字を使用する場合は、[URL エンコード (パーセントエンコード) 形式](https://en.wikipedia.org/wiki/Percent-encoding)で入力する必要があります。イベント通知のプレフィックスまたはサフィックスに使用する場合で、URL エンコード形式に変換する必要がある特殊文字の一覧については、「[セーフ文字](object-keys.md#object-key-guidelines-safe-characters)」を参照してください。

Amazon S3 コンソールでオブジェクトキー名フィルタリングを使用する通知設定を設定できます。これを行うには、AWS SDK または REST API を介して、Amazon S3 API を直接使用します。コンソール UI を使用してバケットの通知設定をセットアップする方法については、[Amazon S3 コンソールを使用したイベント通知の有効化と設定](enable-event-notifications.md) を参照してください。

Amazon S3 は、「[Amazon SQS、Amazon SNS、Lambda を使用します](how-to-enable-disable-notification-intro.md)」で説明されているように、バケットに関連付けられている *notification* サブリソースに通知設定を XML 形式で保存します。`Filter` XML 構造を使用して、オブジェクトキー名のプレフィックスまたはサフィックスでフィルタして通知のルールを定義します。`Filter` XML 構造の詳細については、*Amazon Simple Storage Service API リファレンス*の [PUT Bucket 通知](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTnotification.html) を参照してください。

`Filter` を使用する通知設定では、プレフィックスの重複、サフィックスの重複、またはプレフィックスとサフィックスの重複があるフィルタリングルールを定義できません。以下のセクションでは、オブジェクトキー名フィルタリングを使用した有効な通知設定の例を示します。プレフィックス/サフィックスが重複しているために無効である通知設定の例も示します。

**Topics**
+ [オブジェクトキー名によるフィルタ処理を使用した有効な通知設定の例](#notification-how-to-filtering-example-valid)
+ [無効なプレフィックスやサフィックスの重複がある通知設定の例。](#notification-how-to-filtering-examples-invalid)

## オブジェクトキー名によるフィルタ処理を使用した有効な通知設定の例
<a name="notification-how-to-filtering-example-valid"></a>

次の通知設定には、Amazon SQS キューを識別するキュー設定が含まれており、これにより Amazon S3 は `s3:ObjectCreated:Put` タイプのイベントを発行できます。イベントは、`images/` のプレフィックスと `jpg` サフィックスの付いたオブジェクトがバケットに PUT されるたびに発行されます。

```
<NotificationConfiguration>
  <QueueConfiguration>
      <Id>1</Id>
      <Filter>
          <S3Key>
              <FilterRule>
                  <Name>prefix</Name>
                  <Value>images/</Value>
              </FilterRule>
              <FilterRule>
                  <Name>suffix</Name>
                  <Value>jpg</Value>
              </FilterRule>
          </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:s3notificationqueue</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

次の通知設定には、複数の重複していないプレフィックスがあります。この設定では、`images/` フォルダ内の PUT リクエストの通知を queue−A に送信し、`logs/` フォルダ内の PUT リクエストの通知を queue−B に送信するように定義しています。

```
<NotificationConfiguration>
  <QueueConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-A</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
  <QueueConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>logs/</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <Queue>arn:aws:sqs:us-west-2:444455556666:sqs-queue-B</Queue>
     <Event>s3:ObjectCreated:Put</Event>
  </QueueConfiguration>
</NotificationConfiguration>
```

次の通知設定には、複数の重複していないサフィックスがあります。この設定では、バケットに新しく追加される `.jpg` イメージは Lambda の cloud−function−A によって処理され、新しく追加される `.png` イメージは cloud−function−B によって処理されるように定義されています。`.png` と `.jpg` は、末尾の 1 文字が同じであっても、重複していると見なされません。文字列が両方のサフィックスで終わる可能性がある場合には、2 つのサフィックスは、重複していると見なされます。文字列が `.png` と `.jpg` の両方で終わることはないので、この設定例の 2 つのサフィックスは重複していません。

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

`Filter` を使用する通知設定では、同じイベントタイプのプレフィックスが重複するフィルタリングルールを定義できません。重複しないサフィックスと一緒に使用される重複するプレフィックスがある場合にのみ、そうすることができます。次の設定例は、プレフィックスは重複しており、サフィックスは重複していないオブジェクトがどのように別々の場所に送られるかを示しています。

```
<NotificationConfiguration>
  <CloudFunctionConfiguration>
     <Id>1</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.jpg</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-A</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
  <CloudFunctionConfiguration>
     <Id>2</Id>
     <Filter>
            <S3Key>
                <FilterRule>
                    <Name>prefix</Name>
                    <Value>images</Value>
                </FilterRule>
                <FilterRule>
                    <Name>suffix</Name>
                    <Value>.png</Value>
                </FilterRule>
            </S3Key>
     </Filter>
     <CloudFunction>arn:aws:lambda:us-west-2:444455556666:cloud-function-B</CloudFunction>
     <Event>s3:ObjectCreated:Put</Event>
  </CloudFunctionConfiguration>
</NotificationConfiguration>
```

## 無効なプレフィックスやサフィックスの重複がある通知設定の例。
<a name="notification-how-to-filtering-examples-invalid"></a>

ほとんどの場合、`Filter` を使用する通知構成では、同じイベントタイプのプレフィックス、サフィックス、またはプレフィックスとサフィックスの組み合わせが重複するフィルタのルールを定義できません。サフィックスが重複していなければ、プレフィックスが重複していても問題ありません。例については、[オブジェクトキー名のフィルタリングを使用したイベント通知の設定](#notification-how-to-filtering) を参照してください。

イベントタイプが異なれば、重複しているオブジェクトキー名フィルタを使用できます。例えば、`image/` イベントタイプにプレフィックス `ObjectCreated:Put` と `image/` イベントタイプにプレフィックス `ObjectRemoved:*` を使用する通知設定を作成できます。

Amazon S3 コンソールまたは API の使用時に、同じイベントタイプに対して名前が重複する無効なフィルタを使用する通知設定を保存しようとすると、エラーが発生します。このセクションでは、重複する名前のフィルタにより、無効である通知設定の例を示します。

既存の通知構成ルールには、他のプレフィックスとサフィックスとそれぞれ一致するデフォルトのプレフィックスとサフィックスがあると想定されます。次の通知設定は、重複するプレフィックスがあるために無効です。具体的には、ルートプレフィックスが他のプレフィックスと重複します。この例のように、プレフィックスではなくサフィックスを使用するのも true です。ルートサフィックスが他のサフィックスと重複します。

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-notification-two</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>             
</NotificationConfiguration>
```

次の通知設定は、重複するサフィックスがあるために無効です。文字列が両方のサフィックスで終わる可能性がある場合には、2 つのサフィックスは、重複していると見なされます。文字列は `jpg` と`pg` で終わることができます。したがって、サフィックスは重なり合います。プレフィックスについても同様です。文字列が両方のプレフィックスで始まる可能性があれば、2 つのプレフィックスは重複していると見なされます。

```
 <NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>pg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration
```

次の通知設定は、重複するプレフィックスとサフィックスがあるために無効です。

```
<NotificationConfiguration>
     <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-one</Topic>
         <Event>s3:ObjectCreated:*</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>prefix</Name>
                     <Value>images</Value>
                 </FilterRule>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
    <TopicConfiguration>
         <Topic>arn:aws:sns:us-west-2:444455556666:sns-topic-two</Topic>
         <Event>s3:ObjectCreated:Put</Event>
         <Filter>
             <S3Key>
                 <FilterRule>
                     <Name>suffix</Name>
                     <Value>jpg</Value>
                 </FilterRule>
            </S3Key>
        </Filter>
    </TopicConfiguration>
</NotificationConfiguration>
```

# イベントメッセージの構造
<a name="notification-content-structure"></a>

Amazon S3 がイベントを発行するために送信する通知メッセージは JSON 形式です。

イベント通知の設定に関する一般的な概要と手順については、[Amazon S3 イベント通知](EventNotifications.md) を参照してください。

次の例は、イベント通知 JSON 構造体の*バージョン 2.1* を示します。Amazon S3 は、このイベント構造体の*バージョン 2.1 *、* 2.2 *、* 2.3 *を使用します。Amazon S3 は、クロスリージョンレプリケーションイベント通知にバージョン 2.2 を使用します。S3 ライフサイクル、S3 Intelligent−Tiering、オブジェクト ACL、オブジェクトのタグ付け、オブジェクトの復元削除イベントにバージョン 2.3 を使用します。これらのバージョンには、これらのオペレーションに固有の追加情報が含まれています。バージョン 2.2 および 2.3 は、バージョン 2.1 と互換性があり、Amazon S3 が現在すべてのイベント通知タイプで使用されています。

```
{  
   "Records":[  
      {  
         "eventVersion":"2.1",
         "eventSource":"aws:s3",
         "awsRegion":"us-west-2",
         "eventTime":"The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z) when Amazon S3 finished processing the request",
         "eventName":"The event type",
         "userIdentity":{  
            "principalId":"The unique ID of the IAM resource that caused the event"
         },
         "requestParameters":{  
            "sourceIPAddress":"The IP address where the request came from"
         },
         "responseElements":{  
            "x-amz-request-id":"The Amazon S3 generated request ID",
            "x-amz-id-2":"The Amazon S3 host that processed the request"
         },
         "s3":{  
            "s3SchemaVersion":"1.0",
            "configurationId":"The ID found in the bucket notification configuration",
            "bucket":{  
               "name":"The name of the bucket, for example, amzn-s3-demo-bucket",
               "ownerIdentity":{  
                  "principalId":"The Amazon retail customer ID of the bucket owner"
               },
               "arn":"The bucket Amazon Resource Name (ARN)"
            },
            "object":{  
               "key":"The object key name",
               "size":"The object size in bytes (as a number)",
               "eTag":"The object entity tag (ETag)",
               "versionId":"The object version if the bucket is versioning-enabled; null or not present if the bucket isn't versioning-enabled",
               "sequencer": "A string representation of a hexadecimal value used to determine event sequence; only used with PUT and DELETE requests"
            }
         },
         "glacierEventData": {
            "restoreEventData": {
               "lifecycleRestorationExpiryTime": "The time, in ISO-8601 format (for example, 1970-01-01T00:00:00.000Z), when the temporary copy of the restored object expires",
               "lifecycleRestoreStorageClass": "The source storage class for restored objects"
            }
         }
      }
   ]
}
```

イベントメッセージ構造について、以下の点に注意してください。
+ `eventVersion` 形式でメジャーおよびマイナーバージョンを含む `major` キーの値。`minor`

  Amazon S3 が、後方互換性のないイベント構造に変更を加えた場合、メジャーバージョンは増分されます。これには、すでに存在する JSON フィールドの削除や、フィールドのコンテンツの表現方法 (日付形式など) の変更が含まれます。

  Amazon S3 が、イベント構造に新しいフィールドを追加した場合、マイナーバージョンは増分されます。これは、既存のイベントの一部またはすべてに対して新しい情報が提供された場合に発生します。これは、新しく導入されたイベントタイプでのみ新しい情報が提供されている場合にも発生します。イベント構造の新しいマイナーバージョンとの互換性を維持するため、アプリケーションでは新しいフィールドを無視することをお勧めします。

  新しいイベントタイプが導入されても、イベントの構造が変更されていない場合、イベントのバージョンは変更されません。

  アプリケーションがイベント構造を正しく解析できるようにするため、メジャーバージョン番号が同等かどうかの比較を行うことをお勧めします。アプリケーションで想定されるフィールドが存在することを確認するため、マイナーバージョンが同等以上かを比較することをお勧めします。
+ `eventName` キー値は[イベント通知タイプ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/notification-how-to-event-types-and-destinations.html)のリストを参照しますが、`s3:` プレフィックスが含まれていません。
+ `userIdentity` キー値は、イベントの原因となった AWS Identity and Access Management (IAM) リソース (ユーザー、ロール、グループなど) の一意の ID を参照します。各 IAM 識別プレフィクス (AIDA、AROA、AGPA など) の定義については、「*IAM ユーザーガイド*」の「[一意の識別子](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html##identifiers-unique-ids)」を参照してください。
+ `responseElements` キー値は、AWS サポート のサポートによってリクエストを追跡する場合に役立ちます。`x-amz-request-id` と `x-amz-id-2` のどちらも、Amazon S3 が個々のリクエストを追跡するのに役立ちます。これらの値は、イベントを開始するリクエストへの応答として Amazon S3 が返す値と同じです。したがって、これらの値を使用してイベントをリクエストに一致させることができます。
+ `s3` キー値は、イベントに関与したバケットとオブジェクトに関する情報を提供します。オブジェクトのキー名の値は URL エンコードされます。例えば、`red flower.jpg` は `red+flower.jpg` になります。(Amazon S3 は、レスポンスのコンテンツタイプとして「`application/x-www-form-urlencoded`」を返します。)

  `ownerIdentity` キー値は、バケット所有者の Amazon 小売 (Amazon.com) 顧客 ID に対応します。この ID 値は使用されなくなり、下位互換性のためにのみ維持されます。
+ イベントのシーケンスを決定する方法の 1 つとして、`sequencer` キー値があります。イベントが発生した順序でイベント通知が届く保証はありません。ただし、オブジェクト (`PUT` リクエスト) を作成するイベントからの通知と削除オブジェクトは `sequencer` を含みます。この値を使用して、特定のオブジェクトキーのイベントの順序を決定できます。

  同じオブジェクトキーに対する 2 つのイベント通知の `sequencer` の文字列を比較すると、`sequencer` の 16 進値が大きいほうのイベント通知が後に発生したイベントであることがわかります。イベント通知を使用して Amazon S3 オブジェクトの別のデータベースまたはインデックスを維持している場合は、イベント通知を処理するたびに `sequencer` の値を比較し、保存することを推奨します。

  次の点に注意してください。
  + 複数のオブジェクトキーのイベントの順序を決定するために `sequencer` キー値を使用することはできません。
  + `sequencer` 文字列の長さは異なる場合があります。これらの値を比較するには、まず短い値の左側に 0 を挿入してから、辞書式比較を行います。
+ `glacierEventData` キー値は `s3:ObjectRestore:Completed` イベントに対してのみ表示されます。
+ `restoreEventData` キー値には、復元リクエストに関連する属性が含まれます。
+ `replicationEventData` キー値は、レプリケーションイベントに対してのみ表示されます。
+ `intelligentTieringEventData` キー値は S3 Intelligent−Tiering イベントでのみ表示されます。
+ `lifecycleEventData` キー値は S3 ライフサイクルの移行イベントでのみ表示されます。

## メッセージの例
<a name="notification-content-structure-examples"></a>

Amazon S3 イベント通知メッセージの例を次に示します。

**Amazon S3 テストメッセージ**  
バケットにイベント通知を設定すると、Amazon S3 は次のようなテストメッセージを送信します。

```
1. {  
2.    "Service":"Amazon S3",
3.    "Event":"s3:TestEvent",
4.    "Time":"2014-10-13T15:57:02.089Z",
5.    "Bucket":"amzn-s3-demo-bucket",
6.    "RequestId":"5582815E1AEA5ADF",
7.    "HostId":"8cLeGAmw098X5cv4Zkwcmo8vvZa3eH3eKxsPzbB9wrR+YstdA6Knx4Ip8EXAMPLE"
8. }
```

**注記**  
`s3:TestEvent` メッセージは、通常の S3 イベント通知とは異なる形式を使用します。前述の `Records` 配列構造を使用する他のイベント通知とは異なり、テストイベントは直接フィールドを含む簡略化された形式を使用します。イベント処理を実装する際は、コードが両方のメッセージ形式を区別し、適切に処理できることを確認してください。

**`PUT` リクエストを使用してオブジェクトが作成された場合のメッセージの例**  
次は Amazon S3 が `s3:ObjectCreated:Put` イベントを発行するために送信するメッセージの例です。

```
 1. {  
 2.    "Records":[  
 3.       {  
 4.          "eventVersion":"2.1",
 5.          "eventSource":"aws:s3",
 6.          "awsRegion":"us-west-2",
 7.          "eventTime":"1970-01-01T00:00:00.000Z",
 8.          "eventName":"ObjectCreated:Put",
 9.          "userIdentity":{  
10.             "principalId":"AIDAJDPLRKLG7UEXAMPLE"
11.          },
12.          "requestParameters":{  
13.             "sourceIPAddress":"172.16.0.1"
14.          },
15.          "responseElements":{  
16.             "x-amz-request-id":"C3D13FE58DE4C810",
17.             "x-amz-id-2":"FMyUVURIY8/IgAtTv8xRjskZQpcIZ9KG4V5Wp6S7S/JRWeUWerMUE5JgHvANOjpD"
18.          },
19.          "s3":{  
20.             "s3SchemaVersion":"1.0",
21.             "configurationId":"testConfigRule",
22.             "bucket":{  
23.                "name":"amzn-s3-demo-bucket",
24.                "ownerIdentity":{  
25.                   "principalId":"A3NL1KOZZKExample"
26.                },
27.                "arn":"arn:aws:s3:::amzn-s3-demo-bucket"
28.             },
29.             "object":{  
30.                "key":"HappyFace.jpg",
31.                "size":1024,
32.                "eTag":"d41d8cd98f00b204e9800998ecf8427e",
33.                "versionId":"096fKKXTRTtl3on89fVO.nfljtsv6qko",
34.                "sequencer":"0055AED6DCD90281E5"
35.             }
36.          }
37.       }
38.    ]
39. }
```



# EventBridge の使用
<a name="EventBridge"></a>

Amazon S3 は、バケット内で特定のイベントが発生するたびに Amazon EventBridge にイベントを送信できます。他の宛先とは異なり、配信するイベントタイプを選択する必要はありません。EventBridge を有効にすると、以下のすべてのイベントが EventBridge に送信されます。EventBridge ルールを使用すると、イベントを追加のターゲットにルートできます。Amazon S3 が EventBridge に送信するイベントを以下に示します。


|  イベントタイプ |  説明  | 
| --- | --- | 
|  *オブジェクトの作成*  |  オブジェクトが作成されました。 イベントメッセージ構造の理由フィールドは、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html) などのオブジェクトの作成に使用された S3 API を示します。  | 
|  *オブジェクトが削除されました (DeleteObject)* *オブジェクトが削除されました (ライフサイクルの有効期限切れ)*  |  オブジェクトが削除されました。 S3 API コールを使用してオブジェクトを削除すると、理由フィールドが DeleteObject に設定されます。S3 ライフサイクルの有効期限切れルールによってオブジェクトを削除すると、理由フィールドがライフサイクルの有効期限切れに設定されます。詳細については、「[オブジェクトの有効期限](lifecycle-expire-general-considerations.md)」を参照してください。 バージョン管理されていないオブジェクトが削除されるか、バージョン管理されたオブジェクトが完全に削除されると、削除タイプフィールドは Permanently Deleted に設定されます。バージョン管理されたオブジェクトに対して削除マーカーが作成されると、`deletion-type` フィールドは Delete Marker Created に設定されます。詳細については、「[バージョニングが有効なバケットからのオブジェクトバージョンの削除](DeletingObjectVersions.md)」を参照してください。  | 
|  *オブジェクトの復元の開始*  |  オブジェクトの復元は、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive ストレージクラス、S3 Intelligent−Tiering アーカイブアクセス、Deep Archive アクセス階層から開始されました。詳細については、「[アーカイブされたオブジェクトの操作](archived-objects.md)」を参照してください。  | 
|  *オブジェクトの復元の完了*  |  オブジェクトの復元が完了しました。  | 
|  *オブジェクトの復元の期限切れ*  |  S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive から復元されたオブジェクトの一時コピーの有効期限切れのため削除されました。  | 
|  *オブジェクトストレージクラスの変更*  |  オブジェクトが別のストレージクラスに移行されました。詳細については、[Amazon S3 ライフサイクルを使用したオブジェクトの移行](lifecycle-transition-general-considerations.md) を参照してください。  | 
|  *オブジェクトアクセス階層が変更されました*  |  オブジェクトが S3 Intelligent−Tiering アーカイブアクセス階層または Deep Archive アクセス階層に移行されました。詳細については、[Amazon S3 Intelligent-Tiering によるストレージコストの管理](intelligent-tiering.md) を参照してください。  | 
|  *オブジェクト ACL が更新されました*  |  オブジェクトのアクセスコントロールリスト (ACL) が `PutObjectAcl` を使用して設定されました。リクエストによってオブジェクトの ACL が変更されない場合、イベントは生成されません。詳細については、[アクセスコントロールリスト (ACL) の概要](acl-overview.md) を参照してください。  | 
|  *追加されたオブジェクトタグ*  |  `PutObjectTagging` を使用して、一連のタグがオブジェクトに追加されました。詳細については、「[タグを使用したオブジェクトの分類](object-tagging.md)」を参照してください。  | 
|  *削除済みのオブジェクトタグ*  |  `DeleteObjectTagging` を使用して、すべてのタグがオブジェクトから削除されました。詳細については、「[タグを使用したオブジェクトの分類](object-tagging.md)」を参照してください。  | 

**注記**  
Amazon S3 イベントタイプを EventBridge イベントタイプにマッピングする方法の詳細については、[Amazon EventBridge のマッピングとトラブルシューティング](ev-mapping-troubleshooting.md) を参照してください。

EventBridge で Amazon S3 イベント通知を使用して、バケットでイベントが発生したときにアクションを実行するルールを記述できます。例えば、通知を送信するように設定できます。詳細については、「*Amazon EventBridge ユーザーガイド*」の「[What is EventBridge?](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)」を参照してください。

EventBridge API を使用して利用できるアクションとデータ型の詳細については、「**Amazon EventBridge API リファレンス」の「[Amazon EventBridge API Reference](https://docs.aws.amazon.com/eventbridge/latest/APIReference/Welcome.html)」を参照してください。

料金の詳細については、[Amazon EventBridge の料金](https://aws.amazon.com/eventbridge/pricing)を参照してください。

**Topics**
+ [Amazon EventBridge アクセス許可](ev-permissions.md)
+ [Amazon EventBridge を有効にします](enable-event-notifications-eventbridge.md)
+ [EventBridge イベントメッセージの構造](ev-events.md)
+ [Amazon EventBridge のマッピングとトラブルシューティング](ev-mapping-troubleshooting.md)

# Amazon EventBridge アクセス許可
<a name="ev-permissions"></a>

Amazon S3 では、Amazon EventBridge にイベントを配信するための追加のアクセス権限は必要ありません。

# Amazon EventBridge を有効にします
<a name="enable-event-notifications-eventbridge"></a>

S3 コンソール AWS Command Line Interface (AWS CLI)、または Amazon S3 REST API を使用して Amazon EventBridge を有効にできます。

**注記**  
EventBridge を有効にすると、変更が適用されるまで約 5 分かかります。

## S3 コンソールの使用
<a name="eventbridge-console"></a>

**S3 コンソールで EventBridge イベント配信を有効にします。**

1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) を開きます。

1. 左のナビゲーションペインで、**[汎用バケット]** を選択します。

1. バケットリストで、イベントを有効にするバケットの名前を選択します。

1. [**プロパティ**] を選択します。

1. **イベント通知**セクションに移動し、**Amazon EventBridge** サブセクションを見つけます。**[編集]** を選択します。

1. **このバケット内のすべてのイベント用の Amazon EventBridge に通知を送信する**の下にある **On** を選択します。

## の使用AWS CLI
<a name="eventbridge-cli"></a>

次の例では、Amazon EventBridge が有効であるバケット *`amzn-s3-demo-bucket1`* のバケット通知設定を作成します。

```
aws s3api put-bucket-notification-configuration --bucket amzn-s3-demo-bucket1 --notification-configuration='{ "EventBridgeConfiguration": {} }'
```

## REST API の使用
<a name="eventbridge-api"></a>

Amazon S3 REST API を呼び出して、バケット上で Amazon EventBridge をプログラムで有効にできます。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketNotificationConfiguration.html)」を参照してください。

次の例は、Amazon EventBridge を有効にしたバケット通知設定を作成するために使用される XML を示しています。

```
<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <EventBridgeConfiguration>
  </EventBridgeConfiguration>
</NotificationConfiguration>
```

## EventBridge ルールの作成
<a name="ev-tutorial"></a>

有効にすると、特定のタスクに対して Amazon EventBridge ルールを作成できます。例えば、オブジェクトが作成されたときに電子メール通知を送信できます。完全なチュートリアルについては、*Amazon EventBridge ユーザーガイド*の[チュートリアル: Amazon S3 オブジェクトが作成されたとき通知を送信する](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-s3-object-created-tutorial.html)を参照してください。

# EventBridge イベントメッセージの構造
<a name="ev-events"></a>

Amazon S3 がイベントを発行するために送信する通知メッセージは JSON 形式です。Amazon S3 が Amazon EventBridge にイベントを送信すると、次のフィールドが表示されます。
+ `version` – 現在、すべてのイベントで 0 (ゼロ)。
+ `id` – イベントごとに生成される UUID。
+ `detail-type` – 送信されるイベントのタイプ。イベントタイプのリスト化については、[EventBridge の使用](EventBridge.md) を参照してください。
+ `source` – イベントを発生させたサービスを識別します。
+ `account` – バケット所有者の 12 桁の AWS アカウント ID。
+ `time` – イベントが発生した時刻。
+ `region` – バケットの AWS リージョン を識別します。
+ `resources` – バケットの Amazon リソースネーム (ARN) を含む JSON 配列。
+ `detail` – イベントに関する情報を含む JSON オブジェクト。このフィールドに含めることができる内容の詳細については、「[イベントメッセージ詳細フィールド](#ev-events-detail)」を参照してください。

## イベントメッセージの構造の例
<a name="ev-events-list"></a>

Amazon EventBridge に送信できる Amazon S3 イベント通知メッセージの例を次に示します。

### オブジェクトの作成
<a name="ev-events-object-created"></a>

```
{
  "version": "0",
  "id": "17793124-05d4-b198-2fde-7ededc63b103",
  "detail-type": "Object Created",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "IYV3p45BT0ac8hjHg1houSdS1a.Mro8e",
      "sequencer": "617f08299329d189"
    },
    "request-id": "N4N7GDK58NMKJ12R",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "PutObject"
  }
}
```

### (DeleteObject を使用して) オブジェクトが削除されました
<a name="ev-events-object-deleted"></a>

```
{
  "version": "0",
  "id": "2ee9cc15-d022-99ea-1fb8-1b1bac4850f9",
  "detail-type": "Object Deleted",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "version-id": "1QW9g1Z99LUNbvaaYVpW9xDlOLU.qxgF",
      "sequencer": "617f0837b476e463"
    },
    "request-id": "0BH729840619AG5K",
    "requester": "123456789012",
    "source-ip-address": "1.2.3.4",
    "reason": "DeleteObject",
    "deletion-type": "Delete Marker Created"
  }
}
```

### (ライフサイクルの有効期限切れのため) オブジェクトが削除されました
<a name="ev-events-object-deleted-lifecycle"></a>

```
{
  "version": "0",
  "id": "ad1de317-e409-eba2-9552-30113f8d88e3",
  "detail-type": "Object Deleted",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "etag": "d41d8cd98f00b204e9800998ecf8427e",
      "version-id": "mtB0cV.jejK63XkRNceanNMC.qXPWLeK",
      "sequencer": "617b398000000000"
    },
    "request-id": "20EB74C14654DC47",
    "requester": "s3.amazonaws.com",
    "reason": "Lifecycle Expiration",
    "deletion-type": "Delete Marker Created"
  }
}
```

### オブジェクトの復元の完了
<a name="ev-events-object-restore-complete"></a>

```
{
  "version": "0",
  "id": "6924de0d-13e2-6bbf-c0c1-b903b753565e",
  "detail-type": "Object Restore Completed",
  "source": "aws.s3",
  "account": "111122223333",
  "time": "2021-11-12T00:00:00Z",
  "region": "ca-central-1",
  "resources": [
    "arn:aws:s3:::amzn-s3-demo-bucket1"
  ],
  "detail": {
    "version": "0",
    "bucket": {
      "name": "amzn-s3-demo-bucket1"
    },
    "object": {
      "key": "example-key",
      "size": 5,
      "etag": "b1946ac92492d2347c6235b4d2611184",
      "version-id": "KKsjUC1.6gIjqtvhfg5AdMI0eCePIiT3"
    },
    "request-id": "189F19CB7FB1B6A4",
    "requester": "s3.amazonaws.com",
    "restore-expiry-time": "2021-11-13T00:00:00Z",
    "source-storage-class": "GLACIER"
  }
}
```

## イベントメッセージ詳細フィールド
<a name="ev-events-detail"></a>

詳細フィールドは、イベントに関する情報のある JSON オブジェクトを含みます。詳細フィールドには、次のフィールドが存在する可能性があります。
+ `version` – 現在、すべてのイベントで 0 (ゼロ)。
+ `bucket` – イベントに関与した Amazon S3 バケットに関する情報。
+ `object` – イベントに関与した Amazon S3 オブジェクトに関する情報。
+ `request-id` – S3 レスポンスのリクエスト ID。
+ `requester` – AWS アカウント ID または AWS リクエスタのサービスプリンシパル。
+ `source-ip-address` – S3 リクエストの送信元 IP アドレス。S3 リクエストによってトリガーされたイベントにのみ存在します。
+ `reason` – **オブジェクトの作成**イベントの場合、オブジェクトの作成に使用される S3 API。[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html)、[https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html)、または [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)。**オブジェクトの削除**イベントの場合、これは、オブジェクトが S3 API コールによって削除された場合は **DeleteObject** に設定され、オブジェクトが S3 ライフサイクル有効期限切れルールによって削除された場合は**ライフサイクルの有効期限切れ**に設定されます。詳細については、「[オブジェクトの有効期限](lifecycle-expire-general-considerations.md)」を参照してください。
+ `deletion-type` – **オブジェクトの削除**イベントの場合、バージョン管理されていないオブジェクトが削除されるか、バージョン管理されたオブジェクトが完全に削除されると、これは**完全に削除**に設定されます。バージョン化したオブジェクトに削除マーカーが作成されると、これは**削除マーカーの作成**に設定されます。詳細については、「[バージョニングが有効なバケットからのオブジェクトバージョンの削除](DeletingObjectVersions.md)」を参照してください。
**注記**  
一部のオブジェクト属性 (`etag` や `size` など) は、削除マーカーが作成された場合にのみ示されます。
+ `restore-expiry-time` – **オブジェクトの復元完了**イベントの場合、オブジェクトの一時コピーが S3 から削除される時刻。詳細については、「[アーカイブされたオブジェクトの操作](archived-objects.md)」を参照してください。
+ `source-storage-class` – **オブジェクトの復元開始**および**オブジェクトの復元完了**イベントの場合の、復元されるオブジェクトのストレージクラス。詳細については、「[アーカイブされたオブジェクトの操作](archived-objects.md)」を参照してください。
+ `destination-storage-class` – **オブジェクトストレージクラスの変更**イベントの場合の、オブジェクトの新しいストレージクラス。詳細については、「[Amazon S3 ライフサイクルを使用したオブジェクトの移行](lifecycle-transition-general-considerations.md)」を参照してください。
+ `destination-access-tier` – **オブジェクトアクセス階層の変更**イベントの場合の、オブジェクトの新しいアクセス階層。詳細については、「[Amazon S3 Intelligent-Tiering によるストレージコストの管理](intelligent-tiering.md)」を参照してください。

# Amazon EventBridge のマッピングとトラブルシューティング
<a name="ev-mapping-troubleshooting"></a>

次の表では、Amazon S3 イベントタイプが Amazon EventBridge イベントタイプにどのようにマッピングされるかを説明します。


|  S3 イベントタイプ |  Amazon EventBridge の詳細タイプ  | 
| --- | --- | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPOST.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html) [https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html)  |  オブジェクトの作成  | 
|  ObjectRemoved:Delete ObjectRemoved:DeleteMarkerCreated LifecycleExpiration:Delete LifecycleExpiration:DeleteMarkerCreated  |  削除したオブジェクト  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html)  |  オブジェクトの復元の開始  | 
|  ObjectRestore:Completed  |  オブジェクト復元の完了  | 
|  ObjectRestore:Delete  |  オブジェクト復元の有効期限切れ  | 
|  LifecycleTransition  |  オブジェクトストレージクラスの変更  | 
|  IntelligentTiering  |  オブジェクトアクセス階層が変更されました  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html)  |  追加されたオブジェクトタグ  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjectTagging.html)  |  削除済みのオブジェクトタグ  | 
|  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectAcl.html)  |  オブジェクト ACL が更新されました  | 

## Amazon EventBridge のトラブルシューティング
<a name="ev-troubleshooting"></a>

EventBridge のトラブルシューティング方法の詳細については、**「Amazon EventBridge ユーザーガイド」の「[Troubleshooting Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-troubleshooting.html)を参照してください 。