

# リージョン内およびリージョン間でのオブジェクトのレプリケート
<a name="replication"></a>

レプリケーションを使用すると、Amazon S3 バケット間でオブジェクトを自動で非同期的にコピーできます。オブジェクトのレプリケーション用に設定されたバケットは、同じ AWS アカウント が所有することも、異なるアカウントが所有することもできます。オブジェクトは、単一または複数の送信先バケットにレプリケートできます。送信先バケットは、異なる AWS リージョン でも、ソースバケットと同じリージョン内でも配置することができます。

レプリケーションには、*ライブレプリケーション*と*オンデマンドレプリケーション*の 2 種類があります。
+ **ライブレプリケーション** – レプリケート元のバケットに書き込まれる際に、**新しく作成されたオブジェクトまたは更新されたオブジェクトを自動的にレプリケートする**には、ライブレプリケーションを使用します。ライブレプリケーションでは、レプリケーションを設定する前にバケットに存在していたオブジェクトはレプリケートされません。レプリケーションを設定する前に存在していたオブジェクトをレプリケートするには、オンデマンドレプリケーションを使用します。
+ **オンデマンドレプリケーション** — レプリケート元のバケットから 1 つ以上のレプリケート先バケットにオンデマンドで**既存のオブジェクトをレプリケートする**には、S3 バッチレプリケーションを使用します。既存のオブジェクトのレプリケーションの詳細については、「[S3 バッチレプリケーションを使用する状況](#batch-replication-scenario)」を参照してください。

ライブレプリケーションには、クロスリージョンレプリケーション (CRR) と同一リージョンレプリケーション (SRR) の 2 つの形式があります。****
+ **クロスリージョンレプリケーション (CRR)** - 異なる AWS リージョン 内の Amazon S3 バケット間でオブジェクトをレプリケートするには、CRR を使用します。CRR の詳細については、「[クロスリージョンレプリケーションを使用する場合](#crr-scenario)」を参照してください。
+ **同一リージョンレプリケーション (SRR)** - 同じ AWS リージョン内の Amazon S3 バケット間でオブジェクトをコピーするには、SRR を使用します。SRR の詳細については、「[同一リージョンレプリケーションを使用する時](#srr-scenario)」を参照してください。

**Topics**
+ [

## レプリケーションを使用する理由
](#replication-scenario)
+ [

## クロスリージョンレプリケーションを使用する場合
](#crr-scenario)
+ [

## 同一リージョンレプリケーションを使用する時
](#srr-scenario)
+ [

## 双方向レプリケーションを使用する場合
](#two-way-replication-scenario)
+ [

## S3 バッチレプリケーションを使用する状況
](#batch-replication-scenario)
+ [

## ワークロードの要件とライブレプリケーション
](#replication-workload-requirements)
+ [

# Amazon S3 がレプリケートするもの
](replication-what-is-isnot-replicated.md)
+ [

# レプリケーションの要件と考慮事項
](replication-requirements.md)
+ [

# ライブレプリケーションの設定の概要
](replication-how-setup.md)
+ [

# ライブレプリケーションの管理または一時停止
](disable-replication.md)
+ [

# バッチレプリケーションを使用した既存のオブジェクトのレプリケーション
](s3-batch-replication-batch.md)
+ [

# レプリケーションのトラブルシューティング
](replication-troubleshoot.md)
+ [

# メトリクス、イベント通知、ステータスによるレプリケーションのモニタリング
](replication-metrics.md)

## レプリケーションを使用する理由
<a name="replication-scenario"></a>

レプリケーションは、以下の場合に役立ちます。
+ **メタデータを保持しながらオブジェクトをレプリケートする** — レプリケーションを使用すると、元のオブジェクトの作成時刻やバージョン ID などのすべてのメタデータを保持するオブジェクトのコピーを作成できます。この機能は、レプリカがレプリケート元オブジェクトと同じであることを確認する必要がある場合に重要です。
+ **別のストレージクラスにオブジェクトをレプリケートする** – レプリケーションを使用して、オブジェクトを S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive、またはレプリケート先バケットの別のストレージクラスに直接配置できます。データを同じストレージクラスにレプリケートし、レプリケート先バケットのライフサイクル設定を使用して、オブジェクトが古くなるにつれてより古いストレージクラスに移動させることもできます。
+ **オブジェクトのコピーを別の所有権で保持する** — レプリケート元オブジェクトの所有者に関係なく、レプリカの所有権をレプリケート先バケット所有者である AWS アカウント に変更するように Simple Storage Service (Amazon S3) に指示できます。これは *所有者オーバーライド* オプションと呼ばれます。このオプションを使用すると、オブジェクトのレプリカへのアクセスを制限できます。
+ **複数の AWS リージョンに格納されたオブジェクトを保持する** – 異なる AWS リージョン間で複数のレプリケート先バケットを設定して、データの保存場所を地理的に異なる場所にします。この機能は、特定のコンプライアンス要件を満たすのに役立つことがあります。
+ **15 分以内にオブジェクトをレプリケート** — S3 Replication Time Control (S3 RTC) を使用して、予測可能な時間枠内で、同じ AWS リージョンまたは異なるリージョン間でデータをレプリケートできます。S3 RTC は、Simple Storage Service (Amazon S3) 内に保存されている新規オブジェクトの 99.99% を 15 分以内にレプリケートします (サービスレベルアグリーメントに基づく)。詳細については、「[S3 Replication Time Control (S3 RTC)を使用してコンプライアンス要件を満たす](replication-time-control.md)」を参照してください。
**注記**  
S3 RTC はバッチレプリケーションには適用されません。バッチレプリケーションはオンデマンドレプリケーションジョブで、S3 バッチオペレーションで追跡できます。詳細については、「[ジョブステータスと完了レポートの追跡](batch-ops-job-status.md)」を参照してください。
+ **バケットの同期、既存オブジェクトのレプリケート、以前に失敗したオブジェクトまたはレプリケートされたオブジェクトのレプリケート** - バケットを同期して既存のオブジェクトをレプリケートするには、オンデマンドレプリケーションアクションとしてバッチレプリケーションを使用します。バッチレプリケーション使用時の詳細については、「[S3 バッチレプリケーションを使用する状況](#batch-replication-scenario)」を参照してください。
+ **オブジェクトをレプリケートし、別のAWS リージョン のバケットにフェイルオーバーする** - データレプリケーション中にバケット間ですべてのメタデータとオブジェクトを同期させるために、Amazon S3 マルチリージョンアクセスポイントのフェイルオーバーコントロールを構成する前に双方向レプリケーションルールを使用します。双方向のレプリケーションルールにより、トラフィックがフェイルオーバーする S3 バケットにデータが書き込まれると、そのデータがソースバケットにレプリケートされます。

## クロスリージョンレプリケーションを使用する場合
<a name="crr-scenario"></a>

異なる AWS リージョン 内の Amazon S3 バケット間でオブジェクトをコピーするには、S3 クロスリージョンレプリケーション (CRR) を使用します。CRR は、次の場合に役立ちます。
+ **コンプライアンス要件を満たす** — Simple Storage Service (Amazon S3) はデフォルトで地理的に離れた複数のアベイラビリティーゾーンにデータを保存しますが、コンプライアンス要件によっては、さらに離れた場所にデータを保存することが要求される場合があります。これらの要件を満たすには、遠く離れた AWS リージョン にデータをレプリケートするクロスリージョンレプリケーションを使用します。
+ **レイテンシーを最小にする** — ユーザーが地理的に離れた 2 つの場所にいる場合、ユーザーにより近い AWS リージョン にオブジェクトのコピーを保持することで、オブジェクトにアクセスする際のレイテンシーを最小にすることができます。
+ **オペレーション効率を向上する** — コンピューティングクラスターが 2 つの異なる AWS リージョン にあり、同じオブジェクトセットを分析している場合、これら 2 つのリージョンにオブジェクトのコピーを保持できます。

## 同一リージョンレプリケーションを使用する時
<a name="srr-scenario"></a>

同一 AWS リージョン 内の Amazon S3 バケット間でオブジェクトをコピーするには、同一リージョンレプリケーション (SRR) を使用します。SRR は、次の場合に役立ちます。
+ **ログを 1 つのバケットに集約する** — 複数のバケットまたは複数のアカウントにログを保存している場合、ログを 1 つのリージョン内バケットに簡単にレプリケートできます。そうすることで、ログを一箇所でよりシンプルに処理できます。
+ **本番稼働用アカウントとテストアカウント間のライブレプリケーションを設定する** — お客様またはお客様のユーザーが保持する本稼働用アカウントとテストアカウントで同じデータを使用する場合、オブジェクトメタデータを維持しながら、これらの複数のアカウント間でオブジェクトをレプリケートできます。
+ **データ主権法に準拠する** — データの複数のコピーを特定のリージョン内の複数の異なる AWS アカウントに保存することを義務付けられる場合があります。同一リージョンレプリケーションを使用すると、コンプライアンス規制によりデータを国外に持ち出すことが許可されていない場合に、重要なデータを自動的にレプリケートできます。

## 双方向レプリケーションを使用する場合
<a name="two-way-replication-scenario"></a>
+ **複数の AWS リージョン で共有するデータセットを構築する** — レプリカ変更の同期により、オブジェクトのアクセスコントロールリスト (ACL)、オブジェクトタグ、またはオブジェクトロックなどのメタデータの変更を、レプリケーションオブジェクトで簡単に複製することができます。この双方向のレプリケーションは、すべてのオブジェクトとオブジェクトメタデータの変更を同期させたい場合に重要です。同一または異なる AWS リージョン にある 2 つ以上のバケット間で双方向レプリケーションを実行する場合、新規または既存のレプリケーションルールで[レプリカ変更の同期を有効にする](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-for-metadata-changes.html#enabling-replication-for-metadata-changes)ことができます。
+ **フェイルオーバー中にデータをリージョン間で同期させる** — マルチリージョンアクセスポイントから直接 S3 クロスリージョンレプリケーション (CRR) で双方向レプリケーションルールを設定することで、AWS リージョン 間のバケットのデータを同期させることができます。フェイルオーバーを開始するタイミングについて十分な情報に基づいた決定を行うために、S3 レプリケーションメトリクスを有効にして Amazon CloudWatch 内、S3 Replication Time Control (S3 RTC) 内、またはマルチリージョンアクセスポイントからのレプリケーションをモニタリングすることもできます。
+ **アプリケーションの可用性を高める** — リージョンのトラフィックが中断した場合でも、双方向のレプリケーションルールを使用して、データレプリケーション中にすべてのメタデータとオブジェクトをバケット間で同期させることができます。

## S3 バッチレプリケーションを使用する状況
<a name="batch-replication-scenario"></a>

バッチレプリケーションは、オンデマンドオプションとして、既存のオブジェクトを異なるバケットにレプリケートします。ライブレプリケーションとは異なり、これらのジョブは必要に応じて実行できます。バッチレプリケーションは、以下の場合に役立ちます。
+ **既存のオブジェクトのレプリケーション** — バッチレプリケーションを使用して、同じリージョンレプリケーションまたはクロスリージョンレプリケーションが設定される前に、バケットに追加されたオブジェクトをレプリケートできます。
+ **以前にレプリケートに失敗したオブジェクトをレプリケートする** - バッチレプリケーションジョブをフィルタリングして、レプリケーションステータスが **[FAILED]** (失敗) のオブジェクトをレプリケートできます。
+ **すでにレプリケートされたオブジェクトをレプリケートする** — データの複数のコピーを別々の AWS アカウントまたは AWS リージョンに保存することを義務付けられる場合があります。バッチレプリケーションでは、新規に追加された宛先に既存のオブジェクトをレプリケートできます。
+ **レプリケーションルールから作成されたオブジェクトのレプリカをレプリケートする** — レプリケーション設定では、レプリケート先バケットにオブジェクトのレプリカが作成されます。オブジェクトのレプリカは、バッチレプリケーションでのみレプリケートできます。

## ワークロードの要件とライブレプリケーション
<a name="replication-workload-requirements"></a>

ワークロードの要件に応じて、一部のライブレプリケーションタイプは他のレプリケーションよりもユースケースに適していることがあります。次の表を使用して、使用するレプリケーションのタイプと、ワークロードで S3 Replication Time Control (S3 RTC) を使用するかどうかを判断します。S3 RTC は、Amazon S3 内に保存されている新規オブジェクトの 99.99% を 15 分以内にレプリケートします (サービスレベルアグリーメント (SLA) に基づく)。詳細については、「[S3 Replication Time Control (S3 RTC)を使用してコンプライアンス要件を満たす](replication-time-control.md)」を参照してください。


| ワークロードの要件 | S3 RTC (15 分の SLA) | クロスリージョンレプリケーション (CRR) | 同一リージョンレプリケーション (SRR) | 
| --- | --- | --- | --- | 
| 異なる AWS アカウント 間でオブジェクトをレプリケートする | 可能 | はい | はい | 
| 24～48 時間以内に同じ AWS リージョン 内のオブジェクトをレプリケートする (SLA に基づかない） | いいえ | なし | あり | 
| 24～48 時間以内に異なる AWS リージョン 内のオブジェクトをレプリケートする (SLA に基づかない） | いいえ | あり | なし | 
|  予測可能なレプリケーション時間: SLA に基づき、15 分以内にオブジェクトの 99.9% をレプリケートする  | はい | なし | いいえ | 

# Amazon S3 がレプリケートするもの
<a name="replication-what-is-isnot-replicated"></a>

Amazon S3 は、レプリケーションに設定されているバケット内の特定のアイテムのみをレプリケートします。

**Topics**
+ [

## レプリケーション設定でレプリケートされるものは何ですか?
](#replication-what-is-replicated)
+ [

## レプリケーション設定でレプリケートされないものは何ですか?
](#replication-what-is-not-replicated)

## レプリケーション設定でレプリケートされるものは何ですか?
<a name="replication-what-is-replicated"></a>

デフォルトで、Simple Storage Service (Amazon S3) は以下をレプリケートします。
+ レプリケーション設定の追加後に作成されたオブジェクト。
+ 暗号化されていないオブジェクト 
+ ユーザー提供のキー (SSE-C) を使用して暗号化されたオブジェクト、Amazon S3 マネージドキー (SSE-S3) の下で保管時に暗号化されたオブジェクト、および AWS Key Management Service (SSE-KMS) に保存されている KMS キーで暗号化されたオブジェクト。詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。
+ レプリケート元オブジェクトからレプリカへのオブジェクトメタデータ。レプリカからレプリケート元オブジェクトへのメタデータのレプリケーションについては、[レプリカの変更同期によるメタデータ変更のレプリケート](replication-for-metadata-changes.md)を参照してください。
+ バケット所有者がオブジェクトとアクセスコントロールリスト (ACL) の読み取り権限を持つ、レプリケート元バケットのオブジェクトのみをレプリケートします。

  リソース所有者の詳細については「[Amazon S3 のバケットとオブジェクトの所有権](access-policy-language-overview.md#about-resource-owner)」を参照してください。
+ レプリケート元バケットとレプリケート先バケットが同じアカウントによって所有されていない場合のレプリカの所有権の変更を Amazon S3 に指示しない限り、オブジェクト ACL は更新されます。

  詳細については、「[レプリカ所有者の変更](replication-change-owner.md)」を参照してください。

  Amazon S3 が 2 つの ACL を同期させるまでしばらく時間がかかる可能性があります。オーナーシップのこの変更は、バケットにレプリケーション設定を追加した後に作成されたオブジェクトにのみ適用されます。
+  オブジェクトタグ、存在する場合。
+ S3 オブジェクトロックの保持情報 (ある場合)。

  Amazon S3 で保持情報が適用されているオブジェクトをレプリケートすると、それらと同じ保持制御がレプリカに適用され、レプリケート先バケットに設定されているデフォルトの保持期間は上書きされます。レプリケート元バケット内のオブジェクトに保持制御が適用されておらず、デフォルトの保持期間が設定されているレプリケート先バケットにレプリケートすると、レプリケート先バケットのデフォルトの保持期間がオブジェクトのレプリカに適用されます。詳細については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください。

### 削除オペレーションがレプリケーションに与える影響
<a name="replication-delete-op"></a>

レプリケート元バケットからオブジェクトを削除すると、デフォルトで次のアクションが実行されます。
+ オブジェクトバージョン ID を指定せずに DELETE リクエストを行った場合、Amazon S3 は削除マーカーを追加します。Amazon S3 では、削除マーカーを次のように扱います。
  + 最新バージョンのレプリケーション設定を使用している (すなわち、レプリケーション設定ルールで`Filter`要素を指定している) 場合、Amazon S3 は削除マーカーをレプリケートしません。ただし、タグベース以外のルールには*削除マーカーレプリケーション*を追加できます。詳細については、「[バケット間での削除マーカーのレプリケーション](delete-marker-replication.md)」を参照してください。
  + `Filter`要素を指定しない場合、Amazon S3 はレプリケーション設定がバージョン V1 であるとみなし、ユーザーアクションの結果として生じた削除マーカーをレプリケートします。ただし、ライフサイクルアクションによって Amazon S3 がオブジェクトを削除した場合、削除マーカーはレプリケート先のバケットにはレプリケートされません。
+ `DELETE` リクエストで削除するオブジェクトバージョン ID を指定した場合、Amazon S3 はレプリケート元バケット内のそのオブジェクトバージョンを削除します。しかし、レプリケート先バケット内でその削除をレプリケートすることはありません。これは、レプリケート先バケットからは、同じオブジェクトバージョンを削除しないことを意味します。これは悪意のある削除からデータを保護します。

## レプリケーション設定でレプリケートされないものは何ですか?
<a name="replication-what-is-not-replicated"></a>

デフォルトで、Simple Storage Service (Amazon S3) は以下をレプリケートしません。
+ 別のレプリケーションルールによって作成されたレプリカである、レプリケート元バケットのオブジェクト。例えば、バケット A がレプリケート元でバケット B がレプリケート先であるレプリケーションを設定するとします。ここで、バケット B をレプリケート元、バケット C をレプリケート先とする別のレプリケーション設定を追加したとします。この場合、バケット A のオブジェクトのレプリカであるバケット B のオブジェクトは、バケット C にレプリケートされません。

  レプリカであるオブジェクトをレプリケートするには、バッチレプリケーションを使用します。バッチレプリケーションの設定の詳細については、「[既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。
+ 既に別のレプリケート先にレプリケートされている、レプリケート元バケット内のオブジェクト。例えば、既存のレプリケーション設定でレプリケート先バケットを変更した場合、Simple Storage Service (Amazon S3) がそのオブジェクトを再度レプリケートすることはありません。

  以前にレプリケートされたオブジェクトをレプリケートするには、バッチレプリケーションを使用します。バッチレプリケーションの設定の詳細については、「[既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。
+ バッチレプリケーションでは、レプリケート先バケットからオブジェクトのバージョン ID で削除されたオブジェクトの再レプリケーションはサポートされません。これらのオブジェクトを再レプリケートするには、バッチコピージョブを使用してソースオブジェクトを所定の場所でコピーします。これらのオブジェクトを所定の場所でコピーすると、レプリケート元バケットにオブジェクトの新しいバージョンが作成され、レプリケート先へのレプリケーションが自動的に開始されます。バッチコピーの使用方法については、「[バッチ操作を使用してオブジェクトをコピーする例](batch-ops-examples-copy.md)」を参照してください。
+ デフォルトでは、異なる AWS アカウント からレプリケートする場合、レプリケート元バケットに追加された削除マーカーはレプリケートされません。

  削除マーカーの複製方法については、「[バケット間での削除マーカーのレプリケーション](delete-marker-replication.md)」を参照してください。
+ S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive、S3 Intelligent-Tiering Archive Access、または S3 Intelligent-Tiering Deep Archive Access のストレージクラスまたはストレージ階層に保存されているオブジェクト。これらのオブジェクトは、復元して別のストレージクラスにコピーするまで複製できません。

  S3 Glacier Flexible Retrieval と S3 Glacier Deep Archive の詳細については、「[ほとんどアクセスすることのないオブジェクトのストレージクラス](storage-class-intro.md#sc-glacier)」を参照してください。

  S3 Intelligent-Tiering の詳細については、「[Amazon S3 Intelligent-Tiering によるストレージコストの管理](intelligent-tiering.md)」を参照してください。
+ バケット所有者が十分な許可を持っていないレプリケート元バケット内のオブジェクト。

  オブジェクト所有者がバケット所有者にアクセス許可を付与する方法の詳細については、「[バケット所有者はフルコントロール権限を持ちながら、オブジェクトをアップロードするためのクロスアカウントアクセス許可を付与する](example-bucket-policies.md#example-bucket-policies-acl-2)」を参照してください。
+ バケットレベルのサブリソースの更新 

  たとえば、ライフサイクル設定を変更したり、レプリケート元バケットに通知設定を追加した場合、これらの変更はレプリケート先バケットには適用されません。この機能により、レプリケート元バケットとレプリケート先バケットで異なる設定を指定できます。
+ ライフサイクル設定によって実行されたアクション。

  たとえば、ライフサイクル設定がレプリケート元バケットでのみ有効である場合、Amazon S3 は失効したオブジェクトに削除マーカーを作成しますが、その削除マーカーはレプリケートされません。同じライフサイクル設定をレプリケート元バケットとレプリケート先バケットの両方に適用する場合は、両方で同じライフサイクル設定を有効にします。ライフサイクル設定についての詳細は、[オブジェクトのライフサイクルの管理](object-lifecycle-mgmt.md) を参照してください。
+ ライブレプリケーションでタグベースのレプリケーションルールを使用する場合、`PutObject` オペレーションで一致するレプリケーションルールタグを新しいオブジェクトにタグ付けする必要があります。そうしないと、オブジェクトはレプリケートされません。`PutObject` オペレーション後にオブジェクトにタグが付けされると、それらのオブジェクトもレプリケートされません。

  `PutObject` オペレーション後にタグ付けされたオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用する必要があります。バッチレプリケーションの詳細については、「[既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

# レプリケーションの要件と考慮事項
<a name="replication-requirements"></a>

Amazon S3 レプリケーションでは以下が必要です。
+ ソースバケットの所有者は、自分のアカウントに対して送信元と送信先の AWS リージョン を有効にする必要があります。レプリケート先のバケット所有者は、自分のアカウントでレプリケート先リージョンを有効にしておく必要があります。

  AWS リージョンを有効または無効にする方法の詳細については、「AWS アカウント管理 リファレンスガイド」の「[アカウントで使用できる AWS リージョンの指定](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-regions.html)」を参照してください。**
+ レプリケート元とレプリケート先の両方のバケットで、バージョニングを有効にする必要があります。バージョニングの詳細については、「[S3 バージョニングによる複数のバージョンのオブジェクトの保持](Versioning.md)」を参照してください。
+ Amazon S3 には、お客様に代わってレプリケート元バケットから送信先バケットにオブジェクトをレプリケートするためのアクセス許可が必要です。これらのアクセス許可の詳細については、「[ライブレプリケーションのアクセス許可の設定](setting-repl-config-perm-overview.md)」を参照してください。
+ ソースバケット所有者がバケット内のオブジェクトを所有していない場合、オブジェクト所有者は、オブジェクトアクセスコントロールリスト (ACL) を使用して、バケット所有者に `READ` 権限と `READ_ACP` 権限を付与する必要があります。詳細については、「[アクセスコントロールリスト (ACL) の概要](acl-overview.md)」を参照してください。
+ レプリケート元バケットで S3 オブジェクトロックが有効になっている場合は、レプリケート先バケットでも S3 オブジェクトロックが有効になっている必要があります。

  Object Lock が有効になっているバケットでレプリケーションを有効にするには、AWS Command Line Interface、REST API、または AWS SDK を使用する必要があります。一般的な的な情報については、「[S3 Object Lock を使用したオブジェクトのロック](object-lock.md)」を参照してください
**注記**  
レプリケーションを設定するために使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの新しいアクセス許可を付与する必要があります。2 つの新しいアクセス許可は `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのロールは要件を満たしています。詳細については、「[ライブレプリケーションのアクセス許可の設定](setting-repl-config-perm-overview.md)」を参照してください。

詳細については、「[ライブレプリケーションの設定の概要](replication-how-setup.md)」を参照してください。

異なる AWS アカウントがレプリケート元バケットとレプリケート先バケットを所有する*クロスアカウントのシナリオ*でレプリケーション設定を設定している場合は、次の追加の要件が適用されます。
+ レプリケート先バケットの所有者は、バケットポリシーを使用してレプリケート元バケット所有者にオブジェクトをレプリケートするためのアクセス許可を付与する必要があります。詳細については、「[(オプション) ステップ 3: レプリケーション元とレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合の許可の付与](setting-repl-config-perm-overview.md#setting-repl-config-crossacct)」を参照してください。
+ レプリケート先バケットをリクエスタ支払いバケットとして設定することはできません。詳細については、「[ストレージの転送と使用にリクエスタ支払い汎用バケットを使用する](RequesterPaysBuckets.md)」を参照してください。

## レプリケーションの考慮事項
<a name="replication-and-other-bucket-configs"></a>

レプリケーションを設定する前に、以下を考慮してください。

**Topics**
+ [

### ライフサイクル設定とオブジェクトのレプリカ
](#replica-and-lifecycle)
+ [

### バージョニング設定とレプリケーション設定
](#replication-and-versioning)
+ [

### S3 Intelligent-Tiering での S3 レプリケーションの使用
](#replication-and-intelligent-tiering)
+ [

### ログ設定とレプリケーション設定
](#replication-and-logging)
+ [

### CRR とレプリケート先のリージョン
](#replication-and-dest-region)
+ [

### S3 バッチレプリケーション
](#considerations-batch-replication)
+ [

### S3 Replication Time Control
](#considerations-RTC)

### ライフサイクル設定とオブジェクトのレプリカ
<a name="replica-and-lifecycle"></a>

Amazon S3 がオブジェクトをレプリケートするのにかかる時間は、オブジェクトのサイズによって異なります。大きなオブジェクトの場合、数時間かかることもあります。レプリカがレプリケート先バケットで使用可能になるまでにはしばらく時間がかかります。レプリカの作成には、ソースバケットに対応するオブジェクトを作成するのと同じくらいの時間がかかります。レプリケート先バケットでライフサイクル設定が有効な場合、ライフサイクルルールでは、レプリケート先バケットでレプリカが使用可能になった時間ではなく、オブジェクトの元の作成時間が優先されることに注意してください。

レプリケーション設定では、バケットのバージョニングを有効にする必要があります。バケットのバージョニングを有効にする際、以下の点に注意してください。
+ オブジェクトの有効期限ライフサイクル設定がある場合は、バージョニングを有効にした後に `NonCurrentVersionExpiration` ポリシーを追加して、バージョニングを有効にする前と同じ完全な削除動作を維持する必要があります。
+ 移行ライフサイクル設定がある場合は、バージョニングを有効にした後に、`NonCurrentVersionTransition` ポリシーの追加を検討する必要があります。

### バージョニング設定とレプリケーション設定
<a name="replication-and-versioning"></a>

レプリケート元バケットとレプリケート先バケットはどちらも、バケットにレプリケーションを設定するときに、バージョニングが有効になっている必要があります。レプリケート元バケットとレプリケート先バケットの両方でバージョニングを有効にして、レプリケート元バケットでレプリケーションを設定した後は、次の問題が発生します。
+ レプリケート元バケットのバージョニングを無効にしようとすると、Amazon S3 はエラーを返します。レプリケート元バケットのバージョニングを無効にする前に、レプリケーション設定を削除する必要があります。
+ レプリケート先バケットのバージョニングを無効にすると、レプリケーションは失敗します。レプリケート元オブジェクトのレプリケーションステータスは`FAILED`です。

### S3 Intelligent-Tiering での S3 レプリケーションの使用
<a name="replication-and-intelligent-tiering"></a>

S3 Intelligent-Tiering は、最もコスト効率の高いアクセス階層にデータを自動的に移動することで、ストレージコストを最適化するように設計されたストレージクラスです。オブジェクトのモニタリングとオートメーションに対して発生する少額の月額料金で、S3 Intelligent-Tiering はアクセスパターンをモニタリングし、あまりアクセスされていないオブジェクトをより低コストのアクセス階層へ自動的に移動させることができます。

S3 バッチレプリケーションを使用して S3 Intelligent-Tiering に保存されたオブジェクトをレプリケートしたり、[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_UploadPartCopy.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html) を呼び出したりすると、アクセスが構成されます。これらの場合、コピーやレプリケーションオペレーションのソースオブジェクトは上位の階層に移動されます。

S3 Intelligent-Tiering の詳細については、「[Amazon S3 Intelligent-Tiering によるストレージコストの管理](intelligent-tiering.md)」を参照してください。

### ログ設定とレプリケーション設定
<a name="replication-and-logging"></a>

レプリケーションが有効になっているバケットに Amazon S3 がログを送信している場合、ログオブジェクトをレプリケートします。

[サーバーアクセスログ](ServerLogs.md)または [AWS CloudTrail ログ](cloudtrail-logging.md)をレプリケート元やレプリケート先のバケットで有効にすると、Amazon S3 はレプリケーション関連のリクエストをログに含めます。たとえば、Amazon S3 はレプリケートする各オブジェクトをログに記録します。

### CRR とレプリケート先のリージョン
<a name="replication-and-dest-region"></a>

異なる AWS リージョン内の S3 バケット間でオブジェクトをコピーするには、Amazon S3 クロスリージョンレプリケーション (CRR) を使用します。レプリケート先バケットのリージョンは、ビジネスニーズまたはコストを考慮して選択することができます。例えば、リージョン間のデータ転送料金は、選択したリージョンによって異なります。

例えば、レプリケート元バケットのリージョンとして米国東部 (バージニア北部) (`us-east-1`) を選択したとします。米国西部 (オレゴン) (`us-west-2`) をレプリケート先バケットのリージョンとして選択した場合、米国東部 (オハイオ) (`us-east-2`) リージョンを選択した場合より多く支払うことになります。料金の詳細については、[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)の「データ転送の料金」を参照してください。

同一リージョンレプリケーション (SRR) に関連するデータ転送料金はありません。

### S3 バッチレプリケーション
<a name="considerations-batch-replication"></a>

バッチレプリケーションの考慮事項については、「[S3 バッチレプリケーションに関する考慮事項](s3-batch-replication-batch.md#batch-replication-considerations)」を参照してください。

### S3 Replication Time Control
<a name="considerations-RTC"></a>

S3 Replication Time Control (S3 RTC) のベストプラクティスと考慮事項については、「[S3 RTC のベストプラクティスとガイドライン](replication-time-control.md#rtc-best-practices)」を参照してください。

# ライブレプリケーションの設定の概要
<a name="replication-how-setup"></a>

**注記**  
レプリケーションをセットアップする前に存在していたオブジェクトは、自動的にレプリケートされません。つまり、Amazon S3 はオブジェクトをさかのぼってレプリケートすることはしません。レプリケーション設定の前に作成されたオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用します。バッチレプリケーション設定については、「[既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

ライブレプリケーション (同一リージョンレプリケーション (SRR) またはクロスリージョンレプリケーション (CRR)) を有効にするには、レプリケート元のバケットにレプリケーション設定を追加します。Amazon S3 は、この設定に基づいてオブジェクトをレプリケートします。レプリケーション設定では、以下の項目を指定する必要があります。
+ **レプリケート先バケット** – Simple Storage Service (Amazon S3) でオブジェクトをレプリケートする先のバケット。
+ **レプリケートするオブジェクト** – レプリケート元バケットまたはオブジェクトのサブセット内のすべてのオブジェクトをレプリケートできます。サブセットを特定するには、[キー名のプレフィックス](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#keyprefix)、1 つ以上のオブジェクトタグ、またはその両方を設定で指定します。

  たとえば、キー名のプレフィックス `Tax/` の オブジェクトのみをレプリケートするようにレプリケーションルールを設定した場合、Amazon S3 は `Tax/doc1` や `Tax/doc2` などのキーを持つオブジェクトをレプリケートします。しかし、`Legal/doc3` というキーを持つオブジェクトはレプリケートしません。プレフィックスと 1 つ以上のタグの両方を指定した場合、Simple Storage Service (Amazon S3) は特定のキープレフィックスとタグを持つオブジェクトのみをレプリケートします。
+ **AWS Identity and Access Management (IAM) ロール** – Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするこの IAM ロールを引き受けます。IAM ロールの作成と許可の詳細については、「[ライブレプリケーションのアクセス許可の設定](setting-repl-config-perm-overview.md)」を参照してください。

これらの最小要件に加えて、以下のオプションを選択できます。
+ **レプリカストレージクラス** – デフォルトでは、Simple Storage Service (Amazon S3) はレプリケート元オブジェクトと同じストレージクラスを使用して、オブジェクトのレプリカを保存します。レプリカには別のストレージクラスを指定できます。
+ **レプリカの所有権** – Simple Storage Service (Amazon S3) は、オブジェクトレプリカが引き続きレプリケート元オブジェクトの所有者によって所有されていると想定します。そのため、オブジェクトをレプリケートするときに、対応するオブジェクトアクセスコントロールリスト (ACL) または S3 オブジェクトの所有権の設定もレプリケートします。レプリケート元とレプリケート先のバケットが異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有者を変更するようにレプリケーションを設定できます。詳細については、「[レプリカ所有者の変更](replication-change-owner.md)」を参照してください。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST APIを使用してレプリケーションを設定できます。レプリケーションの設定方法の詳細なチュートリアルについては、「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」を参照してください。

 Amazon S3 は、レプリケーションルールの設定をサポートする REST API を提供します。詳細については、*Amazon Simple Storage Service API リファレンス*の次のトピックを参照してください。
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html) 
+  [https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketReplication.html) 

**Topics**
+ [

# レプリケーション設定ファイル要素
](replication-add-config.md)
+ [

# ライブレプリケーションのアクセス許可の設定
](setting-repl-config-perm-overview.md)
+ [

# ライブレプリケーションの設定例
](replication-example-walkthroughs.md)

# レプリケーション設定ファイル要素
<a name="replication-add-config"></a>

Amazon S3 はレプリケーション設定を XML 形式で保存します。Amazon S3 REST API を使用してプログラムでレプリケーションを設定する場合は、この XML ファイルでレプリケーション設定のさまざまな要素を指定します。AWS Command Line Interface (AWS CLI) を使用してレプリケーションを設定する場合は、JSON 形式を使用してレプリケーション設定を指定します。JSON の例については、「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」のチュートリアルを参照してください。

**注記**  
レプリケーション設定 XML フォーマットの最新バージョンは V2 です。XML V2 レプリケーション設定は、ルールの `<Filter>` 要素と S3 Replication Time Control (S3 RTC) を指定するルールを含むものです。  
レプリケーション設定のバージョンを確認するには、`GetBucketReplication` API オペレーションを使用します。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)」を参照してください。  
Amazon S3 は、後方互換性のために引き続き XML V1 のレプリケーション設定フォーマットをサポートしています。XML V1 のレプリケーション設定フォーマットを使用していた場合、後方互換性については「[後方互換性に関する考慮事項](#replication-backward-compat-considerations)」を参照してください。

レプリケーション設定 XML ファイルで、次の例に示すように AWS Identity and Access Management (IAM) ロールと 1 つ以上のルールを指定する必要があります。

```
<ReplicationConfiguration>
    <Role>IAM-role-ARN</Role>
    <Rule>
        ...
    </Rule>
    <Rule>
         ... 
    </Rule>
     ...
</ReplicationConfiguration>
```

Amazon S3 はユーザーの許可なしにオブジェクトをレプリケートすることはできません。レプリケーション設定で指定した IAM ロールを使用して Amazon S3 にアクセス許可を付与します。Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするこの IAM ロールを引き受けます。まずは必要なアクセス許可を IAM ロールに付与する必要があります。これらのアクセス許可の管理の詳細については、「[ライブレプリケーションのアクセス許可の設定](setting-repl-config-perm-overview.md)」を参照してください。

次のシナリオでは、レプリケーション設定にルールを 1 つのみ追加します。
+ すべてのオブジェクトをレプリケートします。
+ 1 つのオブジェクトのサブセットのみをレプリケートします。ルールにフィルターを追加して、オブジェクトのサブセットを特定します。フィルターでは、ルールが適用されるオブジェクトのサブセットを特定するために、オブジェクトキープレフィックス、タグ、またはその両方の組み合わせを指定します。フィルターは、指定した値と完全に一致するオブジェクトをターゲットにします。

オブジェクトの異なるサブセットをレプリケートする場合は、レプリケーション設定に複数のルールを追加します。各ルールでは、異なるサブセットを選択するフィルターを指定します。例えば、`tax/` または `document/` のいずれかのキープレフィックスを持つオブジェクトをレプリケートするとします。このためには、`tax/` キープレフィックスフィルターを指定するルールと、`document/` キープレフィックスを指定するもう 1 つのルールの 2 つのルールを追加します。オブジェクトキーのプレフィックスの詳細については、「[プレフィックスを使用してオブジェクトを整理する](using-prefixes.md)」を参照してください。

ここで示している各セクションで、さらに詳しく学習できます。

**Topics**
+ [

## 基本的なルールの設定
](#replication-config-min-rule-config)
+ [

## オプション: フィルターの指定
](#replication-config-optional-filter)
+ [

## 追加のレプリケート先の設定
](#replication-config-optional-dest-config)
+ [

## レプリケーション設定の例
](#replication-config-example-configs)
+ [

## 後方互換性に関する考慮事項
](#replication-backward-compat-considerations)

## 基本的なルールの設定
<a name="replication-config-min-rule-config"></a>

各ルールには、そのルールのステータスと優先順位を含める必要があります。また、ルールに削除マーカーをレプリケートするかどうかを指定する必要もあります。
+ `<Status>` 要素は、`Enabled` または `Disabled` の値を使用して、ルールが有効か無効かを示します。ルールが無効な場合、Amazon S3 はそのルールで指定されているアクションを実行しません。
+ `<Priority>` 要素は、複数のレプリケーションルールが競合する際に優先するルールを示します。Simple Storage Service (Amazon S3) は、すべてのレプリケーションルールに従ってオブジェクトをレプリケートしようと試みます。ただし、同じレプリケート先バケットを持つルールが 2 つ以上ある場合は、優先度が最も高いルールに従ってオブジェクトがレプリケートされます。数値が大きいほど、優先度が高くなります。
+ `<DeleteMarkerReplication>` 要素は値 `Enabled` または `Disabled` を使用して削除マーカーをレプリケートするかどうかを示します。

`<Destination>` 要素の設定では、Amazon S3 にオブジェクトをレプリケートするレプリケート先バケットの名前を指定する必要があります。

次の例は、V2 ルールの最小要件を示しています。Amazon S3 は、下位互換性のために、引き続き XML V1 形式をサポートしています。 を参照してください。詳細については、「[後方互換性に関する考慮事項](#replication-backward-compat-considerations)」を参照してください。

```
...
    <Rule>
        <ID>Rule-1</ID>
        <Status>Enabled-or-Disabled</Status>
        <Filter>
            <Prefix></Prefix>   
        </Filter>
        <Priority>integer</Priority>
        <DeleteMarkerReplication>
           <Status>Enabled-or-Disabled</Status>
        </DeleteMarkerReplication>
        <Destination>        
           <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket> 
        </Destination>    
    </Rule>
    <Rule>
         ...
    </Rule>
     ...
...
```

他の設定オプションも指定できます。たとえば、コピー元オブジェクトのストレージクラスとは異なるクラスを、オブジェクトレプリカのストレージクラスで使用するように選択できます。

## オプション: フィルターの指定
<a name="replication-config-optional-filter"></a>

ルールが適用されるオブジェクトのサブセットを選択するには、オプションのフィルタを追加します。オブジェクトキープレフィックス、オブジェクトタグ、またはその両方の組み合わせでフィルターできます。キープレフィックスとオブジェクトタグの両方でフィルターする場合、Simple Storage Service (Amazon S3) は論理 `AND` 演算子を使用してフィルターを組み合わせます。つまり、このルールは、特定のキープレフィックスと特定のタグの両方を持つオブジェクトのサブセットに適用されます。

**オブジェクトのキープレフィックスに基づいたフィルタリング**  
オブジェクトキープレフィックスに基づくフィルタを使用してルールを指定するには、次の XML を使用します。1 つのルールに指定できるプレフィックスは 1 つだけです。

```
<Rule>
    ...
    <Filter>
        <Prefix>key-prefix</Prefix>   
    </Filter>
    ...
</Rule>
...
```

**オブジェクトタグに基づいたフィルタリング**  
オブジェクトタグに基づくフィルタを使用してルールを指定するには、次の XML を使用します。複数のオブジェクトタグを指定できます。

```
<Rule>
    ...
    <Filter>
        <And>
            <Tag>
                <Key>key1</Key>
                <Value>value1</Value>
            </Tag>
            <Tag>
                <Key>key2</Key>
                <Value>value2</Value>
            </Tag>
             ...
        </And>
    </Filter>
    ...
</Rule>
...
```

**キープレフィックスとオブジェクトタグを使用したフィルタリング**  
キープレフィックスとオブジェクトタグの組み合わせでルールフィルターを指定するには、次の XML を使用します。これらのフィルターは、`<And>` 親要素でラップします。Amazon S3 は、これらのフィルターを結合する論理 `AND` オペレーションを実行します。つまり、このルールは、特定のキープレフィックスと特定のタグの両方を持つオブジェクトのサブセットに適用されます。

```
<Rule>
    ...
    <Filter>
        <And>
            <Prefix>key-prefix</Prefix>
            <Tag>
                <Key>key1</Key>
                <Value>value1</Value>
            </Tag>
            <Tag>
                <Key>key2</Key>
                <Value>value2</Value>
            </Tag>
             ...
    </Filter>
    ...
</Rule>
...
```

**注記**  
空の `<Filter>` 要素を持つルールを指定すると、ルールはバケット内にある全オブジェクトに適用されます。
ライブレプリケーションでタグベースのレプリケーションルールを使用する場合、`PutObject` オペレーションで一致するレプリケーションルールタグを新しいオブジェクトにタグ付けする必要があります。そうしないと、オブジェクトはレプリケートされません。`PutObject` オペレーション後にオブジェクトにタグが付けされると、それらのオブジェクトもレプリケートされません。  
`PutObject` オペレーション後にタグ付けされたオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用する必要があります。バッチレプリケーションの詳細については、「[既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

## 追加のレプリケート先の設定
<a name="replication-config-optional-dest-config"></a>

レプリケート先設定では、Amazon S3 がオブジェクトをレプリケートするバケットを指定します。1 つのレプリケート元バケットから 1 つまたは複数のレプリケート先バケットに、オブジェクトをレプリケートするように設定できます。

```
...
<Destination>        
    <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
</Destination>
...
```

次のオプションを`<Destination>`要素に追加できます。

**Topics**
+ [

### ストレージクラスを指定する
](#storage-class-configuration)
+ [

### 複数の宛先バケットを追加する
](#multiple-destination-buckets-configuration)
+ [

### 複数のレプリケート先バケットを持つレプリケーションルールごとに異なるパラメータを指定します。
](#replication-rule-configuration)
+ [

### レプリカの所有者を変更する
](#replica-ownership-configuration)
+ [

### S3 レプリケーション時間コントロールの有効化
](#rtc-configuration)
+ [

### AWS KMS を使用してサーバー側の暗号化で作成されたオブジェクトをレプリケートする
](#sse-kms-configuration)

### ストレージクラスを指定する
<a name="storage-class-configuration"></a>

オブジェクトレプリカのストレージクラスを指定できます。デフォルトでは、Amazon S3 は、レプリケート元オブジェクトのストレージクラスを使用してオブジェクトレプリカを作成します。以下に例を示します。

```
...
<Destination>
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
       <StorageClass>storage-class</StorageClass>
</Destination>
...
```

### 複数の宛先バケットを追加する
<a name="multiple-destination-buckets-configuration"></a>

次のように、単一のレプリケーション設定に複数のレプリケート先バケットを追加できます。

```
...
<Rule>
    <ID>Rule-1</ID>
    <Status>Enabled-or-Disabled</Status>
    <Priority>integer</Priority>
    <DeleteMarkerReplication>
       <Status>Enabled-or-Disabled</Status>
    </DeleteMarkerReplication>
    <Destination>        
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket1</Bucket> 
    </Destination>    
</Rule>
<Rule>
    <ID>Rule-2</ID>
    <Status>Enabled-or-Disabled</Status>
    <Priority>integer</Priority>
    <DeleteMarkerReplication>
       <Status>Enabled-or-Disabled</Status>
    </DeleteMarkerReplication>
    <Destination>        
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket2</Bucket> 
    </Destination>    
</Rule>
...
```

### 複数のレプリケート先バケットを持つレプリケーションルールごとに異なるパラメータを指定します。
<a name="replication-rule-configuration"></a>

1 つのレプリケーション設定に複数のレプリケート先バケットを追加する場合、次のように、レプリケーションルールごとに異なるパラメータを指定できます。

```
...
<Rule>
    <ID>Rule-1</ID>
    <Status>Enabled-or-Disabled</Status>
    <Priority>integer</Priority>
    <DeleteMarkerReplication>
       <Status>Disabled</Status>
    </DeleteMarkerReplication>
      <Metrics>
    <Status>Enabled</Status>
    <EventThreshold>
      <Minutes>15</Minutes> 
    </EventThreshold>
  </Metrics>
    <Destination>        
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket1</Bucket> 
    </Destination>    
</Rule>
<Rule>
    <ID>Rule-2</ID>
    <Status>Enabled-or-Disabled</Status>
    <Priority>integer</Priority>
    <DeleteMarkerReplication>
       <Status>Enabled</Status>
    </DeleteMarkerReplication>
      <Metrics>
    <Status>Enabled</Status>
    <EventThreshold>
      <Minutes>15</Minutes> 
    </EventThreshold>
  </Metrics>
  <ReplicationTime>
    <Status>Enabled</Status>
    <Time>
      <Minutes>15</Minutes>
    </Time>
  </ReplicationTime>
    <Destination>        
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket2</Bucket> 
    </Destination>    
</Rule>
...
```

### レプリカの所有者を変更する
<a name="replica-ownership-configuration"></a>

レプリケート元とレプリケート先のバケットが同じアカウントの所有でない場合は、レプリケート先のバケットを所有する AWS アカウント にレプリカの所有権を変更できます。そのためには、`<AccessControlTranslation>` 要素を追加します。この要素は値 `Destination` を取ります。

```
...
<Destination>
   <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
   <Account>destination-bucket-owner-account-id</Account>
   <AccessControlTranslation>
       <Owner>Destination</Owner>
   </AccessControlTranslation>
</Destination>
...
```

この要素をレプリケーション設定に `<AccessControlTranslation>` 要素を追加しない場合は、レプリカはレプリケート元オブジェクトを所有する AWS アカウントの所有になります。詳細については、「[レプリカ所有者の変更](replication-change-owner.md)」を参照してください。

### S3 レプリケーション時間コントロールの有効化
<a name="rtc-configuration"></a>

S3 Replication Time Control (S3 RTC) はレプリケーション設定で有効にできます。S3 RTC は、ほとんどのオブジェクトを数秒でレプリケートし、オブジェクトの 99.99% を 15 分以内にレプリケートします (サービスレベルアグリーメントに基づく)。

**注記**  
`<EventThreshold>` と `<Time>` 要素で受け入れられるのは、`<Minutes>15</Minutes>` の値のみです。

```
...
<Destination>
  <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
  <Metrics>
    <Status>Enabled</Status>
    <EventThreshold>
      <Minutes>15</Minutes> 
    </EventThreshold>
  </Metrics>
  <ReplicationTime>
    <Status>Enabled</Status>
    <Time>
      <Minutes>15</Minutes>
    </Time>
  </ReplicationTime>
</Destination>
...
```

詳細については、「[S3 Replication Time Control (S3 RTC)を使用してコンプライアンス要件を満たす](replication-time-control.md)」を参照してください。API の例については、「Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketReplication.html)」を参照してください。**

### AWS KMS を使用してサーバー側の暗号化で作成されたオブジェクトをレプリケートする
<a name="sse-kms-configuration"></a>

レプリケート元バケットには、AWS Key Management Service (AWS KMS) (SSE-KMS) キーを使用したサーバー側の暗号化で作成されたオブジェクトが含まれている場合があります。デフォルトでは、Amazon S3 はこれらのオブジェクトをレプリケートしません。オプションで、これらのオブジェクトをレプリケートするように Amazon S3 に指示できます。これを行うには、まず、`<SourceSelectionCriteria>` 要素を追加することで、この機能を明示的にオプトインします。次に、オブジェクトレプリカの暗号化に使用するための AWS KMS key (レプリケート先バケットの AWS リージョン 用) を入力します。次の例は、これらの要素を指定する方法を示しています。

```
...
<SourceSelectionCriteria>
  <SseKmsEncryptedObjects>
    <Status>Enabled</Status>
  </SseKmsEncryptedObjects>
</SourceSelectionCriteria>
<Destination>
  <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
  <EncryptionConfiguration>
    <ReplicaKmsKeyID>AWS KMS key ID to use for encrypting object replicas</ReplicaKmsKeyID>
  </EncryptionConfiguration>
</Destination>
...
```

詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。

## レプリケーション設定の例
<a name="replication-config-example-configs"></a>

開始するには、必要に応じて次のレプリケーション設定例をバケットに追加します。

**重要**  
レプリケーション設定をバケットに追加するには、`iam:PassRole` アクセス許可が必要です。このアクセス許可により、Amazon S3 レプリケーションアクセス許可を付与する IAM ロールを渡すことができます。IAM ロールを指定するには、レプリケーション設定 XML の `<Role>` 要素で使用されている Amazon リソースネーム (ARN) を指定します。詳細については、*IAM ユーザーガイド*の「[AWS のサービス サービスにロールを渡すアクセス権限をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。

**Example 1: ルールが 1 つのレプリケーション設定**  
次の基本的なレプリケーション設定では 1 つのルールを指定します。このルールは、Amazon S3 が引き受けることができる IAM ロールと、オブジェクトレプリカ用のレプリケート先バケットを指定します。`Enabled` の `<Status>` 要素の値は、ルールが有効であることを示します。  

```
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Role>arn:aws:iam::account-id:role/role-name</Role>
  <Rule>
    <Status>Enabled</Status>

    <Destination>
      <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
    </Destination>
  </Rule>
</ReplicationConfiguration>
```
レプリケートするオブジェクトのサブセットを選択するために、フィルタを追加できます。次の設定では、フィルタはオブジェクトキープレフィックスを指定します。このルールは、キー名に `Tax/` というプレフィックスが付いているオブジェクトに適用されます。  

```
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Role>arn:aws:iam::account-id:role/role-name</Role>
  <Rule>
    <Status>Enabled</Status>
    <Priority>1</Priority>
    <DeleteMarkerReplication>
       <Status>string</Status>
    </DeleteMarkerReplication>

    <Filter>
       <Prefix>Tax/</Prefix>
    </Filter>

    <Destination>
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
    </Destination>

  </Rule>
</ReplicationConfiguration>
```
`<Filter>` 要素を指定した場合、`<Priority>` 要素と `<DeleteMarkerReplication>` 要素も含める必要があります。この例では、`<Priority>` 要素に設定した値は、ルールが 1 つしかないため、関係ありません。  
次の設定では、フィルタは 1 つのプレフィックスと 2 つのタグを指定します。このルールは、指定されたキープレフィックスとタグを持つオブジェクトのサブセットに適用されます。具体的には、キー名に `Tax/` プレフィックスがあり、2 つの指定されたオブジェクトタグがあるオブジェクトに適用されます。この例では、`<Priority>` 要素に設定した値は、ルールが 1 つしかないため、関係ありません。  

```
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Role>arn:aws:iam::account-id:role/role-name</Role>
  <Rule>
    <Status>Enabled</Status>
    <Priority>1</Priority>
    <DeleteMarkerReplication>
       <Status>string</Status>
    </DeleteMarkerReplication>

    <Filter>
        <And>
          <Prefix>Tax/</Prefix>
          <Tag>
             <Tag>
                <Key>tagA</Key>
                <Value>valueA</Value>
             </Tag>
          </Tag>
          <Tag>
             <Tag>
                <Key>tagB</Key>
                <Value>valueB</Value>
             </Tag>
          </Tag>
       </And>

    </Filter>

    <Destination>
        <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
    </Destination>

  </Rule>
</ReplicationConfiguration>
```
オブジェクトレプリカに対し、次のようにストレージクラスを指定できます。  

```
<?xml version="1.0" encoding="UTF-8"?>

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Role>arn:aws:iam::account-id:role/role-name</Role>
  <Rule>
    <Status>Enabled</Status>
    <Destination>
       <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
       <StorageClass>storage-class</StorageClass>
    </Destination>
  </Rule>
</ReplicationConfiguration>
```
Amazon S3 がサポートする任意のストレージクラスを指定できます。

**Example 2: ルールが 2 つのレプリケーション設定**  

**Example**  
次のレプリケーション設定では、ルールで以下を指定します。  
+ 各ルールは異なるキープレフィックスでフィルタリングするため、各ルールはオブジェクトの個別のサブセットに適用されます。例えば、Simple Storage Service (Amazon S3) は、キー名 *`Tax/doc1.pdf`* と *`Project/project1.txt`* を持つオブジェクトをレプリケートしますが、キー名 *`PersonalDoc/documentA`* のオブジェクトはレプリケートされません。
+ どちらのルールも `<Priority>` 要素の値を指定しますが、ルールの優先度は 2 つの異なるオブジェクトセットに適用されるため、関係ありません。次の例は、ルール優先順位が適用されたときに何が起こるかを示しています。
+ 2 番目のルールは、オブジェクトレプリカの S3 標準 – IA ストレージクラスを指定します。Amazon S3 は、これらのオブジェクトレプリカに対して指定されたストレージクラスを使用します。
   

```
<?xml version="1.0" encoding="UTF-8"?>

<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  <Role>arn:aws:iam::account-id:role/role-name</Role>
  <Rule>
    <Status>Enabled</Status>
    <Priority>1</Priority>
    <DeleteMarkerReplication>
       <Status>string</Status>
    </DeleteMarkerReplication>
    <Filter>
        <Prefix>Tax</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Destination>
      <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
    </Destination>
     ...
  </Rule>
 <Rule>
    <Status>Enabled</Status>
    <Priority>2</Priority>
    <DeleteMarkerReplication>
       <Status>string</Status>
    </DeleteMarkerReplication>
    <Filter>
        <Prefix>Project</Prefix>
    </Filter>
    <Status>Enabled</Status>
    <Destination>
      <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
     <StorageClass>STANDARD_IA</StorageClass>
    </Destination>
     ...
  </Rule>


</ReplicationConfiguration>
```

**Example 3: プレフィックスが重複している 2 つのルールを使用したレプリケーション設定**  <a name="overlap-rule-example"></a>
この設定では、2 つのルールで、重複するキープレフィックス、*`star`* および *`starship`* を持つフィルターを指定します。どちらのルールも、キー名が *`starship-x`* のオブジェクトに適用されます。この場合、Amazon S3 はルールの優先順位を使用して適用するルールを決定します。数値が大きいほど、優先度が高くなります。  

```
<ReplicationConfiguration>

  <Role>arn:aws:iam::account-id:role/role-name</Role>

  <Rule>
    <Status>Enabled</Status>
    <Priority>1</Priority>
    <DeleteMarkerReplication>
       <Status>string</Status>
    </DeleteMarkerReplication>
    <Filter>
        <Prefix>star</Prefix>
    </Filter>
    <Destination>
      <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
    </Destination>
  </Rule>
  <Rule>
    <Status>Enabled</Status>
    <Priority>2</Priority>
    <DeleteMarkerReplication>
       <Status>string</Status>
    </DeleteMarkerReplication>
    <Filter>
        <Prefix>starship</Prefix>
    </Filter>    
    <Destination>
      <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
    </Destination>
  </Rule>
</ReplicationConfiguration>
```

**Example 4: チュートリアル例**  
チュートリアルについては、「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」を参照してください。

レプリケーション設定の XML 構造の詳細については、*Amazon Simple Storage Service API リファレンス*の「[PutBucketReplication](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTreplication.html)」を参照してください。

## 後方互換性に関する考慮事項
<a name="replication-backward-compat-considerations"></a>

レプリケーション設定 XML フォーマットの最新バージョンは V2 です。XML V2 レプリケーション設定は、ルールの `<Filter>` 要素と S3 Replication Time Control (S3 RTC) を指定するルールを含むものです。

レプリケーション設定のバージョンを確認するには、`GetBucketReplication` API オペレーションを使用します。詳細については、「**Amazon Simple Storage Service API リファレンス」の「[https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html](https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketReplication.html)」を参照してください。

Amazon S3 は、後方互換性のために引き続き XML V1 のレプリケーション設定フォーマットをサポートしています。XML V1 のレプリケーション設定フォーマットを使用していた場合は、後方互換性に影響を及ぼす以下の点を考慮してください。
+ レプリケーション設定 XML V2 フォーマットでは、ルールに `<Filter>` 要素が含まれています。`<Filter>` 要素を使用すると、オブジェクトキープレフィックス、タグ、またはその両方に基づいてオブジェクトフィルタを指定して、ルールが適用されるオブジェクトを範囲指定できます。レプリケーション設定 XML V1 フォーマットは、キープレフィックスのみに基づくフィルタリングをサポートしていました。この場合は、`<Prefix>` 要素を `<Rule>` 要素の子要素として直接追加します。以下に例を示します。

  ```
  <?xml version="1.0" encoding="UTF-8"?>
  <ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <Role>arn:aws:iam::account-id:role/role-name</Role>
    <Rule>
      <Status>Enabled</Status>
      <Prefix>key-prefix</Prefix>
      <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
      </Destination>
  
    </Rule>
  </ReplicationConfiguration>
  ```
+ オブジェクトのバージョン ID を指定せずにレプリケート元バケットからオブジェクトを削除すると、Amazon S3 は削除マーカーを追加します。V1 のレプリケーション設定 XML V1 フォーマットを使用した場合、Amazon S3 はユーザーアクションから発生した削除マーカーをレプリケートします。つまり、Amazon S3 はユーザーがオブジェクトを削除した場合にのみ、削除マーカーをレプリケートします。期限切れのオブジェクトが (ライフサイクルアクションの一部として) Amazon S3 によって削除された場合、Amazon S3 は削除マーカーをレプリケートしません。

  レプリケーション設定 XML V2 フォーマットでは、タグベース以外のルールのために削除マーカーレプリケーションを有効にすることができます。詳細については、「[バケット間での削除マーカーのレプリケーション](delete-marker-replication.md)」を参照してください。

 

# ライブレプリケーションのアクセス許可の設定
<a name="setting-repl-config-perm-overview"></a>

Amazon S3 でライブレプリケーションを設定する場合は、次のように必要なアクセス許可を取得します。
+ レプリケーションルールを作成する AWS Identity and Access Management (IAM) プリンシパル (ユーザーまたはロール) に、特定のアクセス許可のセットを付与する必要があります。
+ Simple Storage Service (Amazon S3) は、ユーザーに代わってオブジェクトをレプリケートするための許可を必要とします。IAM ロールを作成してこれらの許可を付与し、その後、レプリケーション設定でそのロールを指定します。
+ レプリケート元バケットとレプリケート先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、レプリカを保存するためのアクセス許可をレプリケート元バケット所有者にも付与する必要があります。

**注記**  
ライブレプリケーションを設定する代わりに S3 バッチオペレーションを使用してオンデマンドでオブジェクトをレプリケートする場合は、S3 バッチレプリケーションに別の IAM ロールとポリシーが必要です。バッチレプリケーションの IAM ロールとポリシーの例については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。

**Topics**
+ [

## ステップ 1: レプリケーションルールを作成する IAM プリンシパルにアクセス許可を付与する
](#setting-repl-config-role)
+ [

## ステップ 2: Amazon S3 が引き受ける IAM ロールを作成する
](#setting-repl-config-same-acctowner)
+ [

## (オプション) ステップ 3: レプリケーション元とレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合の許可の付与
](#setting-repl-config-crossacct)
+ [

## (オプション) ステップ 4: レプリカの所有権を変更するアクセス許可の付与
](#change-replica-ownership)

## ステップ 1: レプリケーションルールを作成する IAM プリンシパルにアクセス許可を付与する
<a name="setting-repl-config-role"></a>

レプリケーションルールの作成に使用する IAM ユーザーまたはロールには、一方向または双方向レプリケーションのレプリケーションルールを作成するためのアクセス許可が必要です。ユーザーまたはロールにこれらのアクセス許可がない場合、レプリケーションルールを作成することはできません。詳細については、「*IAM ユーザーガイド*」の「[IAM アイデンティティ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html)」を参照してください。

ユーザーまたはロールには、次のアクションが必要です。
+ `iam:AttachRolePolicy`
+ `iam:CreatePolicy`
+ `iam:CreateServiceLinkedRole`
+ `iam:PassRole`
+ `iam:PutRolePolicy`
+ `s3:GetBucketVersioning`
+ `s3:GetObjectVersionAcl`
+ `s3:GetObjectVersionForReplication`
+ `s3:GetReplicationConfiguration`
+ `s3:PutReplicationConfiguration`

これらのアクションを含む IAM ポリシーの例を次に示します。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetAccessPoint",
                "s3:GetAccountPublicAccessBlock",
                "s3:GetBucketAcl",
                "s3:GetBucketLocation",
                "s3:GetBucketPolicyStatus",
                "s3:GetBucketPublicAccessBlock",
                "s3:ListAccessPoints",
                "s3:ListAllMyBuckets",
                "s3:PutReplicationConfiguration",
                "s3:GetReplicationConfiguration",
                "s3:GetBucketVersioning",
                "s3:GetObjectVersionForReplication",
                "s3:GetObjectVersionAcl",
                "s3:GetObject",
                "s3:ListBucket",
                "s3:GetObjectVersion",
                "s3:GetBucketOwnershipControls",
                "s3:PutBucketOwnershipControls",
                "s3:GetObjectLegalHold",
                "s3:GetObjectRetention",
                "s3:GetBucketObjectLockConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket1-*",
                "arn:aws:s3:::amzn-s3-demo-bucket2-*/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:List*AccessPoint*",
                "s3:GetMultiRegion*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:Get*",
                "iam:CreateServiceLinkedRole",
                "iam:CreateRole",
                "iam:PassRole"
            ],
            "Resource": "arn:aws:iam::*:role/service-role/s3*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:List*"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:AttachRolePolicy",
                "iam:PutRolePolicy",
                "iam:CreatePolicy"
              ],
            "Resource": [
                "arn:aws:iam::*:policy/service-role/s3*",
                "arn:aws:iam::*:role/service-role/s3*"
            ]
        }
    ]
}
```

------

## ステップ 2: Amazon S3 が引き受ける IAM ロールを作成する
<a name="setting-repl-config-same-acctowner"></a>



デフォルトで、すべての Simple Storage Service (Amazon S3) リソース (バケット、オブジェクト、関連するサブリソース) はプライベートであり、リソース所有者のみがリソースにアクセスできます。Amazon S3 には、ソースバケットからオブジェクトを読み取って、レプリケートするアクセス許可が必要です。IAM ロールを作成してこれらの許可を付与し、レプリケーション設定でそのロールを指定します。

このセクションでは、信頼ポリシーとこの IAM ロールにアタッチされた最低限必要なアクセス許可ポリシーについて説明します。チュートリアル例では、IAM ロールを作成するための手順をステップバイステップで説明しています。詳細については、「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」を参照してください。

**注記**  
コンソールを使用してレプリケーション設定を作成する場合は、このセクションをスキップし、代わりにコンソールで、この IAM ロールと必要な信頼ポリシーおよびアクセス許可ポリシーを作成することをお勧めします。

信頼ポリシーは、IAM ロールを引き受けることができるプリンシパル ID を識別します。**アクセス許可ポリシーは、IAM ロールが実行できるアクション、リソース、および条件を指定します。**
+ 以下の例は、信頼ポリシーを示しています。ここでは、このロールを引き受けることができる AWS のサービスプリンシパルとして Amazon S3 を特定します。**

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[
        {
           "Effect":"Allow",
           "Principal":{
              "Service":"s3.amazonaws.com"
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------
+ 以下の例は、信頼ポリシーを示しています。ここでは、このロールを引き受けることができるプリンシパルとして Amazon S3 および S3 バッチオペレーションを特定します。**バッチレプリケーションジョブを作成する場合はこの方法を使用します。詳細については、「[新しいレプリケーションルールまたは新しいレプリケート先にバッチレプリケーションジョブを作成する](s3-batch-replication-new-config.md)」を参照してください。

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement":[ 
        {
           "Effect":"Allow",
           "Principal":{
              "Service": [
                "s3.amazonaws.com",
                "batchoperations.s3.amazonaws.com"
             ]
           },
           "Action":"sts:AssumeRole"
        }
     ]
  }
  ```

------

  IAM ロールの詳細については、*IAM ユーザーガイド*の [IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)を参照してください。
+ 以下の例は、アクセス許可ポリシーを示しています。ここでは、ユーザーに代わってレプリケーションタスクを実行する許可を IAM ロールに付与します。**Amazon S3 がこのロールを引き受ける場合、このポリシーで指定されたアクセス許可を持つことになります。このポリシーでは、`amzn-s3-demo-source-bucket` はレプリケート元バケットで、`amzn-s3-demo-destination-bucket` はレプリケート先バケットです。

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

****  

  ```
  {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
        {
           "Effect": "Allow",
           "Action": [
              "s3:GetReplicationConfiguration",
              "s3:ListBucket"
           ],
           "Resource": [
              "arn:aws:s3:::amzn-s3-demo-source-bucket"
           ]
        },
        {
           "Effect": "Allow",
           "Action": [
              "s3:GetObjectVersionForReplication",
              "s3:GetObjectVersionAcl",
              "s3:GetObjectVersionTagging"
           ],
           "Resource": [
              "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
           ]
        },
        {
           "Effect": "Allow",
           "Action": [
              "s3:ReplicateObject",
              "s3:ReplicateDelete",
              "s3:ReplicateTags"
           ],
           "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        }
     ]
  }
  ```

------

  以下のアクセス許可ポリシーは、以下のアクションに対する許可を付与します。
  +  `s3:GetReplicationConfiguration` および `s3:ListBucket` — `amzn-s3-demo-source-bucket` バケットでのこれらのアクションの許可により、Amazon S3 はレプリケーション設定とリストバケットのコンテンツを取得できます。(現在の権限モデルには、`s3:ListBucket` 削除マーカーにアクセスするために許可が必要です。)
  + `s3:GetObjectVersionForReplication` および `s3:GetObjectVersionAcl` – すべてのオブジェクトに付与されているこれらのアクションの許可で、Simple Storage Service (Amazon S3) はオブジェクトに関連付けられた特定のオブジェクトバージョンとアクセスコントロールリスト (ACL) を取得することができます。

    
  + `s3:ReplicateObject` および `s3:ReplicateDelete` — `amzn-s3-demo-destination-bucket` バケットのオブジェクトに属すこれらのアクションの許可により、Simple Storage Service (Amazon S3) はレプリケート先バケットにオブジェクトまたは削除マーカーをレプリケートできます。削除マーカーの詳細については、「[削除オペレーションがレプリケーションに与える影響](replication-what-is-isnot-replicated.md#replication-delete-op)」を参照してください。
**注記**  
`amzn-s3-demo-destination-bucket` バケット に対する `s3:ReplicateObject` アクションの許可により、オブジェクトタグや ACL などのメタデータのレプリケーションも許可されます。したがって、`s3:ReplicateTags` アクションのアクセス許可を明示的に付与する必要はありません。
  + `s3:GetObjectVersionTagging` — `amzn-s3-demo-source-bucket` バケットのオブジェクトに属するこのアクションの許可により、Amazon S3 はレプリケーションのためにオブジェクトタグを読み取ることができるようになります。オブジェクトタグの詳細については、[タグを使用したオブジェクトの分類](object-tagging.md)を参照してください。Amazon S3 が `s3:GetObjectVersionTagging` アクセス許可を持っていない場合は、オブジェクトはレプリケートされますが、オブジェクトタグはレプリケートされません。

  Amazon S3 アクションの一覧については、「サービス認可リファレンス」の「[Amazon S3 のアクション、リソース、および条件キー](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazons3.html#list_amazons3-actions-as-permissions)」を参照してください。**

  S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「[Amazon S3 API オペレーションに必要なアクセス許可](using-with-s3-policy-actions.md)」を参照してください。
**重要**  
IAM ロールを所有する AWS アカウントは、IAM ロールに付与するアクションの許可を持っている必要があります。  
例えば、レプリケート元バケットに別の AWS アカウントが所有するオブジェクトが含まれていたとします。オブジェクトの所有者は、IAM ロールを所有する AWS アカウントに、オブジェクトのアクセスコントロールリスト (ACL) を介して必要な許可を明示的に付与する必要があります。そうでない場合、Amazon S3 はオブジェクトにアクセスできず、オブジェクトのレプリケーションは失敗します。ACL のアクセス許可については、「[アクセスコントロールリスト (ACL) の概要](acl-overview.md)」を参照してください。  
  
ここで説明されているアクセス許可は、最小のレプリケーション設定に関連しています。オプションのレプリケーション設定を追加する場合は、追加のアクセス許可を Amazon S3 に付与する必要があります。  
暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。
レプリケーションでオブジェクトロックを使用するには、レプリケーションの設定に使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの追加のアクセス許可を付与する必要があります。2 つの新しいアクセス許可とは `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのステートメントは要件を満たしています。詳細については、「[S3 レプリケーションでのオブジェクトロックの使用](object-lock-managing.md#object-lock-managing-replication)」を参照してください。

## (オプション) ステップ 3: レプリケーション元とレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合の許可の付与
<a name="setting-repl-config-crossacct"></a>

レプリケート元バケットとレプリケート先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、次のように、レプリケート元バケット所有者にレプリケーションアクションを実行する許可を付与するバケットポリシーも追加する必要があります。このポリシーの例では、`amzn-s3-demo-destination-bucket` はレプリケーション先バケットです。

Amazon S3 コンソールを使用して、このバケットポリシーを自動的に生成することもできます。詳細については、「[レプリケートされたオブジェクトをレプリケート元バケットから受信できるようにする](#receiving-replicated-objects)」を参照してください。

**注記**  
ロールの ARN 形式が異なって表示される場合があります。コンソールを使用してロールが作成された場合、ARN 形式は `arn:aws:iam::account-ID:role/service-role/role-name` です。AWS CLI を使用してロールが作成された場合、ARN 形式は `arn:aws:iam::account-ID:role/role-name` です。詳細については、「*IAM ユーザーガイド*」の「[IAM ロール](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html)」を参照してください。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "PolicyForDestinationBucket",
    "Statement": [
        {
            "Sid": "Permissions on objects",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3:ReplicateDelete",
                "s3:ReplicateObject"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        },
        {
            "Sid": "Permissions on bucket",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
            },
            "Action": [
                "s3:List*",
                "s3:GetBucketVersioning",
                "s3:PutBucketVersioning"
            ],
            "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
        }
    ]
}
```

------

例については、「[異なるアカウントでのバケットのレプリケーション設定](replication-walkthrough-2.md)」を参照してください。

レプリケート元バケットのオブジェクトがタグ付きの場合は、以下の点に注意してください。
+ レプリケート元のバケット所有者が (IAM ロールによって) オブジェクトタグをレプリケートするための `s3:GetObjectVersionTagging` および `s3:ReplicateTags` アクションのアクセス許可を Amazon S3 に付与した場合、Amazon S3 はオブジェクトと共にタグをレプリケートします。IAM ロールに関する詳細は、「[ステップ 2: Amazon S3 が引き受ける IAM ロールを作成する](#setting-repl-config-same-acctowner)」を参照してください。
+ レプリケート先のバケット所有者は、タグがレプリケートされるのを望まない場合、次のステートメントをレプリケート先のバケットポリシーに追加することで、`s3:ReplicateTags` アクションのアクセス許可を明示的に拒否できます。このポリシーでは、`amzn-s3-demo-destination-bucket` はレプリケーション先バケットです。

  ```
  ...
     "Statement":[
        {
           "Effect":"Deny",
           "Principal":{
              "AWS":"arn:aws:iam::source-bucket-account-id:role/service-role/source-account-IAM-role"
           },
           "Action":"s3:ReplicateTags",
           "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
        }
     ]
  ...
  ```

**注記**  
暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。
レプリケーションでオブジェクトロックを使用するには、レプリケーションの設定に使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの追加のアクセス許可を付与する必要があります。2 つの新しいアクセス許可とは `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのステートメントは要件を満たしています。詳細については、「[S3 レプリケーションでのオブジェクトロックの使用](object-lock-managing.md#object-lock-managing-replication)」を参照してください。

**レプリケートされたオブジェクトをレプリケート元バケットから受信できるようにする**  
上記のポリシーをレプリケート先バケットに手動で追加する代わりに、Amazon S3 コンソールを介して、レプリケート元バケットからレプリケートされたオブジェクトの受信を有効にするために必要なポリシーをすばやく生成できます。

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

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

1. **バケット**リストで、レプリケート先バケットとして使用するバケットを選択します。

1. [**Management (管理)**] タブを選択し、[**Replication rules (レプリケーションルール)**] まで下にスクロールします。

1. **[Actions]** (アクション)で、**[Receive replicated objects]** (レプリケートされたオブジェクトの受信)を選択します。

   プロンプトに従って、レプリケート元バケットアカウントの AWS アカウント ID を選択し、**[ポリシーの生成]** を選択します。コンソールにより、Amazon S3 バケットポリシーと KMS キーポリシーが生成されます。

1. このポリシーを既存のバケットポリシーに追加するには、**[Apply settings]** (設定の適用) を選択するか、または **[Copy]** (コピー) をクリックして、変更を手動でコピーします。

1. (オプション) AWS KMS ポリシーを AWS Key Management Service コンソール上の必要な KMS キーポリシーへコピーします。

## (オプション) ステップ 4: レプリカの所有権を変更するアクセス許可の付与
<a name="change-replica-ownership"></a>

レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有者を変更するように Amazon S3 に指示できます。レプリカの所有権を上書きするには、追加のアクセス許可を付与するか、レプリケート先バケットの S3 オブジェクト所有権設定を調整する必要があります。所有者上書きの詳細については、「[レプリカ所有者の変更](replication-change-owner.md)」を参照してください。

# ライブレプリケーションの設定例
<a name="replication-example-walkthroughs"></a>

以下の例は、一般的なユースケース用にライブレプリケーションを設定するためのステップバイステップのチュートリアルを示しています。

**注記**  
ライブレプリケーションとは、同一リージョンレプリケーション (SRR) およびクロスリージョンレプリケーション (CRR) を指します。ライブレプリケーションでは、レプリケーションを設定する前にバケットに存在していたオブジェクトはレプリケートされません。レプリケーションを設定する前に存在していたオブジェクトをレプリケートするには、オンデマンドレプリケーションを使用します。バケットを同期して既存のオブジェクトをオンデマンドでレプリケートするには、「[既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

これらの例は、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK (AWS SDK for Java および AWS SDK for .NET の例を示します) を使用したレプリケーション設定の作成方法を示しています。

AWS CLI のインストールと設定方法の詳細については、「AWS Command Line Interface ユーザーガイド」の次のトピックを参照してください。**
+  [ の開始方法AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html) 
+  [AWS CLI の設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) - 少なくとも 1 つのプロファイルを設定する必要があります。クロスアカウントのシナリオを学習する場合は、2 つのプロファイルを設定します。

AWS SDK の詳細については、「[AWS SDK for Java](https://aws.amazon.com/sdk-for-java/)」および「[AWS SDK for .NET](https://aws.amazon.com/sdk-for-net/)」を参照してください。

**ヒント**  
ライブレプリケーションを使用してデータをレプリケートする方法の詳細な手順を説明するチュートリアルについては、「[Amazon S3 レプリケーションを使用して、AWS リージョン 内およびリージョン間でデータをレプリケートする](https://aws.amazon.com/getting-started/hands-on/replicate-data-using-amazon-s3-replication/?ref=docs_gateway/amazons3/replication-example-walkthroughs.html)」を参照してください。

**Topics**
+ [同じアカウントでのバケットの設定](replication-walkthrough1.md)
+ [異なるアカウントでのバケットの設定](replication-walkthrough-2.md)
+ [S3 Replication Time Control の有効化](replication-time-control.md)
+ [暗号化オブジェクトのレプリケート](replication-config-for-kms-objects.md)
+ [メタデータ変更のレプリケート](replication-for-metadata-changes.md)
+ [削除マーカーのレプリケーション](delete-marker-replication.md)

# 同じアカウントでのバケットのレプリケーションの設定
<a name="replication-walkthrough1"></a>

ライブレプリケーションは、同一または異なる AWS リージョンにある汎用バケット間でオブジェクトを自動的に非同期でコピーする機能です。ライブレプリケーションでは、新しく作成されたオブジェクトおよびオブジェクトの更新が、レプリケート元バケットからレプリケート先バケットにコピーされます。詳細については、「[リージョン内およびリージョン間でのオブジェクトのレプリケート](replication.md)」を参照してください。

レプリケーションを設定するときは、レプリケート元バケットにレプリケーションルールを追加します。レプリケーションルールにより、レプリケート元のソースバケットオブジェクトと、レプリケートされたオブジェクトが保存されるレプリケート先バケットが定義されます。ルールを作成して、バケット内のすべてのオブジェクト、または特定のキー名のプレフィックス、1 つ以上のオブジェクトタグ、あるいはその両方を持つオブジェクトのサブセットをレプリケートできます。レプリケート先のバケットはレプリケート元バケットと同じ AWS アカウントにあっても、別のアカウントにあってもかまいません。

削除するオブジェクトバージョンの ID を指定した場合、Amazon S3 はソースバケット内のそのオブジェクトバージョンを削除します。しかし、レプリケート先バケット内でその削除をレプリケートすることはありません。つまり、レプリケート先バケットから同じオブジェクトバージョンを削除しません。これは悪意のある削除からデータを保護します。

バケットにレプリケーションルールを追加すると、ルールはデフォルトで有効になるため、保存するとすぐに動作を開始します。

この例では、同じ AWS アカウントがレプリケート元とレプリケート先のバケットを所有している場合の、ライブレプリケーションのセットアップを行います。Amazon S3 コンソールを使用する例については、AWS Command Line Interface (AWS CLI)、AWS SDK for Java、および AWS SDK for .NET を参照してください。

## 前提条件
<a name="replication-prerequisites"></a>

次の手順を使用する前に、ソースバケットと保存先バケットが同じアカウントによって所有されているか異なるアカウントによって所有されているかに応じて、レプリケーションに必要なアクセス許可が設定されていることを確認してください。詳細については、「[ライブレプリケーションのアクセス許可の設定](setting-repl-config-perm-overview.md)」を参照してください。

**注記**  
暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。
レプリケーションでオブジェクトロックを使用するには、レプリケーションの設定に使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの追加のアクセス許可を付与する必要があります。2 つの新しいアクセス許可とは `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのステートメントは要件を満たしています。詳細については、「[S3 レプリケーションでのオブジェクトロックの使用](object-lock-managing.md#object-lock-managing-replication)」を参照してください。

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

ソースバケットと同じ AWS アカウント に送信先バケットがある場合にレプリケーションルールを設定するには、以下の手順を実行します。

レプリケート先バケットがレプリケート元バケットとは別のアカウントにある場合は、レプリケート先バケットにバケットポリシーを追加して、レプリケート元バケットアカウントの所有者に、レプリケート先バケットのオブジェクトをレプリケートするアクセス許可を付与する必要があります。詳細については、「[(オプション) ステップ 3: レプリケーション元とレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合の許可の付与](setting-repl-config-perm-overview.md#setting-repl-config-crossacct)」を参照してください。

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

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

1. バケットリストで、目的のバケットの名前を選択します。

1. **[管理]** タブをクリックし、**[レプリケーションルール]** までスクロールして、**[レプリケーションルールを作成]** を選択します。

    

1. **[レプリケーションルールの設定]** セクションの、**[レプリケーションルール名]** で、後でルールを識別しやすいようにルールの名前を入力します。ルール名は必須であり、バケット内で一意である必要があります。

1. [**ステータス**] では、デフォルトで [**有効**] が選択されています。有効にされたルールは、保存するとすぐに機能し始めます。ルールを後から有効にする場合は、**[無効]** を選択します。

1. バケットに既存のレプリケーションルールがある場合は、ルールの優先順位を指定するよう指示されます。ルールの優先順位を指定して、複数のルールの範囲に含まれるオブジェクトによって引き起こされる競合を回避する必要があります。ルールが重複している場合、Amazon S3 はルールの優先度を使用して適用するルールを決定します。数値が大きいほど、優先度が高くなります。ルーティングの優先度の詳細については、[レプリケーション設定ファイル要素](replication-add-config.md)をご覧ください。

1. **[ソースバケット]** には、レプリケーションソースを設定するための次のオプションがあります。
   + バケット全体をレプリケートするには、**[Apply to all objects in the bucket]** (バケット内のすべてのオブジェクトに適用) を選択します。
   + 同じプレフィックスを持つすべてのオブジェクトをレプリケートするには、[**Limit the scope of this rule using one or more filters (1 つまたは複数のフィルターを使用してこのルールの適用範囲を制限します)**] を選択します。これにより、指定したプレフィックスで始まる名前を持つすべてのオブジェクトにレプリケーションが制限されます (`pictures` など)。**[プレフィックス]** ボックスにプレフィックスを入力します。
**注記**  
フォルダの名前をプレフィックスとして入力する場合は、最後の文字に [**/**] (スラッシュ) を使用する必要があります (例: `pictures/`)。
   + 1 つまたは複数のオブジェクトタグを持つすべてのオブジェクトをレプリケートするには、**[タグを追加]** を選択し、ボックスにキーと値のペアを入力します。別のタグを追加するには、この手順を繰り返します。プレフィックスとタグを組み合わせることができます。オブジェクトロックの詳細については、[タグを使用したオブジェクトの分類](object-tagging.md)をご参照ください。

   新しいレプリケーション設定 XML スキーマでは、プレフィックスとタグのフィルタリング、およびルールの優先順位付けがサポートされています。新しいスキーマの詳細については、[後方互換性に関する考慮事項](replication-add-config.md#replication-backward-compat-considerations)を参照してください。ユーザーインターフェイスの背後で機能する Amazon S3 API で使用される XML の詳細については、「[レプリケーション設定ファイル要素](replication-add-config.md)」を参照してください。新しいスキーマは、*レプリケーション設定 XML V2* として記述されます。

1. **[レプリケート先]** で、Amazon S3 がオブジェクトをレプリケートするバケットを選択します。
**注記**  
レプリケート先バケットの数は、特定のパーティション内の AWS リージョンの数に制限されます。パーティションは、リージョンのグループです。AWS には、現在 `aws` (標準リージョン)、`aws-cn` (中国リージョン)、および `aws-us-gov` (AWS GovCloud (US) リージョン) の 3 つのパーティションがあります。レプリケート先バケット制限の増加をリクエストするには、[サービスのクォータ](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html)を使用できます。
   + アカウントのバケットにレプリケートするには、**[このアカウントのバケットを選択]** をクリックし、レプリケート先バケット名を入力または参照します。
   + 別の AWS アカウント のバケットにレプリケートするには、**[別のアカウントのバケットを指定]** を選択し、レプリケート先バケットのアカウント ID とバケット名を入力します。

     レプリケート先バケットがレプリケート元バケットとは別のアカウントにある場合は、レプリケート先バケットにバケットポリシーを追加して、レプリケート元バケットアカウントの所有者にオブジェクトをレプリケートするアクセス許可を付与する必要があります。詳細については、「[(オプション) ステップ 3: レプリケーション元とレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合の許可の付与](setting-repl-config-perm-overview.md#setting-repl-config-crossacct)」を参照してください。

     必要に応じて、レプリケート先バケット内の新しいオブジェクトの所有を標準化するために、**[オブジェクト所有者を送信先バケット所有者に変更]** を選択します。このオプションの詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。
**注記**  
レプリケート先バケットでバージョニングが有効になっていない場合は、[**バージョニングを有効化**] ボタンを含む警告が表示されます。バケットでバージョニングを有効にするには、このボタンを選択します。

1. Amazon S3 がユーザーのためにオブジェクトをレプリケートできる AWS Identity and Access Management (IAM) ロールを設定します。

   IAM ロールを設定するには、**[IAM ロール]** セクションで **[IAM ロール]** ドロップダウンリストから次のいずれかを選択します。
   + [**Create new role (新しいロールの作成)**] を選択して、Amazon S3 で新しい IAM ロールが自動的に作成されるようにすることを強くお勧めします。ルールを保存すると、選択したレプリケート元バケットとレプリケート先バケットに一致する IAM ロールに対して新しいポリシーが生成されます。
   + 既存の IAM ロールの使用も選択できます。その場合は、レプリケーションに必要なアクセス許可を Amazon S3 に付与するロールを選択する必要があります。このロールがレプリケーションルールに従うための十分なアクセス許可を Amazon S3 に付与しない場合、レプリケーションは失敗します。
**重要**  
レプリケーションルールをバケットに追加する場合は、Amazon S3 にレプリケーションアクセス許可を付与する IAM ロールを渡すことができる `iam:PassRole` アクセス許可が必要です。詳細については、*IAM ユーザーガイド*の「[AWS のサービス のサービスにロールを渡すアクセス権限をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。

1. AWS Key Management Service (AWS KMS) キーを使用したサーバー側の暗号化 (SSE-KMS) で暗号化されたソースバケット内のオブジェクトをレプリケートするには、**[暗号化]** で **[AWS KMS で暗号化されたオブジェクトをレプリケート]** を選択します。**送信先オブジェクト暗号化用の AWS KMS キー** には、レプリケーションでの使用を許可しているソースキーが示されています。デフォルトでは、すべてのソース KMS キーが含まれます。KMS キーの選択を絞り込むために、エイリアスまたはキー ID を選択できます。

   選択されていない AWS KMS keys で暗号化されたオブジェクトはレプリケートされません。KMS キーまたは KMS キーのグループが選択されていますが、必要に応じて KMS キーを選択できます。AWS KMS をレプリケーションで使用する方法については、[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md) を参照してください。
**重要**  
AWS KMS で暗号化されたオブジェクトをレプリケートすると、AWS KMS リクエストレートは、ソースリージョンでは倍になり、送信先リージョンでは同じ量だけ増加します。AWS KMS に対するこれらの呼び出しレートの増加は、レプリケーションの送信先リージョンに対して定義した KMS キーを使用してデータが再暗号化された方法によるものです。AWS KMS では、リージョンごとに呼び出しアカウントあたりのリクエストレートが制限されています。制限のデフォルト値については、*AWS Key Management Service デベロッパーガイド*の「[AWS KMS の制限 - 1 秒あたりのリクエスト数: 可変](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html#requests-per-second)」を参照してください。  
レプリケーションにおける現在の Amazon S3 `PUT` オブジェクトリクエストレートが、アカウントでデフォルトで設定されている AWS KMS レート制限の半分を超えている場合は、AWS KMS リクエストレート制限の引き上げをリクエストすることをお勧めします。引き上げをリクエストするには、サポート センターの[お問い合わせ](https://aws.amazon.com/contact-us/)でケースを作成します。例えば、現在の `PUT` オブジェクトのリクエストレートが 1 秒あたり 1,000 リクエストであり、オブジェクトの暗号化に AWS KMS を使用しているとします。この場合、レプリケート元リージョンとレプリケート先リージョン (リージョンが異なる場合) の両方で AWS KMS レート制限を毎秒 2,500 リクエストに引き上げるよう サポート に依頼することをお勧めします。これにより、AWS KMS によるスロットリングがなくなります。  
レプリケート元バケットの `PUT` オブジェクトのリクエストレートを確認するには、Amazon S3 の Amazon CloudWatch リクエストメトリクスの `PutRequests` を確認します。CloudWatch メトリクスの表示方法については、「[S3 コンソールの使用](configure-request-metrics-bucket.md#configure-metrics)」を参照してください

   AWS KMS で暗号化されたオブジェクトをレプリケートを選択した場合は、以下の操作を実行します。

   1. **[送信先オブジェクトを暗号化するための AWS KMS key]** で、次のいずれかの方法で KMS キーを指定します。
     + 使用可能な KMS キーのリストから選択するには、**[AWS KMS keys から選択する]** を選択し、使用可能なキーのリストから自分の **KMS キー**を選択します。

       AWS マネージドキー (`aws/s3`) とカスタマーマネージドキーの両方がこのリストに表示されます。カスタマーマネージドキーの詳細については、*AWS Key Management Service デベロッパーガイド*の「[カスタマーキーと AWS キー](https://docs.aws.amazon.com//kms/latest/developerguide/concepts.html#key-mgmt)」を参照してください。
     + KMS キー Amazon リソースネーム (ARN) を入力するには、**[AWS KMS key ARN を入力]** を選択し、表示されるフィールドに KMS キー ARN を入力します。これにより、レプリケート先バケットのレプリカが暗号化されます。[[IAM コンソール]](https://console.aws.amazon.com/iam/)の **[暗号化キー]** で、KMS キーの ARN を検索できます。
     + AWS KMS コンソールで新しいカスタマーマネージドキーを作成するには、**[KMS キーを作成]** を選択します。

       AWS KMS key の作成の詳細については、**「AWS Key Management Service デベロッパーガイド」の「[キーの作成](https://docs.aws.amazon.com//kms/latest/developerguide/create-keys.html)」を参照してください。
**重要**  
バケットと同じ AWS リージョン で有効になっている KMS キーのみを使用できます。**[KMS キーから選択する]** を選択する場合、S3 コンソールにはリージョンごとに 100 個の KMS キーしか表示されません。同じリージョンに 100 個以上の KMS キーがある場合、S3 コンソールには最初の 100 個の KMS キーしか表示されません。コンソールに表示されていない KMS キーを使用するには、**[AWS KMS key ARN を入力]** を選択し、KMS キー ARN を入力します。  
Amazon S3 でサーバー側の暗号化に AWS KMS key を使用する場合は、対称暗号化 KMS キーを選択する必要があります。Amazon S3 では、対称暗号化 KMS キーのみがサポートされ、非対称暗号化 KMS キーはサポートされません。詳細については、*AWS Key Management Service デベロッパーガイド*の「[Identifying symmetric and asymmetric KMS keys](https://docs.aws.amazon.com//kms/latest/developerguide/find-symm-asymm.html)」(対称および非対称 KMS キーの識別) を参照してください。

     AWS KMS key の作成の詳細については、*AWS Key Management Service デベロッパーガイド*の[キーの作成](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html)を参照してください。Amazon S3 での AWS KMS の使用に関する詳細は、「[AWS KMS キーによるサーバー側の暗号化 (SSE-KMS) の使用](UsingKMSEncryption.md)」を参照してください。

1. **[レプリケート先ストレージクラス]** で、データをレプリケート先の特定のストレージクラスにレプリケートする場合は、**[レプリケートされたオブジェクトのストレージクラスを変更]** を選択します。次に、レプリケート先のレプリケートされたオブジェクトに使用するストレージクラスを選択します。このオプションを選択しない場合、レプリケートされたオブジェクトのストレージクラスは元のオブジェクトのクラスと同じになります。

1. **追加のレプリケーションオプション**を設定する際には、次の追加オプションから選択できます。
   + レプリケーション設定で S3 Replication Time Control (S3 RTC) を有効にする場合は、**[レプリケーション時間のコントロール (RTC)]** を選択します。このオプションの詳細については、「[S3 Replication Time Control (S3 RTC)を使用してコンプライアンス要件を満たす](replication-time-control.md)」を参照してください。
   + レプリケーション設定で S3 レプリケーションメトリクスを有効にするには、**[Replication metrics and events]** (レプリケーションメトリクスとイベント) を選択します。詳細については、「[メトリクス、イベント通知、ステータスによるレプリケーションのモニタリング](replication-metrics.md)」を参照してください。
   + レプリケーション設定で削除マーカーレプリケーションを有効にする場合は、[**削除マーカーのレプリケーション**] を選択します。詳細については、「[バケット間での削除マーカーのレプリケーション](delete-marker-replication.md)」を参照してください。
   + レプリケーション設定で Amazon S3 レプリカ変更の同期を有効にする場合は、[**レプリカ変更の同期**] を選択します。詳細については、「[レプリカの変更同期によるメタデータ変更のレプリケート](replication-for-metadata-changes.md)」を参照してください。
**注記**  
S3 RTC または S3 レプリケーションメトリクスを使用する場合は、追加料金が適用されます。

1. 終了するには、[**Save (保存)**] を選択します。

1. ルールを保存したら、ルールを選択して [**Edit rule (ルールの編集)**] を選択することで、ルールを編集、有効化、無効化、または削除できます。

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

レプリケート元バケットとレプリケート先バケットが同じ AWS アカウント によって所有されている場合に、レプリケーションの設定に AWS CLI を使用するには
+ レプリケート元バケットとレプリケート先バケットを作成します。
+ バケットでのバージョニングを有効化します。
+ オブジェクトをレプリケートするための Amazon S3 許可を付与する AWS Identity and Access Management (IAM) ロールを作成します。
+ レプリケート元バケットにレプリケーション設定を追加します。

設定を確認するには、テストします。

**レプリケート元バケットとレプリケート先バケットが同じ AWS アカウントによって所有されている場合にレプリケーションをセットアップするには**

1. AWS CLI の認証情報プロファイルを設定します。この例では、プロファイル名 `acctA` を使用します。名前付きプロファイルの設定と使用に関する詳細については、「AWS Command Line Interface ユーザーガイド」の「[設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」を参照してください。**
**重要**  
この例に使用するプロファイルは、必要なアクセス権限を持っている必要があります。たとえば、レプリケーション設定で、Amazon S3 が引き受けることができる IAM ロールを指定します。使用するプロファイルに `iam:PassRole` アクセス権限がある場合のみ実行できます。詳細については、「IAM ユーザーガイド」の「[AWS のサービス にロールを渡すアクセス権限をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。**管理者の認証情報を使用して名前付きプロファイルを作成すると、すべてのタスクを実行できるようになります。

1. 次の AWS CLI コマンドを使用してレプリケート元バケットを作成し、バージョニングを有効にします。これらのコマンドを使用するには、*`user input placeholders`* をユーザー自身の情報に置き換えます。

   次の `create-bucket` コマンドは、米国東部 (バージニア北部) (`us-east-1`) リージョンに `amzn-s3-demo-source-bucket` バケットを作成します。

   

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   次の `put-bucket-versioning` コマンドは、`amzn-s3-demo-source-bucket` バケットで S3 バージョニングを有効にします。

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 次の AWS CLI コマンドを使用してレプリケート先バケットを作成し、バージョニングを有効にします。これらのコマンドを使用するには、*`user input placeholders`* をユーザー自身の情報に置き換えます。
**注記**  
レプリケーション元とレプリケーション先バケットの両方が同じ AWS アカウントにある場合、レプリケーション設定をセットアップするには、レプリケート元バケットおよびレプリケート先バケットに同じプロファイルを使用します。この例では `acctA` を使用します。  
異なる AWS アカウントによってバケットが所有されている場合、レプリケーション設定をテストするには、それぞれのアカウント異なるプロファイルを指定します。例えば、レプリケート先バケットに `acctB` プロファイルを使用します。

   

   次の `create-bucket` コマンドは、米国西部 (オレゴン) (`us-west-2`) リージョンに `amzn-s3-demo-destination-bucket` というレプリケート先バケットを作成します。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctA
   ```

   次の `put-bucket-versioning` コマンドは、`amzn-s3-demo-destination-bucket` バケットで S3 バージョニングを有効にします。

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. IAM ロールを作成します。レプリケート元バケットに後で追加するレプリケーション設定でこのロールを指定します。Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするこの ロールを引き受けます。IAM ロールは 2 つのステップで作成します。
   + ロールを作成します。
   + アクセス権限ポリシーをロールにアタッチします。

   1. IAM ロールを作成します。

      1. 次の信頼ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある `s3-role-trust-policy.json` という名前のファイルに保存します。このポリシーは、ロールを引き受けるアクセス許可を Amazon S3 サービスプリンシパルに付与します。

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

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. 次のコマンドを実行して、ロールを作成します。

         ```
         $ aws iam create-role \
         --role-name replicationRole \
         --assume-role-policy-document file://s3-role-trust-policy.json  \
         --profile acctA
         ```

   1. アクセス権限ポリシーをロールにアタッチします。

      1. 次のアクセス権限ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある `s3-role-permissions-policy.json` という名前のファイルに保存します。このポリシーは、さまざまな Amazon S3 バケットとオブジェクトアクションに対するアクセス許可を付与します。

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

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl",
                     "s3:GetObjectVersionTagging"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ListBucket",
                     "s3:GetReplicationConfiguration"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ReplicateObject",
                     "s3:ReplicateDelete",
                     "s3:ReplicateTags"
                  ],
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               }
            ]
         }
         ```

------
**注記**  
暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。
レプリケーションでオブジェクトロックを使用するには、レプリケーションの設定に使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの追加のアクセス許可を付与する必要があります。2 つの新しいアクセス許可とは `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのステートメントは要件を満たしています。詳細については、「[S3 レプリケーションでのオブジェクトロックの使用](object-lock-managing.md#object-lock-managing-replication)」を参照してください。

      1. ポリシーを作成してロールにアタッチするには、次のコマンドを実行します。*`user input placeholders`* を、ユーザー自身の情報に置き換えます。

         ```
         $ aws iam put-role-policy \
         --role-name replicationRole \
         --policy-document file://s3-role-permissions-policy.json \
         --policy-name replicationRolePolicy \
         --profile acctA
         ```

1. レプリケート元バケットにレプリケーション設定を追加します。

   1. Amazon S3 API はレプリケーション設定を XML で指定する必要がありますが、AWS CLI はレプリケーション設定を JSON で指定する必要があります。以下の JSON を、コンピュータのローカルディレクトリの `replication.json` というファイルに保存します。

      ```
      {
        "Role": "IAM-role-ARN",
        "Rules": [
          {
            "Status": "Enabled",
            "Priority": 1,
            "DeleteMarkerReplication": { "Status": "Disabled" },
            "Filter" : { "Prefix": "Tax"},
            "Destination": {
              "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            }
          }
        ]
      }
      ```

   1. `amzn-s3-demo-destination-bucket` および `IAM-role-ARN` の値を独自の情報に置き換えて JSON を更新します。変更を保存します。

   1. 次の `put-bucket-replication` コマンドを実行して、レプリケート元バケットにレプリケーション設定を追加します。必ずレプリケート元バケット名を指定してください。

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

   レプリケーション設定を取得するには、`get-bucket-replication` コマンドを使用します。

   ```
   $ aws s3api get-bucket-replication \
   --bucket amzn-s3-demo-source-bucket \
   --profile acctA
   ```

1. 次の手順を実行して、Amazon S3 コンソールでセットアップをテストします。

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

   1. 左側のナビゲーションペインで、**[バケット]** を選択します。**[汎用バケット]** リストで、レプリケート元バケットの名前を選択します。

   1. レプリケート元バケットに という名前のフォルダを作成します`Tax` 

   1. レプリケート元バケット内の `Tax` フォルダにサンプルオブジェクトを追加します。
**注記**  
Amazon S3 がオブジェクトをレプリケートするのにかかる時間は、オブジェクトのサイズによって異なります。レプリケーションのステータスを確認する方法については、「[レプリケーションステータス情報の取得](replication-status.md)」を参照してください。

      レプリケート先バケットで、以下の点を確認します。
      + Amazon S3 がオブジェクトをレプリケートしたこと。
      + オブジェクトがレプリカであること。オブジェクトの **[プロパティ]** タブで、**[オブジェクト管理の概要]** セクションまでスクロールします。**[管理設定]** で、**[レプリケーションステータス]** の [値] を確認します。この値が `REPLICA` に設定されていることを確認します。
      + レプリカがレプリケート元バケットアカウントによって所有されていること。オブジェクトの **[アクセス許可]** タブで、オブジェクトの所有権を確認できます。

        レプリケート元とレプリケート先のバケットが、異なるアカウントによって所有されている場合、オプションの設定を追加して、レプリカの所有権をレプリケート先バケットに変更するように Amazon S3 に対して指示できます。例については、[レプリカの所有者を変更する方法](replication-change-owner.md#replication-walkthrough-3)を参照してください。

## AWS SDK の使用
<a name="replication-ex1-sdk"></a>

以下のコード例を使用して、AWS SDK for Java および AWS SDK for .NET で、レプリケーション設定をバケットにそれぞれ追加します。

**注記**  
暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「[暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)](replication-config-for-kms-objects.md)」を参照してください。
レプリケーションでオブジェクトロックを使用するには、レプリケーションの設定に使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの追加のアクセス許可を付与する必要があります。2 つの新しいアクセス許可とは `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのステートメントは要件を満たしています。詳細については、「[S3 レプリケーションでのオブジェクトロックの使用](object-lock-managing.md#object-lock-managing-replication)」を参照してください。

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

レプリケーション設定をバケットに追加し、AWS SDK for Java を使用して設定を取得および検証する場合は、S3Client を使用してレプリケーション設定をプログラムで管理できます。

AWS SDK for Java でレプリケーションを設定する方法の例については、「*Amazon S3 API リファレンス*」の「[Set replication configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/API/s3_example_s3_PutBucketReplication_section.html)」を参照してください。

------
#### [ C\$1 ]

以下の AWS SDK for .NET のコード例では、バケットにレプリケーション設定を追加してから、その設定を取得します。このコードを使用するには、バケットの名前と IAM ロールの Amazon リソースネーム (ARN) を入力します。コード例を設定および実行する方法の詳細については、「AWS SDK for .NET デベロッパーガイド」の「[AWS SDK for .NET の開始方法](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/net-dg-config.html)」を参照してください。**

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

namespace Amazon.DocSamples.S3
{
    class CrossRegionReplicationTest
    {
        private const string sourceBucket = "*** source bucket ***";
        // Bucket ARN example - arn:aws:s3:::destinationbucket
        private const string destinationBucketArn = "*** destination bucket ARN ***";
        private const string roleArn = "*** IAM Role ARN ***";
        // Specify your bucket region (an example region is shown).
        private static readonly RegionEndpoint sourceBucketRegion = RegionEndpoint.USWest2;
        private static IAmazonS3 s3Client;
        public static void Main()
        {
            s3Client = new AmazonS3Client(sourceBucketRegion);
            EnableReplicationAsync().Wait();
        }
        static async Task EnableReplicationAsync()
        {
            try
            {
                ReplicationConfiguration replConfig = new ReplicationConfiguration
                {
                    Role = roleArn,
                    Rules =
                        {
                            new ReplicationRule
                            {
                                Prefix = "Tax",
                                Status = ReplicationRuleStatus.Enabled,
                                Destination = new ReplicationDestination
                                {
                                    BucketArn = destinationBucketArn
                                }
                            }
                        }
                };

                PutBucketReplicationRequest putRequest = new PutBucketReplicationRequest
                {
                    BucketName = sourceBucket,
                    Configuration = replConfig
                };

                PutBucketReplicationResponse putResponse = await s3Client.PutBucketReplicationAsync(putRequest);

                // Verify configuration by retrieving it.
                await RetrieveReplicationConfigurationAsync(s3Client);
            }
            catch (AmazonS3Exception e)
            {
                Console.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
            }
            catch (Exception e)
            {
                Console.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
            }
        }
        private static async Task RetrieveReplicationConfigurationAsync(IAmazonS3 client)
        {
            // Retrieve the configuration.
            GetBucketReplicationRequest getRequest = new GetBucketReplicationRequest
            {
                BucketName = sourceBucket
            };
            GetBucketReplicationResponse getResponse = await client.GetBucketReplicationAsync(getRequest);
            // Print.
            Console.WriteLine("Printing replication configuration information...");
            Console.WriteLine("Role ARN: {0}", getResponse.Configuration.Role);
            foreach (var rule in getResponse.Configuration.Rules)
            {
                Console.WriteLine("ID: {0}", rule.Id);
                Console.WriteLine("Prefix: {0}", rule.Prefix);
                Console.WriteLine("Status: {0}", rule.Status);
            }
        }
    }
}
```

------

# 異なるアカウントでのバケットのレプリケーション設定
<a name="replication-walkthrough-2"></a>

ライブレプリケーションは、同一または異なる AWS リージョン にあるバケット間でオブジェクトを自動的に非同期でコピーする機能です。ライブレプリケーションでは、新しく作成されたオブジェクトおよびオブジェクトの更新が、レプリケート元バケットからレプリケート先バケットにコピーされます。詳細については、「[リージョン内およびリージョン間でのオブジェクトのレプリケート](replication.md)」を参照してください。

レプリケーションを設定するときは、レプリケート元バケットにレプリケーションルールを追加します。レプリケーションルールにより、レプリケート元のソースバケットオブジェクトと、レプリケートされたオブジェクトが保存されるレプリケート先バケットが定義されます。ルールを作成して、バケット内のすべてのオブジェクト、または特定のキー名のプレフィックス、1 つ以上のオブジェクトタグ、あるいはその両方を持つオブジェクトのサブセットをレプリケートできます。レプリケート先のバケットはレプリケート元バケットと同じ AWS アカウントにあっても、別のアカウントにあってもかまいません。

削除するオブジェクトバージョンの ID を指定した場合、Amazon S3 はソースバケット内のそのオブジェクトバージョンを削除します。しかし、レプリケート先バケット内でその削除をレプリケートすることはありません。つまり、レプリケート先バケットから同じオブジェクトバージョンを削除しません。これは悪意のある削除からデータを保護します。

バケットにレプリケーションルールを追加すると、ルールはデフォルトで有効になるため、保存するとすぐに動作を開始します。

レプリケート元バケットとレプリケート先バケットが異なる AWS アカウントによって所有されている場合のライブレプリケーションの設定は、両方のバケットが同じアカウントによって所有されている場合のレプリケーションの設定と似ています。ただし、クロスアカウントのシナリオでレプリケーションを設定する場合、いくつかの違いがあります。
+ レプリケート先バケット所有者は、レプリケート元バケット所有者に、レプリケート先バケットポリシーでオブジェクトをレプリケートするためのアクセス許可を付与する必要があります。
+ クロスアカウントのシナリオで AWS Key Management Service (AWS KMS) キー (SSE-KMS) を使用してサーバー側の暗号化で暗号化されたオブジェクトをレプリケートする場合、KMS キーの所有者は、KMS キーを使用するアクセス許可をレプリケート元バケット所有者に付与する必要があります。詳細については、「[クロスアカウントシナリオに対する追加のアクセス許可の付与](replication-config-for-kms-objects.md#replication-kms-cross-acct-scenario)」を参照してください。
+ デフォルトでは、レプリケートされたオブジェクトはレプリケート元バケット所有者によって所有されます。クロスアカウントのシナリオでは、レプリケーションを設定してレプリケーションされたオブジェクトの所有権をレプリケート先バケットの所有者に変更できます。詳細については、「[レプリカ所有者の変更](replication-change-owner.md)」を参照してください。

**レプリケート元バケットとレプリケート先バケットが異なる AWS アカウントによって所有されている場合にレプリケーションを設定するには**

1. この例では、レプリケーション元バケットとレプリケーション先バケットを 2 つの異なる AWS アカウントで作成します。AWS CLI には 2 つの認証情報プロファイルが設定されている必要があります。この例では、これらのプロファイル名に `acctA` と `acctB` を使用します。名前付きプロファイルの設定と使用に関する詳細については、「AWS Command Line Interface ユーザーガイド」の「[設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」を参照してください。**

1. 「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」の手順に従って、以下の変更を加えます。
   + レプリケート元バケットアクティビティ (レプリケート元バケットの作成、バージョニングの有効化、および IAM ロールの作成など) に関連するすべての AWS CLI コマンドには、`acctA` プロファイルを使用します。`acctB` プロファイルを使用してレプリケート先バケットを作成します。
   + この例で作成したレプリケート元バケット、およびレプリケート先バケットが IAM ロールのアクセス許可ポリシーで指定されていることを確認してください。

1. コンソールでレプリケート先バケットに次のバケットポリシーを追加して、レプリケート元バケットの所有者がオブジェクトをレプリケートできるようにします。手順については、「[Amazon S3 コンソールを使用したバケットポリシーの追加](add-bucket-policy.md)」を参照してください。必ず、レプリケート元バケット所有者の AWS アカウント ID、IAM ロール名、およびレプリケート先バケット名を指定してポリシーを編集してください。
**注記**  
次の例を使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。`amzn-s3-demo-destination-bucket` を、レプリケート先のバケットの名前に置き換えます。IAM Amazon リソースネーム (ARN) の `source-bucket-account-ID:role/service-role/source-account-IAM-role` を、このレプリケーション設定に使用する IAM ロールに置き換えます。  
IAM サービスロールを手動で作成した場合は、次のポリシー例に示すように、IAM ARN のロールパスを `role/service-role/` として設定します。詳細については、*IAM ユーザーガイド*の「[IAM の ARN](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-arns)」をご参照ください。

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

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "",
       "Statement": [
           {
               "Sid": "Set-permissions-for-objects",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
               },
               "Action": [
                   "s3:ReplicateObject",
                   "s3:ReplicateDelete"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
           },
           {
               "Sid": "Set-permissions-on-bucket",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/service-role/source-account-IAM-role"
               },
               "Action": [
                   "s3:GetBucketVersioning",
                   "s3:PutBucketVersioning"
               ],
               "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
           }
       ]
   }
   ```

------

1. (オプション) SSE-KMS で暗号化されたオブジェクトをレプリケートする場合、KMS キーの所有者は、KMS キーを使用するアクセス許可をレプリケート元バケット所有者に付与する必要があります。詳細については、「[クロスアカウントシナリオに対する追加のアクセス許可の付与](replication-config-for-kms-objects.md#replication-kms-cross-acct-scenario)」を参照してください。

1. (オプション) レプリケーションでは、デフォルトで、レプリケート元オブジェクトの所有者もレプリカを所有しています。レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有権を変更するためのオプション設定を追加できます。これには、`ObjectOwnerOverrideToBucketOwner` 許可の付与が含まれます。詳細については、「[レプリカ所有者の変更](replication-change-owner.md)」を参照してください。

# レプリカ所有者の変更
<a name="replication-change-owner"></a>

レプリケーションでは、デフォルトで、レプリケート元オブジェクトの所有者もレプリカを所有しています。しかし、レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリカの所有権を変更することができます。例えば、所有権を変更して、オブジェクトレプリカへのアクセスを制限できます。レプリケーション設定では、レプリカの所有権をレプリカ先バケットを所有する AWS アカウントに変更するためのオプションの設定を追加できます。

レプリカ所有者を変更するには、以下を実行します。
+ レプリカの所有権を変更するよう Amazon S3 に指示するには、レプリケーション設定に所有者オーバーライドオプションを追加します。**
+ レプリカの所有権を変更する `s3:ObjectOwnerOverrideToBucketOwner` アクセス許可を Amazon S3 に付与します。
+ レプリケート先バケットポリシーに `s3:ObjectOwnerOverrideToBucketOwner` アクセス許可を追加して、レプリカの所有権を変更できるようにします。`s3:ObjectOwnerOverrideToBucketOwner` アクセス許可により、レプリケート先バケットの所有者がオブジェクトレプリカの所有権を受け入れることができるようになります。

詳細については、「[所有権オーバーライドオプションに関する考慮事項](#repl-ownership-considerations)」および「[レプリケーション設定への所有者オーバーライドオプションの追加](#repl-ownership-owneroverride-option)」を参照してください。ステップバイステップの手順を含む実例については、「[レプリカの所有者を変更する方法](#replication-walkthrough-3)」を参照してください。

**重要**  
所有者オーバーライドオプションを使用する代わりに、オブジェクト所有権にバケット所有者の強制設定を使用できます。S3 レプリケーションを使用し、レプリケート元バケットとレプリケート先バケットが異なる AWS アカウントによって所有される場合、バケットを使用する場合、レプリケート先バケットのバケット所有者は [オブジェクト所有権] に対するバケット所有者の強制設定を使用して、レプリカの所有権を送信先バケットを所有する AWS アカウントに変更することができます。この設定は、オブジェクトアクセスコントロールリスト (ACL) を無効にします。  
このバケット所有者の強制設定は、`s3:ObjectOwnerOverrideToBucketOwner` 許可の必要なく、既存の所有者のオーバーライド動作を模倣します。バケット所有者強制設定で宛先バケットにレプリケーションされるすべてのオブジェクトは、宛先バケット所有者によって所有されます。オブジェクトの所有権の詳細については、「[オブジェクトの所有権の制御とバケットの ACL の無効化。](about-object-ownership.md)」を参照してください。

## 所有権オーバーライドオプションに関する考慮事項
<a name="repl-ownership-considerations"></a>

所有権オーバーライドオプションを設定するときは、次の考慮事項が適用されます。
+ デフォルトでは、レプリケート元オブジェクトの所有者がレプリカの所有者となります。Amazon S3 は、オブジェクトバージョンとそれに関連付けられた ACL をレプリケートします。

  レプリケーション設定に所有者オーバーライドオプションを追加すると、Amazon S3 はオブジェクトのバージョンのみをレプリケートし、ACL はレプリケートしません。さらに、Amazon S3 は、以降の変更をレプリケート元オブジェクト ACL にレプリケートしません。Amazon S3 は、完全な制御をレプリケート先バケット所有者に許可する ACL をレプリカに設定します。
+  所有者オーバーライドを有効、または無効にするようにレプリケーション設定を更新すると、以下の挙動が生じます。
  + レプリケーション設定へ所有者オーバーライドオプションを追加する場合。

    Amazon S3 がオブジェクトバージョンをレプリケートすると、レプリケート元オブジェクトに関連付けられている ACL は破棄されます。代わりに、Amazon S3 は完全なコントロールをレプリケート先バケットの所有者に与えるレプリカに設定されます。Amazon S3 は、以降の変更をレプリケート元オブジェクト ACL にレプリケートしません。ただし、この ACL 変更は、所有者オーバーライドオプションを設定する前にレプリケートされたオブジェクトバージョンには適用されません。所有者オーバーライドが設定される前にレプリケートされたレプリケート元オブジェクトの ACL 更新は、レプリケートされ続けます (オブジェクトとそのレプリカの所有者が引き続き同じであるため)。
  + レプリケーション設定から所有者オーバーライドオプションを削除する場合。

    Amazon S3 は、レプリケート元バケットと関連 ACL に表示される新しいオブジェクトを、レプリケート先バケットにレプリケートします。所有者オーバーライドを削除する前にレプリケートされたオブジェクトの場合、Amazon S3 によるオブジェクト所有権の変更が有効なため、Amazon S3 は ACL をレプリケートしません。つまり、所有者オーバーライド設定時にレプリケートされたオブジェクトバージョンに設定された ACL は、引き続きレプリケートされません。

## レプリケーション設定への所有者オーバーライドオプションの追加
<a name="repl-ownership-owneroverride-option"></a>

**警告**  
所有者オーバーライドオプションを追加するのは、レプリケーション元バケットとレプリケーション先バケットが異なる AWS アカウントによって所有されている場合のみです。Amazon S3 はバケットが同じアカウントによって所有されているか、異なるアカウントによって所有されているかをチェックしません。両方のバケットが同じ AWS アカウントによって所有されている場合に所有者オーバーライドを追加すると、Amazon S3 は所有者オーバーライドを適用します。このオプションは、レプリケート先バケットの所有者にフルアクセス権を付与し、その後の更新はソースオブジェクトのアクセスコントロールリスト (ACL) にレプリケートされません。レプリカの所有者は、`PutObjectAcl` リクエストを持つレプリカに関連付けられた ACL を直接変更できますが、レプリケーションを通して変更することはできません。

所有者の上書きオプションを指定するには、各`Destination`要素に次を追加します。
+ Amazon S3 にレプリカの所有権を変更するよう指示する `AccessControlTranslation` 要素
+ レプリケート先バケット所有者の AWS アカウントを指定する `Account` 要素 

```
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    ...
    <Destination>
      ...
      <AccessControlTranslation>
           <Owner>Destination</Owner>
       </AccessControlTranslation>
      <Account>destination-bucket-owner-account-id</Account>
    </Destination>
  </Rule>
</ReplicationConfiguration>
```

次のレプリケーション設定例では、*`Tax`* キープレフィックスを持つオブジェクトを `amzn-s3-demo-destination-bucket` レプリケート先バケットにレプリケートし、レプリカの所有権を変更するようAmazon S3 に指示します。この例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
   <Role>arn:aws:iam::account-id:role/role-name</Role>
   <Rule>
      <ID>Rule-1</ID>
      <Priority>1</Priority>
      <Status>Enabled</Status>
      <DeleteMarkerReplication>
         <Status>Disabled</Status>
      </DeleteMarkerReplication>
      <Filter>
         <Prefix>Tax</Prefix>
      </Filter>
      <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
         <Account>destination-bucket-owner-account-id</Account>
         <AccessControlTranslation>
            <Owner>Destination</Owner>
         </AccessControlTranslation>
      </Destination>
   </Rule>
</ReplicationConfiguration>
```

## レプリカの所有権を変更するための Amazon S3 アクセス許可の付与
<a name="repl-ownership-add-role-permission"></a>

AWS Identity and Access Management IAM ロールに関連付けられているアクセス許可ポリシーに `s3:ObjectOwnerOverrideToBucketOwner` アクションのアクセス許可を追加することで、Amazon S3 にレプリカの所有権を変更するアクセス許可を付与します。このロールは、Amazon S3 がユーザーに代わってオブジェクトを引き受けてレプリケートすることを可能にする、レプリケーション設定で指定した IAM ロールです。次の例を使用するには、`amzn-s3-demo-destination-bucket` をレプリケート先バケットの名前に置き換えます。

```
...
{
    "Effect":"Allow",
         "Action":[
       "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
}
...
```

## レプリケート先バケットポリシーへのレプリカの所有権を変更するアクセス許可の追加
<a name="repl-ownership-accept-ownership-b-policy"></a>

レプリケート先バケットの所有者は、レプリケート元バケットの所有者に、レプリカの所有権を変更するためのアクセス権限を付与する必要があります。レプリケート先バケットの所有者は、レプリケート元バケットの所有者に、`s3:ObjectOwnerOverrideToBucketOwner` アクションのためのアクセス権限を付与します。このアクセス許可により、レプリケート先バケット所有者はオブジェクトレプリカの所有権を受け入れることができるようになります。次のバケットポリシーステートメントの例は、この操作を行う方法を示しています。この例を実行するには、`user input placeholders` をユーザー自身の情報に置き換えます。

```
...
{
    "Sid":"1",
    "Effect":"Allow",
    "Principal":{"AWS":"source-bucket-account-id"},
    "Action":["s3:ObjectOwnerOverrideToBucketOwner"],
    "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
}
...
```

## レプリカの所有者を変更する方法
<a name="replication-walkthrough-3"></a>

レプリケーション設定内のレプリケーション元のバケットとレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合、Amazon S3 に対し、レプリカの所有権をレプリケーション先のバケットを所有している AWS アカウントに変更するよう指示できます。次の例は、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、および AWS SDK を使用してレプリカの所有権を変更する方法を示しています。

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

手順については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。このトピックでは、レプリケート元およびレプリケート先バケットが同一の、または異なる AWS アカウントによって所有されている場合にレプリケーション設定を行う手順について説明します。

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

次の手順は、AWS CLI を使用してレプリカの所有権を変更する方法を示しています。この手順では、次の操作を行います。
+ レプリケート元バケットとレプリケート先バケットを作成します。
+ バケットでのバージョニングを有効化します。
+ オブジェクトをレプリケートするための Amazon S3 許可を付与する AWS Identity and Access Management (IAM) ロールを作成します。
+ レプリケート元バケットにレプリケーション設定を追加します。
+ レプリケーション設定で、Amazon S3 にレプリカ所有権の変更を指示します。
+ レプリケーション設定をテストします。

**レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合にレプリカの所有権を変更するには (AWS CLI)**

この手順の AWS CLI コマンドの例を使用するには、`user input placeholders` を自分の情報に置き換えてください。

1. この例では、レプリケート元およびレプリケート先バケットを 2 つの異なる AWS アカウントで作成します。これらの 2 つのアカウントを使用するには、2 つの名前付きプロファイルで AWS CLI を設定します。この例では、それぞれ *`acctA`* と *`acctB`* という名前のプロファイルを使用します。名前付きプロファイルの設定と使用に関する詳細については、「AWS Command Line Interface ユーザーガイド」の「[設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」を参照してください。**
**重要**  
この手順に使用するプロファイルは、必要なアクセス権限を持っている必要があります。たとえば、レプリケーション設定で、Amazon S3 が引き受けることができる IAM ロールを指定します。使用するプロファイルに `iam:PassRole` アクセス権限がある場合のみ実行できます。管理者ユーザーの認証情報を使用して名前付きプロファイルを作成すると、この手順のすべてのタスクを実行できるようになります。詳細については、*IAM ユーザーガイド*の「[AWS のサービス のサービスにロールを渡すアクセス権限をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。

1. レプリケート元バケットを作成してバージョニングを有効にします。この例では、米国東部 (バージニア北部) (`us-east-1`) リージョンに `amzn-s3-demo-source-bucket` というレプリケート元バケットを作成します。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. レプリケート先バケットを作成してバージョニングを有効にします。この例では、米国西部 (オレゴン) (`us-west-2`) リージョンに `amzn-s3-demo-destination-bucket` というレプリケート先バケットを作成します。レプリケート元バケットに使用したものとは異なる AWS アカウントプロファイルを使用してください。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctB
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctB
   ```

1. レプリケート先バケットポリシーにアクセス許可を追加して、レプリカの所有権を変更できるようにします。

   1.  次のポリシーを `destination-bucket-policy.json` という名前のファイルに保存します。*`user input placeholders`* をユーザー自身の情報に必ず置き換えます。

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "destination_bucket_policy_sid",
                  "Principal": {
                      "AWS": "source-bucket-owner-123456789012"
                  },
                  "Action": [
                      "s3:ReplicateObject",
                      "s3:ReplicateDelete",
                      "s3:ObjectOwnerOverrideToBucketOwner",
                      "s3:ReplicateTags",
                      "s3:GetObjectVersionTagging"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
                  ]
              }
          ]
      }
      ```

------

   1. 次の `put-bucket-policy` コマンドを使用して、前述のポリシーを送信先バケットに追加します。

      ```
      aws s3api put-bucket-policy --region $ {destination-region} --bucket $ {amzn-s3-demo-destination-bucket} --policy file://destination_bucket_policy.json
      ```

1. IAM ロールを作成します。レプリケート元バケットに後で追加するレプリケーション設定でこのロールを指定します。Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするこの ロールを引き受けます。IAM ロールは 2 つのステップで作成します。
   + ロールを作成します。
   + アクセス権限ポリシーをロールにアタッチします。

   1. IAM ロールを作成します。

      1. 次の信頼ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある `s3-role-trust-policy.json` という名前のファイルに保存します。このポリシーは、Amazon S3 がロールを引き受けるためのアクセス許可を付与します。

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

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. 次の AWS CLI `create-role` コマンドを実行して、IAM ロールを作成します。

         ```
         $ aws iam create-role \
         --role-name replicationRole \
         --assume-role-policy-document file://s3-role-trust-policy.json  \
         --profile acctA
         ```

         作成した IAM ロールの Amazon リソースネーム (ARN) を書き留めます。この ARN は、後のステップで必要になります。

   1. アクセス権限ポリシーをロールにアタッチします。

      1. 次のアクセス権限ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある `s3-role-perm-pol-changeowner.json` という名前のファイルに保存します。このポリシーは、さまざまな Amazon S3 バケットとオブジェクトアクションに対するアクセス許可を付与します。次の手順では、このポリシーを先ほど作成した IAM ロールにアタッチします。

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

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ListBucket",
                     "s3:GetReplicationConfiguration"
                  ],
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket"
                  ]
               },
               {
                  "Effect":"Allow",
                  "Action":[
                     "s3:ReplicateObject",
                     "s3:ReplicateDelete",
                     "s3:ObjectOwnerOverrideToBucketOwner",
                     "s3:ReplicateTags",
                     "s3:GetObjectVersionTagging"
                  ],
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               }
            ]
         }
         ```

------

      1. 前述のアクセス許可ポリシーをロールにアタッチするには、次の `put-role-policy` コマンドを実行します。

         ```
         $ aws iam put-role-policy \
         --role-name replicationRole \
         --policy-document file://s3-role-perm-pol-changeowner.json \
         --policy-name replicationRolechangeownerPolicy \
         --profile acctA
         ```

1. レプリケーション設定をレプリケート元バケットに追加します。

   1. AWS CLI では、レプリケーション設定を JSON で指定する必要があります。以下の JSON を、ローカルコンピュータの現在のディレクトリにある、`replication.json` というファイルに保存します。設定では、`AccessControlTranslation` はレプリカ所有権のレプリケート元バケット所有者からレプリケート先バケット所有者への変更を指定します。

      ```
      {
         "Role":"IAM-role-ARN",
         "Rules":[
            {
               "Status":"Enabled",
               "Priority":1,
               "DeleteMarkerReplication":{
                  "Status":"Disabled"
               },
               "Filter":{
               },
               "Status":"Enabled",
               "Destination":{
                  "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket",
                  "Account":"destination-bucket-owner-account-id",
                  "AccessControlTranslation":{
                     "Owner":"Destination"
                  }
               }
            }
         ]
      }
      ```

   1. レプリケート先バケット名、レプリケート先バケット所有者アカウント ID、および `IAM-role-ARN` の値を指定して JSON を編集します。*`IAM-role-ARN`* を先ほど作成した IAM ロールの ARN に置き換えます。変更を保存します。

   1. 次のコマンドを実行して、レプリケート元バケットにレプリケーション設定を追加します。

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

1. Amazon S3 コンソールでレプリカの所有権を確認して、レプリケーション設定をテストします。

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

   1. オブジェクトをレプリケート元バケットに追加します。レプリケート先バケットにオブジェクトレプリカが含まれていること、およびレプリカの所有権がレプリケート先バケットを所有する AWS アカウントに変更されていることを確認します。

### AWS SDK の使用
<a name="replication-ex3-sdk"></a>

 レプリケーション設定を追加するコード例については、「[AWS SDK の使用](replication-walkthrough1.md#replication-ex1-sdk)」を参照してください。レプリケーション設定を適切に変更する必要があります。概念については、「[レプリカ所有者の変更](#replication-change-owner)」を参照してください。

# S3 Replication Time Control (S3 RTC)を使用してコンプライアンス要件を満たす
<a name="replication-time-control"></a>

S3 Replication Time Control (S3 RTC) では、データレプリケーションに関するコンプライアンス要件 (またはビジネス要件) への対応をサポートします。また、Amazon S3 レプリケーション時間を可視化します。S3 RTC は、Amazon S3 にアップロードしたほとんどのオブジェクトを数秒でレプリケートします。99.9% のオブジェクトが 15 分以内にレプリケートされます。

デフォルトでは、S3 RTC にはレプリケーションの進行状況を追跡する 2 つの方法があります。
+ **S3 レプリケーションメトリクス** – S3 レプリケーションメトリクスを使用すると、レプリケーションを保留している S3 API オペレーションの合計数、レプリケーションを保留しているオブジェクトの合計サイズ、およびレプリケート先のリージョンへの最大レプリケーション時間、およびレプリケーションに失敗したオペレーションの合計数をモニタリングできます。次に、個別にレプリケートする各データセットをモニタリングできます。S3 レプリケーションメトリクスは、S3 RTC とは別に有効化することもできます。詳細については、「[S3 レプリケーションメトリクスの使用](repl-metrics.md)」を参照してください。

  S3 Replication Time Control (S3 RTC) が有効なレプリケーションルールは、S3 レプリケーションメトリクスをパブリッシュします。レプリケーションメトリクスは、S3 RTC が有効になってから 15 分以内に使用できます。レプリケーションメトリクスは、Amazon S3 コンソール、Amazon S3 API、AWS SDK、AWS Command Line Interface (AWS CLI)、および Amazon CloudWatch を通じて利用できます。CloudWatch のメトリクスの詳細については、「[Amazon CloudWatch によるメトリクスのモニタリング](cloudwatch-monitoring.md)」を参照してください。Amazon S3 コンソールを使用したレプリケーションメトリクスの表示の詳細については、「[レプリケーションメトリクスの表示](repl-metrics.md#viewing-replication-metrics)」を参照してください。

  S3 レプリケーションメトリクスは、Amazon CloudWatch カスタムメトリクスと同じ料金レートで請求されます。詳細については、「[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。
+ **Amazon S3 イベント通知** – S3 RTC は、オブジェクトレプリケーションが 15 分のしきい値を超えた場合、またはしきい値の後に発生した場合に、バケット所有者に通知する `OperationMissedThreshold` および `OperationReplicatedAfterThreshold` イベントを提供します。S3 RTC を使用すると、まれなケースとして、オブジェクトが 15 分以内にレプリケートされなかったとき、またこれらのオブジェクトが 15 分のしきい値の後にレプリケートされたときに、Amazon S3 イベント通知から通知を受け取ることができます。

  レプリケーションイベントは、S3 RTC が有効になってから 15 分以内に使用できます。Amazon S3 イベント通知は、Amazon SQS、Amazon SNS、または AWS Lambda を通じて利用できます。詳細については、「[Amazon S3 イベント通知によるレプリケーション失敗イベントの受信](replication-metrics-events.md)」を参照してください。

 

## S3 RTC のベストプラクティスとガイドライン
<a name="rtc-best-practices"></a>

S3 Replication Time Control (S3 RTC) を有効にして Amazon S3 にデータをレプリケートする場合は、以下のベストプラクティスガイドラインに従って、ワークロードのレプリケーションパフォーマンスを最適化します。

**Topics**
+ [

### Amazon S3 レプリケーションおよびリクエストレートのパフォーマンスガイドライン
](#rtc-request-rate-performance)
+ [

### レプリケーションリクエストレートの見積り
](#estimating-replication-request-rates)
+ [

### S3 RTC データ転送レートクォータを超過する場合
](#exceed-rtc-data-transfer-limits)
+ [

### AWS KMS 暗号化オブジェクトのレプリケーションリクエストレート
](#kms-object-replication-request-rates)

### Amazon S3 レプリケーションおよびリクエストレートのパフォーマンスガイドライン
<a name="rtc-request-rate-performance"></a>

アプリケーションは、Amazon S3 レプリケーション のストレージをアップロードおよび取得する際に、リクエストパフォーマンスで 1 秒あたり何千ものトランザクションを達成できます。例えば、アプリケーションは S3 バケットでプレフィックスあたり毎秒 3,500 個以上の `PUT`/`COPY`/`POST`/`DELETE` リクエストまたは 5,500 個以上の `GET`/`HEAD` リクエストを処理できます。これには、S3 レプリケーションがユーザーに代わって行うリクエストも含まれます。バケット内のプレフィックスの数に制限はありません。読み取りを並列化することによって読み取りまたは書き込みのパフォーマンスを向上させることができます。例えば、S3 バケットに 10 個のプレフィックスを作成して読み取りを並列化すると、読み取りパフォーマンスを 1 秒あたり 55,000 回の読み取りリクエストにスケールできます。

Amazon S3 は、これらのガイドラインを上回る持続的なリクエストレートや、`LIST` リクエストで同時実行される持続的なリクエストレートに応じて自動的にスケールします。Amazon S3 が新しいリクエストレートに合わせて最適化を行っている間、最適化が完了するまで一時的に HTTP 503 リクエストレスポンスが送信される場合があります。この動作は、1 秒あたりのリクエスト数が増加したときや、S3 RTC を初めて有効にしたときに発生する場合があります。この間は、レプリケーションのレイテンシーが増加する可能性があります。S3 RTC サービスレベルアグリーメント (SLA) は、1 秒あたりのリクエストに関する Amazon S3 パフォーマンスガイドラインを超えた期間には適用されません。

S3 RTC SLA は、レプリケーションデータ転送速度がデフォルトの 1 Gbps クォータ制限を超えた期間にも適用されません。レプリケーション転送速度が 1 Gbps を超えることが予想される場合は、[AWS サポート センター](https://console.aws.amazon.com/support/home#/)に問い合わせるか、[Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) を使用してレプリケーション転送速度クォータの引き上げをリクエストできます。

### レプリケーションリクエストレートの見積り
<a name="estimating-replication-request-rates"></a>

合計リクエストレート (Amazon S3 レプリケーションがユーザーに代わって行うリクエストを含む) は、レプリケート元バケットとレプリケート先バケットの両方で Amazon S3 リクエストレートのガイドライン内に収まる必要があります。レプリケートされたオブジェクトごとに、Amazon S3 レプリケーションがレプリケート元に最大 5 件の `GET`/`HEAD` リクエストと 1 件の `PUT` リクエストを行い、レプリケート先バケットに 1 件の `PUT` リクエストを行います。

例えば、1 秒あたり 100 個のオブジェクトをレプリケートする場合、Amazon S3 レプリケーションはユーザーに代わって 100 件の `PUT` リクエストを追加で実行する可能性があります。つまり、レプリケート元 S3 バケットに対して 1 秒あたり合計 200 個の `PUT` リクエストが実行されることになります。Amazon S3 レプリケーションでは、最大 500 件の `GET`/`HEAD` (レプリケートされたオブジェクトごとに 5 件の `GET`/`HEAD` リクエスト) を実行する可能性があります。

**注記**  
レプリケートされたオブジェクトごとに 1 つの `PUT` リクエストに対してのみコストが発生します。詳細については、「[Amazon S3 のレプリケーションに関するよくある質問](https://aws.amazon.com/s3/faqs/#Replication)」で料金情報を参照してください。

### S3 RTC データ転送レートクォータを超過する場合
<a name="exceed-rtc-data-transfer-limits"></a>

S3 RTC のデータ転送速度がデフォルトの 1 Gbps のクォータを超えると予想される場合は、[AWS サポート センター](https://console.aws.amazon.com/support/home#/)に問い合わせるか、[Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) を使用して、レプリケーション転送速度クォータの引き上げをリクエストしてください。

### AWS KMS 暗号化オブジェクトのレプリケーションリクエストレート
<a name="kms-object-replication-request-rates"></a>

AWS Key Management Service (AWS KMS) キーを使用したサーバー側の暗号化 (SSE-KMS) で暗号化されたオブジェクトをレプリケートする場合、AWS KMS リクエスト/秒のクォータが適用されます。AWS KMS は、リクエストレートが 1 秒あたりのリクエスト数のクォータを超えているために (そうでなければ) 有効なリクエストを拒否することがあります。リクエストが抑制調整されると、AWS KMS は `ThrottlingException` エラーを返します。AWS KMS リクエストレートのクォータは、ユーザーが直接行うリクエストと、ユーザーに代わって Amazon S3 レプリケーションが行うリクエストに適用されます。

例えば、1 秒あたり 1,000 個のオブジェクトをレプリケートする場合、AWS KMS リクエストレートのクォータから 2,000 個のリクエストを差し引くことができます。差し引いた後の 1 秒あたりのリクエストレートを、レプリケーションを除く AWS KMS ワークロードで使用できます。[AWS KMSAmazon CloudWatch でリクエストメトリクス](https://docs.aws.amazon.com/kms/latest/developerguide/monitoring-cloudwatch.html)を使用して、AWS アカウント の合計 AWS KMS リクエストレートをモニタリングできます。

1 秒あたりの AWS KMS リクエストのクォータ数の増加をリクエストするには、[AWS サポート センター](https://console.aws.amazon.com/support/home#/)に問い合わせるか、[Service Quotas](https://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html) を使用します。

## S3 レプリケーション時間コントロールの有効化
<a name="replication-walkthrough-5"></a>

新しいレプリケーションルールまたは既存のレプリケーションルールで S3 Replication Time Control (S3 RTC) の使用を開始できます。レプリケーションルールを バケット全体に適用するか、特定のプレフィックスやタグを持つオブジェクトに適用するかを選択できます。S3 RTC を有効にすると、レプリケーションルールで S3 レプリケーションメトリクスも有効になります。

S3 RTC は、Amazon S3 コンソール、Amazon S3 API、AWS SDK、AWS Command Line Interface (AWS CLI) を使用して設定することができます。

**Topics**

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

手順については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。このトピックでは、レプリケート元バケットとレプリケーション先バケットが同じまたは異なる AWS アカウントで所有されている場合に、レプリケーション設定で S3 レプリケーション RTC を有効にする手順について説明します。

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

AWS CLI を使用して S3 RTC が有効になったオブジェクトをレプリケートするには、バケットを作成し、バケットのバージョニングを有効にします。さらに、IAM ロールを作成して Amazon S3 にオブジェクトをレプリケートする許可を与え、レプリケート元バケットにレプリケーション設定を追加します。次の例に示すように、レプリケーション設定では S3 RTC が有効になっている必要があります。

AWS CLI を使用してレプリケーション設定を設定する手順については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。

次のレプリケーション設定例では、レプリケーションルールの `ReplicationTime` と `EventThreshold` の値を有効にして設定します。これらの値を有効にして設定すると、ルールで S3 RTC が有効になります。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "DeleteMarkerReplication": {
                "Status": "Disabled"
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket",
                "Metrics": {
                    "Status": "Enabled",
                    "EventThreshold": {
                        "Minutes": 15
                    }
                },
                "ReplicationTime": {
                    "Status": "Enabled",
                    "Time": {
                        "Minutes": 15
                    }
                }
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

**重要**  
 `Metrics:EventThreshold:Minutes` と `ReplicationTime:Time:Minutes` に設定できる唯一の有効な値は `15` です。

### AWS SDK for Java の使用
<a name="replication-ex5-sdk"></a>

 有効にした S3 Replication Time Control (S3 RTC) でレプリケーション設定を追加する Java の例は、次のとおりです。

```
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.model.DeleteMarkerReplication;
import software.amazon.awssdk.services.s3.model.Destination;
import software.amazon.awssdk.services.s3.model.Metrics;
import software.amazon.awssdk.services.s3.model.MetricsStatus;
import software.amazon.awssdk.services.s3.model.PutBucketReplicationRequest;
import software.amazon.awssdk.services.s3.model.ReplicationConfiguration;
import software.amazon.awssdk.services.s3.model.ReplicationRule;
import software.amazon.awssdk.services.s3.model.ReplicationRuleFilter;
import software.amazon.awssdk.services.s3.model.ReplicationTime;
import software.amazon.awssdk.services.s3.model.ReplicationTimeStatus;
import software.amazon.awssdk.services.s3.model.ReplicationTimeValue;

public class Main {

  public static void main(String[] args) {
    S3Client s3 = S3Client.builder()
      .region(Region.US_EAST_1)
      .credentialsProvider(() -> AwsBasicCredentials.create(
          "AWS_ACCESS_KEY_ID",
          "AWS_SECRET_ACCESS_KEY")
      )
      .build();

    ReplicationConfiguration replicationConfig = ReplicationConfiguration
      .builder()
      .rules(
          ReplicationRule
            .builder()
            .status("Enabled")
            .priority(1)
            .deleteMarkerReplication(
                DeleteMarkerReplication
                    .builder()
                    .status("Disabled")
                    .build()
            )
            .destination(
                Destination
                    .builder()
                    .bucket("destination_bucket_arn")
                    .replicationTime(
                        ReplicationTime.builder().time(
                            ReplicationTimeValue.builder().minutes(15).build()
                        ).status(
                            ReplicationTimeStatus.ENABLED
                        ).build()
                    )
                    .metrics(
                        Metrics.builder().eventThreshold(
                            ReplicationTimeValue.builder().minutes(15).build()
                        ).status(
                            MetricsStatus.ENABLED
                        ).build()
                    )
                    .build()
            )
            .filter(
                ReplicationRuleFilter
                    .builder()
                    .prefix("testtest")
                    .build()
            )
        .build())
        .role("role_arn")
        .build();

    // Put replication configuration
    PutBucketReplicationRequest putBucketReplicationRequest = PutBucketReplicationRequest
      .builder()
      .bucket("source_bucket")
      .replicationConfiguration(replicationConfig)
      .build();

    s3.putBucketReplication(putBucketReplicationRequest);
  }
}
```

# 暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)
<a name="replication-config-for-kms-objects"></a>

**重要**  
Amazon S3 では、Amazon S3 内のすべてのバケットの基本レベルの暗号化として、Amazon S3 が管理するキー (SSE-S3) によるサーバー側の暗号化が適用されるようになりました。2023 年 1 月 5 日以降、Amazon S3 にアップロードされるすべての新しいオブジェクトは、追加費用なしで、パフォーマンスに影響を与えずに自動的に暗号化されます。S3 バケットのデフォルト暗号化設定と新しいオブジェクトのアップロードのための自動暗号化ステータスは、CloudTrail ログ、S3 インベントリ、S3 ストレージレンズ、Amazon S3 コンソール、および AWS CLI と AWS SDK の追加の Amazon S3 API レスポンスヘッダーとして利用できるようになりました。詳細については、「[デフォルト暗号化に関するよくある質問](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)」を参照してください。

サーバー側の暗号化を使用して暗号化されているオブジェクトをレプリケートする場合は、いくつかの特別な考慮事項があります。Amazon S3 は、以下の 3 種類のサーバー側の暗号化をサポートしています。
+ Amazon S3 マネージドキーを用いたサーバー側の暗号化 (SSE-S3)
+ AWS Key Management Service (AWS KMS) キー (SSE-KMS) によるサーバー側の暗号化
+ AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS)
+ お客様が用意したキーを使用したサーバー側の暗号化 (SSE-C)

サーバーサイドの暗号化の詳細については、「[サーバー側の暗号化によるデータの保護](serv-side-encryption.md)」を参照してください。

このトピックでは、サーバー側の暗号化を使用して暗号化されているオブジェクトをレプリケートするよう Amazon S3 に指示するために必要なアクセス許可について説明します。このトピックでは、追加できるその他の設定要素や、暗号化されたオブジェクトのレプリケーションに必要なアクセス許可を付与する AWS Identity and Access Management (IAM) ポリシーの例も提供します。

ステップバイステップの手順と例については、「[暗号化されたオブジェクトのレプリケーションの有効化](#replication-walkthrough-4)」を参照してください。レプリケーション設定の作成については、「[リージョン内およびリージョン間でのオブジェクトのレプリケート](replication.md)」を参照してください。

**注記**  
Amazon S3 では、マルチリージョン AWS KMS keys を使用できます。ただし、Amazon S3 では現在、マルチリージョンキーは、単一リージョンキーであるかのように処理され、キーのマルチリージョン特徴は使用しません。詳細については、AWS Key Management Service デベロッパーガイドの「[マルチリージョンキーを使用する](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)」を参照してください。**

**Topics**
+ [

## バケットのデフォルトの暗号化がレプリケーションに与える影響
](#replication-default-encryption)
+ [

## SSE-C で暗号化されたオブジェクトのレプリケーション
](#replicationSSEC)
+ [

## SSE-S3、SSE-KMS、または DSSE-KMS で暗号化されたオブジェクトのレプリケーション
](#replications)
+ [

## 暗号化されたオブジェクトのレプリケーションの有効化
](#replication-walkthrough-4)

## バケットのデフォルトの暗号化がレプリケーションに与える影響
<a name="replication-default-encryption"></a>

レプリケーション先バケットのデフォルトの暗号化を有効にすると、以下の暗号化動作が適用されます。
+ レプリケート元バケットのオブジェクトが暗号化されていない場合、レプリケート先バケットのレプリカオブジェクトはレプリケート先バケットのデフォルトの暗号化設定を使用して暗号化されます。そのため、レプリケート元のオブジェクトのエンティティタグ (ETag) はレプリカオブジェクトの ETag とは異なります。アプリケーションで ETag を使用している場合は、アプリケーションを更新して、この違いを反映する必要があります。
+ レプリケート元バケット内のオブジェクトが Amazon S3 マネージドキーによるサーバー側の暗号化 (SSE-S3)、AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS)、または AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS) を使用して暗号化されている場合、レプリケート先バケットのレプリカオブジェクトは、レプリケート元オブジェクトと同じタイプの暗号化を使用します。レプリケート先バケットのデフォルトの暗号化設定は使用されません。

## SSE-C で暗号化されたオブジェクトのレプリケーション
<a name="replicationSSEC"></a>

お客様が指定したキーによるサーバー側の暗号化 (SSE-C) を使用することで、独自の暗号化キーを管理できます。SSE-C ではユーザーがキーを管理し、Amazon S3 は暗号化と復号のプロセスを管理します。ユーザーはリクエストの一部として暗号化キーを指定する必要がありますが、オブジェクトの暗号化または復号を実行するコードを記述する必要はありません。オブジェクトをアップロードすると、Amazon S3 は指定されたキーを使用してオブジェクトを暗号化します。その後、Amazon S3 はそのキーをメモリから削除します。オブジェクトを取得するときは、リクエストの中で同じ暗号化キーを指定する必要があります。詳細については、「[お客様が指定したキーによるサーバー側の暗号化 (SSE−C) の使用](ServerSideEncryptionCustomerKeys.md)」を参照してください。

S3 レプリケーションは SSE-C で暗号化されたオブジェクトをサポートしています。SSE-C オブジェクトのレプリケーションは、暗号化されていないオブジェクトのレプリケーションを設定するのと同じ方法で、Amazon S3 コンソールまたは AWS SDK で設定できます。レプリケーションに現在必要な権限以外に SSE-C 権限を追加することはできません。

S3 レプリケーションは、新しくアップロードされた SSE-C 暗号化オブジェクトを、S3 レプリケーション設定に従って自動的にレプリケートします (該当する場合)。バケット内の既存のオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用します。オブジェクトのレプリケーションの詳細については、「[ライブレプリケーションの設定の概要](replication-how-setup.md)」および「[バッチレプリケーションを使用した既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

SSE-C オブジェクトのレプリケートに追加料金はかかりません。レプリケーション料金の詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing/)」を参照してください。

## SSE-S3、SSE-KMS、または DSSE-KMS で暗号化されたオブジェクトのレプリケーション
<a name="replications"></a>

デフォルトでは、Amazon S3 は SSE-KMS または DSSE-KMS で暗号化されたオブジェクトをレプリケートしません。このセクションでは、これらのオブジェクトをレプリケートするよう Amazon S3 に指示するために追加できるその他の設定要素について説明します。

ステップバイステップの手順と例については、「[暗号化されたオブジェクトのレプリケーションの有効化](#replication-walkthrough-4)」を参照してください。レプリケーション設定の作成については、「[リージョン内およびリージョン間でのオブジェクトのレプリケート](replication.md)」を参照してください。

### レプリケーション設定の追加情報の指定
<a name="replication-kms-extra-config"></a>

レプリケーション設定で、以下を実行してください。
+ 次のレプリケーション設定例に示すように、レプリケーション設定の `Destination` 要素に、オブジェクトレプリカを暗号化するために Amazon S3 で使用する対称 AWS KMS カスタマーマネージドキーの ID を追加します。
+ KMS キー (SSE-KMS または DSSE-KMS) を使用して暗号化されたオブジェクトのレプリケーションを有効にすることで、明示的にオプトインします。オプトインするには、次のレプリケーション設定例に示すように、`SourceSelectionCriteria` 要素を追加します。

 

```
<ReplicationConfiguration>
   <Rule>
      ...
      <SourceSelectionCriteria>
         <SseKmsEncryptedObjects>
           <Status>Enabled</Status>
         </SseKmsEncryptedObjects>
      </SourceSelectionCriteria>

      <Destination>
          ...
          <EncryptionConfiguration>
             <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same AWS リージョン as the destination bucket.</ReplicaKmsKeyID>
          </EncryptionConfiguration>
       </Destination>
      ...
   </Rule>
</ReplicationConfiguration>
```

**重要**  
KMS キーは、レプリケート先バケットと同じ AWS リージョン内で作成されている必要があります。
KMS キーは有効 *である必要があります*。`PutBucketReplication` API オペレーションは、KMS キーの有効性を確認しません。無効な KMS キーを使用した場合、応答として HTTP `200 OK` ステータスコードを受け取りますが、レプリケーションは失敗します。

次の例は、オプションの設定要素が含まれているレプリケーション設定を示します。このレプリケーション設定にはルールが 1 つあります。このルールは、`Tax` キープレフィックスが付いているオブジェクトに適用されます。Amazon S3 は、指定された AWS KMS key ID を使用して、これらのオブジェクトレプリカを暗号化します。

```
<?xml version="1.0" encoding="UTF-8"?>
<ReplicationConfiguration>
   <Role>arn:aws:iam::account-id:role/role-name</Role>
   <Rule>
      <ID>Rule-1</ID>
      <Priority>1</Priority>
      <Status>Enabled</Status>
      <DeleteMarkerReplication>
         <Status>Disabled</Status>
      </DeleteMarkerReplication>
      <Filter>
         <Prefix>Tax</Prefix>
      </Filter>
      <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
         <EncryptionConfiguration>
            <ReplicaKmsKeyID>AWS KMS key ARN or Key Alias ARN that's in the same AWS リージョン as the destination bucket.</ReplicaKmsKeyID>
         </EncryptionConfiguration>
      </Destination>
      <SourceSelectionCriteria>
         <SseKmsEncryptedObjects>
            <Status>Enabled</Status>
         </SseKmsEncryptedObjects>
      </SourceSelectionCriteria>
   </Rule>
</ReplicationConfiguration>
```

### IAM ロールに対する追加のアクセス許可の付与
<a name="replication-kms-permissions"></a>

SSE-S3、SSE-KMS、または DSSE-KMS を使用して保管時に暗号化されたオブジェクトをレプリケートするには、レプリケーション設定で指定した AWS Identity and Access Management (IAM) ロールに以下の追加のアクセス許可を付与します。IAM ロールに関連付けられているアクセス許可ポリシーを更新してこれらの権限を付与します。
+ **レプリケート元オブジェクトのための `s3:GetObjectVersionForReplication` アクション** – このアクションにより、Amazon S3 は、暗号化されていないオブジェクトと、SSE-S3、SSE-KMS、または DSSE-KMS を使用したサーバー側の暗号化で作成されたオブジェクトの両方をレプリケートできるようになります。
**注記**  
`s3:GetObjectVersion` アクションの代わりに `s3:GetObjectVersionForReplication` アクションの使用をお勧めします。`s3:GetObjectVersionForReplication` ではレプリケーションに必要な最小限のアクセス許可のみを Amazon S3 に提供するためです。さらに、`s3:GetObjectVersion` アクションにより、暗号化されていないオブジェクトや SSE-S3 で暗号化されたオブジェクトはレプリケートできますが、KMS キー (SSE-KMS または DSSE-KMS) を使用して暗号化されたオブジェクトをレプリケートすることはできません。
+ **KMS キーの `kms:Decrypt` および `kms:Encrypt` AWS KMS アクション**
  + レプリケート元オブジェクトの復号に使用された AWS KMS keyに対して `kms:Decrypt` 権限を付与する必要があります。
  + オブジェクトレプリカの暗号化に使用された AWS KMS keyに対して `kms:Encrypt` 許可を付与する必要があります。
+ **プレーンテキストオブジェクトをレプリケートするための `kms:GenerateDataKey` アクション** — SSE-KMS または DSSE-KMS 暗号化がデフォルトで有効になっているバケットにプレーンテキストオブジェクトをレプリケートする場合は、レプリケート先の暗号化コンテキストと KMS キーの `kms:GenerateDataKey` アクセス許可を IAM ポリシーに含める必要があります。

**重要**  
S3 バッチレプリケーションを使用してデータセットをリージョン間でレプリケートし、オブジェクトのサーバー側の暗号化タイプを SSE-S3 から SSE-KMS に更新したことがある場合は、追加のアクセス許可が必要になる場合があります。ソースリージョンバケットでは、`kms:decrypt` アクセス許可が必要です。次に、レプリケート先リージョンのバケットの `kms:decrypt` および `kms:encrypt` アクセス許可が必要です。

AWS KMS 条件キーを使用して、これらの許可を、レプリケート先バケットとオブジェクトのみに制限することをお勧めします。IAM ロールを所有する AWS アカウントには、ポリシーにリストされている KMS キーに対する `kms:Encrypt` アクションおよび `kms:Decrypt` アクションのアクセス許可が必要です。KMS キーが別の AWS アカウント によって所有されている場合は、KMS キーの所有者が IAM ロールを所有する AWS アカウントにこれらの許可を付与する必要があります。これらの KMS キーへのアクセス管理の詳細については、「AWS Key Management Service デベロッパーガイド」の「[AWS KMS での IAM ポリシーの使用](https://docs.aws.amazon.com/kms/latest/developerguide/iam-policies.html)」を参照してください。**

### S3 バケットキーとレプリケーション
<a name="bk-replication"></a>

S3 バケットキーでレプリケーションを使用するには、オブジェクトレプリカの暗号化に使用する KMS キーの AWS KMS keyポリシーに、呼び出し元のプリンシパルの `kms:Decrypt` 許可を含める必要があります。`kms:Decrypt` の呼び出しでは、S3 バケットキーを使用する前にその整合性を検証します。詳細については、「[レプリケーションでの S3 バケットキーの使用](bucket-key.md#bucket-key-replication)」を参照してください。

レプリケート元バケットまたはレプリケート先バケットで S3 バケットキーを有効にすると、暗号化コンテキストはバケットの Amazon リソースネーム (ARN) になり、オブジェクトの ARN  (`arn:aws:s3:::bucket_ARN` など) にはなりません。IAM ポリシーを更新して、暗号化コンテキストにバケット ARN を使用する必要があります。

```
"kms:EncryptionContext:aws:s3:arn": [
"arn:aws:s3:::bucket_ARN"
]
```

詳細については、「[暗号化コンテキスト (`x-amz-server-side-encryption-context`)](specifying-kms-encryption.md#s3-kms-encryption-context)」 (「REST API の使用」セクション) と「[S3 バケットキーを有効にする前に注意するべき変更点](bucket-key.md#bucket-key-changes)」を参照してください。

### ポリシーの例: レプリケーションに SSE-S3 と SSE-KMS を使用する
<a name="kms-replication-examples"></a>

次の IAM ポリシーの例は、SSE-S3 と SSE-KMS をレプリケーションで使用するためのステートメントを示しています。

**Example – 個別のレプリケート先バケットで SSE-KMS を使用する**  
次のポリシーの例は、個別のレプリケート先バケットで SSE-KMS を使用するためのステートメントを示しています。

**Example - SSE-S3 と SSE-KMS で作成したオブジェクトのレプリケーション**  
以下は、暗号化されていないオブジェクト、SSE-S3 で作成したオブジェクト、および SSE-KMS で作成したオブジェクトをレプリケートするのに必要な許可を付与する完全な IAM ポリシーを示しています。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersionAcl"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/key-prefix1*"
      },
      {
         "Action":[
            "kms:Decrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*"
               ]
            }
         },
         "Resource":[
           "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      },
      {
         "Action":[
            "kms:Encrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket/prefix1*"
               ]
            }
         },
         "Resource":[
            "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      }
   ]
}
```

**Example – S3 バケットキーを使用したオブジェクトのレプリケーション**  
次に示すのは、S3 バケットキーを使用してオブジェクトをレプリケートするのに必要なアクセス許可を付与する完全な IAM ポリシーです。    
****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetReplicationConfiguration",
            "s3:ListBucket"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObjectVersionForReplication",
            "s3:GetObjectVersionAcl"
         ],
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-source-bucket/key-prefix1*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:ReplicateObject",
            "s3:ReplicateDelete"
         ],
         "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/key-prefix1*"
      },
      {
         "Action":[
            "kms:Decrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-source-bucket"
               ]
            }
         },
         "Resource":[
           "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      },
      {
         "Action":[
            "kms:Encrypt"
         ],
         "Effect":"Allow",
         "Condition":{
            "StringLike":{
               "kms:ViaService":"s3.us-east-1.amazonaws.com",
               "kms:EncryptionContext:aws:s3:arn":[
                  "arn:aws:s3:::amzn-s3-demo-destination-bucket"
               ]
            }
         },
         "Resource":[
            "arn:aws:kms:us-east-1:111122223333:key/key-id"
         ]
      }
   ]
}
```

### クロスアカウントシナリオに対する追加のアクセス許可の付与
<a name="replication-kms-cross-acct-scenario"></a>

レプリケート元バケットとレプリケート先バケットが、異なる AWS アカウントによって所有されているクロスアカウントシナリオでは、KMS キーを使用してオブジェクトレプリカを暗号化できます。ただし、KMS キー所有者は、レプリケート元バケットの所有者に KMS キーを使用する許可を付与する必要があります。

**注記**  
SSE-KMS データをクロスアカウントでレプリケートする必要がある場合、レプリケーションルールでは、レプリケート先アカウントの AWS KMS からの[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を指定する必要があります。[AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) はクロスアカウントの使用を許可しないため、クロスアカウントレプリケーションの実行には使用できません。<a name="cross-acct-kms-key-permission"></a>

**レプリケート元バケット所有者に KMS キー (AWS KMS コンソール) を使用する許可を付与するには**

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

1. AWS リージョン を変更するにはページの右上隅にあるリージョンセレクターを使用します。

1. ユーザーが作成および管理するアカウント内のキーを表示するには、ナビゲーションペインで **[Customer managed keys]** (カスタマーマネージドキー) を選択します。

1. KMS キーを選択します。

1. **[一般設定]** セクションで、**[キーポリシー]** タブを選択します。

1. **[別の AWS アカウント]** まで下にスクロールします。

1. **[別の AWS アカウントを追加]** を選択します。

   **[別の AWS アカウント]**ダイアログボックスが表示されます。

1. ダイアログボックスで、**[別の AWS アカウントを追加]** を選択します。**[arn:aws:iam::]** に、レプリケート元バケットのアカウント ID を入力します。

1. **[変更の保存]** をクリックします。

**レプリケート元バケット所有者に KMS キー(AWS CLI) を使用する許可を付与するには**
+ `put-key-policy` AWS Command Line Interface (AWS CLI) コマンドの詳細については、「*AWS CLI コマンドリファレンス*」の「[https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html](https://docs.aws.amazon.com/cli/latest/reference/kms/put-key-policy.html)」を参照してください。基盤となる `PutKeyPolicy` API オペレーションの詳細については、「[AWS Key Management Service API リファレンス](https://docs.aws.amazon.com/kms/latest/APIReference/)」の「[https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html](https://docs.aws.amazon.com/kms/latest/APIReference/API_PutKeyPolicy.html)」を参照してください。

### AWS KMS トランザクションクォータに関する考慮事項
<a name="crr-kms-considerations"></a>

クロスリージョンレプリケーション (CRR) を有効にした後で、AWS KMS 暗号化を使用して多数の新しいオブジェクトを追加すると、スロットリング (HTTP `503 Service Unavailable` エラー) が発生する可能性があります。1 秒あたりの AWS KMS トランザクション数が現在のクォータを超えると、スロットリングが発生します。詳細については、*AWS Key Management Service デベロッパーガイド*の「[クォータ](https://docs.aws.amazon.com/kms/latest/developerguide/limits.html)」を参照してください。

クォータの引き上げをリクエストするには、Service Quotas を使用してください。詳細については、「[Requesting a quota increase](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)」(クォータ引き上げのリクエスト) を参照してください。リージョンの Service Quotas がサポートされていない場合は、[AWS サポート ケースを開きます](https://console.aws.amazon.com/support/home#/)。

## 暗号化されたオブジェクトのレプリケーションの有効化
<a name="replication-walkthrough-4"></a>

デフォルトでは、Amazon S3 は AWS Key Management Service (AWS KMS) キーによるサーバー側の暗号化 (SSE-KMS) または AWS KMS キーによる二層式サーバー側の暗号化 (DSSE-KMS) を使用して暗号化されたオブジェクトをレプリケートしません。SSE-KMS または DSSE-KMS で暗号化されたオブジェクトをレプリケートするには、バケットレプリケーション設定を変更して、Amazon S3 がこれらのオブジェクトをレプリケートするように指示します。この例では、Amazon S3 コンソールと AWS Command Line Interface (AWS CLI) を使用してバケットのレプリケーション設定を変更し、暗号化オブジェクトのレプリケーションを有効にする方法について説明します。

**注記**  
レプリケート元バケットまたはレプリケート先バケットで S3 バケットキーを有効にすると、暗号化コンテキストはバケットの Amazon リソースネーム (ARN) になり、オブジェクトの ARN にはなりません。暗号化コンテキストとしてバケット ARN を使用するには、IAM ポリシーを更新する必要があります。詳細については、「[S3 バケットキーとレプリケーション](#bk-replication)」を参照してください。

**注記**  
Amazon S3 では、マルチリージョン AWS KMS keys を使用できます。ただし、Amazon S3 では現在、マルチリージョンキーは、単一リージョンキーであるかのように処理され、キーのマルチリージョン特徴は使用しません。詳細については、「AWS Key Management Service デベロッパーガイド」の「[マルチリージョンキーを使用する](https://docs.aws.amazon.com/kms/latest/developerguide/multi-region-keys-overview.html)」を参照してください。**

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

手順については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。このトピックでは、レプリケート元およびレプリケート先バケットが同一の、または異なる AWS アカウントによって所有されている場合にレプリケーション設定を行う手順について説明します。

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

AWS CLI で暗号化されたオブジェクトをレプリケートするには、以下の操作を実行します。
+ レプリケート元バケットとレプリケート先バケットを作成して、これらのバケットのバージョニングを有効にします。
+ Amazon S3 にオブジェクトをレプリケートするアクセス許可を付与する AWS Identity and Access Management (IAM) サービスロールを作成します。IAM ロールのアクセス許可には、暗号化されたオブジェクトをレプリケートするために必要なアクセス許可が含まれています。
+ レプリケート元バケットにレプリケーション設定を追加します。レプリケーション設定は、KMS キーを使用して暗号化されたオブジェクトのレプリケーションに関する情報を提供します。
+ レプリケート元バケットに暗号化されたオブジェクトを追加します。
+ セットアップをテストして、暗号化されたオブジェクトがレプリケート先バケットにレプリケートされていることを確認します。

このプロセスを以下の手順で説明します。

**サーバー側の暗号化されたオブジェクトをレプリケートするには (AWS CLI)**

この手順の例を使用するには、`user input placeholders` を自分の情報に置き換えてください。

1. この例では、レプリケート元 (*`amzn-s3-demo-source-bucket`*) および レプリケート先 (*`amzn-s3-demo-destination-bucket`*) バケットの両方を同じ AWS アカウントで作成します。AWS CLI の認証情報プロファイルも設定します。この例では、プロファイル名 `acctA` を使用します。

   名前付きプロファイルの設定と使用に関する詳細については、「AWS Command Line Interface ユーザーガイド」の「[設定ファイルと認証情報ファイルの設定](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html)」を参照してください。**

1. 次のコマンドを使用して `amzn-s3-demo-source-bucket` バケットを作成し、バージョニングを有効にします。次の例のコマンドは、`amzn-s3-demo-source-bucket` バケットを米国東部 (バージニア北部) (`us-east-1`) リージョンに作成します。

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-source-bucket \
   --region us-east-1 \
   --profile acctA
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-source-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 次のコマンドを使用して `amzn-s3-demo-destination-bucket` バケットを作成し、バージョニングを有効にします。次のコマンドは、`amzn-s3-demo-destination-bucket` バケットを米国西部 (オレゴン) (`us-west-2`) リージョンに作成します。
**注記**  
`amzn-s3-demo-source-bucket` と `amzn-s3-demo-destination-bucket` の両方のバケットが同じ AWS アカウントにあるときに、レプリケーション設定をセットアップするには、同じプロファイルを使用します。この例では `acctA` を使用します。バケットが異なる AWS アカウント によって所有されているときに、レプリケーションを設定するには、それぞれに異なるプロファイルを指定します。

   

   ```
   aws s3api create-bucket \
   --bucket amzn-s3-demo-destination-bucket \
   --region us-west-2 \
   --create-bucket-configuration LocationConstraint=us-west-2 \
   --profile acctA
   ```

   ```
   aws s3api put-bucket-versioning \
   --bucket amzn-s3-demo-destination-bucket \
   --versioning-configuration Status=Enabled \
   --profile acctA
   ```

1. 次に、IAM サービスロールを作成します。`amzn-s3-demo-source-bucket` バケットに後で追加するレプリケーション設定でこのロールを指定します。Amazon S3 は、ユーザーに代わってオブジェクトをレプリケートするこの ロールを引き受けます。IAM ロールは 2 つのステップで作成します。
   + サービスロールを作成します。
   + アクセス権限ポリシーをロールにアタッチします。

   1. IAM サービスロールを作成するには、以下を実行します。

      1. 次の信頼ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある `s3-role-trust-policy-kmsobj.json` という名前のファイルに保存します。このポリシーは、ロールを引き受けるサービスプリンシパルアクセス許可を Amazon S3 に付与し、Amazon S3 がユーザーに代わってタスクを実行できるようにします。

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

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Effect":"Allow",
                  "Principal":{
                     "Service":"s3.amazonaws.com"
                  },
                  "Action":"sts:AssumeRole"
               }
            ]
         }
         ```

------

      1. 次のコマンドを使用して、ロールを作成します。

         ```
         $ aws iam create-role \
         --role-name replicationRolekmsobj \
         --assume-role-policy-document file://s3-role-trust-policy-kmsobj.json  \
         --profile acctA
         ```

   1. 次に、アクセス許可ポリシーをロールにアタッチします。このポリシーは、さまざまな Amazon S3 バケットとオブジェクトアクションに対するアクセス許可を付与します。

      1. 次のアクセス権限ポリシーをコピーして、ローカルコンピュータの現在のディレクトリにある `s3-role-permissions-policykmsobj.json` という名前のファイルに保存します。IAM ロールを作成して、後でポリシーをアタッチします。
**重要**  
アクセス許可ポリシーで、`amzn-s3-demo-source-bucket` および `amzn-s3-demo-destination-bucket` バケットの暗号化に使用される AWS KMS キー ID を指定します。`amzn-s3-demo-source-bucket` バケットと `amzn-s3-demo-destination-bucket` バケット用に 2 つの別々の KMS キーを作成する必要があります。AWS KMS keys は、それらが作成された AWS リージョンの外部で共有されることはありません。

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

****  

         ```
         {
            "Version":"2012-10-17",		 	 	 
            "Statement":[
               {
                  "Action":[
                     "s3:ListBucket",
                     "s3:GetReplicationConfiguration",
                     "s3:GetObjectVersionForReplication",
                     "s3:GetObjectVersionAcl",
                     "s3:GetObjectVersionTagging"
                  ],
                  "Effect":"Allow",
                  "Resource":[
                     "arn:aws:s3:::amzn-s3-demo-source-bucket",
                     "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                  ]
               },
               {
                  "Action":[
                     "s3:ReplicateObject",
                     "s3:ReplicateDelete",
                     "s3:ReplicateTags"
                  ],
                  "Effect":"Allow",
                  "Condition":{
                     "StringLikeIfExists":{
                        "s3:x-amz-server-side-encryption":[
                           "aws:kms",
                           "AES256",
                           "aws:kms:dsse"
                        ],
                        "s3:x-amz-server-side-encryption-aws-kms-key-id":[
                           "AWS KMS key IDs(in ARN format) to use for encrypting object replicas"  
                        ]
                     }
                  },
                  "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
               },
               {
                  "Action":[
                     "kms:Decrypt"
                  ],
                  "Effect":"Allow",
                  "Condition":{
                     "StringLike":{
                        "kms:ViaService":"s3.us-east-1.amazonaws.com",
                        "kms:EncryptionContext:aws:s3:arn":[
                           "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
                        ]
                     }
                  },
                  "Resource":[
                     "arn:aws:kms:us-east-1:111122223333:key/key-id" 
                  ]
               },
               {
                  "Action":[
                     "kms:Encrypt"
                  ],
                  "Effect":"Allow",
                  "Condition":{
                     "StringLike":{
                        "kms:ViaService":"s3.us-west-2.amazonaws.com",
                        "kms:EncryptionContext:aws:s3:arn":[
                           "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
                        ]
                     }
                  },
                  "Resource":[
                     "arn:aws:kms:us-west-2:111122223333:key/key-id" 
                  ]
               }
            ]
         }
         ```

------

      1. ポリシーを作成し、ロールにアタッチします。

         ```
         $ aws iam put-role-policy \
         --role-name replicationRolekmsobj \
         --policy-document file://s3-role-permissions-policykmsobj.json \
         --policy-name replicationRolechangeownerPolicy \
         --profile acctA
         ```

1. 次に、以下のレプリケーション設定を `amzn-s3-demo-source-bucket` バケットに追加します。これは、`Tax/` プレフィックスを持つオブジェクトを `amzn-s3-demo-destination-bucket` バケットにレプリケートするように Amazon S3 に指示します。
**重要**  
レプリケーション設定で、Amazon S3 が引き受けることができる IAM ロールを指定します。ユーザーに `iam:PassRole` アクセス権限がある場合のみ実行できます。CLI コマンドで指定するプロファイルには、このアクセス許可が必要です。詳細については、*IAM ユーザーガイド*の「[AWS のサービス のサービスにロールを渡すアクセス権限をユーザーに付与する](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_passrole.html)」を参照してください。

   ```
    <ReplicationConfiguration>
     <Role>IAM-Role-ARN</Role>
     <Rule>
       <Priority>1</Priority>
       <DeleteMarkerReplication>
          <Status>Disabled</Status>
       </DeleteMarkerReplication>
       <Filter>
          <Prefix>Tax</Prefix>
       </Filter>
       <Status>Enabled</Status>
       <SourceSelectionCriteria>
         <SseKmsEncryptedObjects>
           <Status>Enabled</Status>
         </SseKmsEncryptedObjects>
       </SourceSelectionCriteria>
       <Destination>
         <Bucket>arn:aws:s3:::amzn-s3-demo-destination-bucket</Bucket>
         <EncryptionConfiguration>
           <ReplicaKmsKeyID>AWS KMS key IDs to use for encrypting object replicas</ReplicaKmsKeyID>
         </EncryptionConfiguration>
       </Destination>
     </Rule>
   </ReplicationConfiguration>
   ```

   レプリケーション設定を `amzn-s3-demo-source-bucket` バケットに追加するには、以下を実行します。

   1. AWS CLI ではレプリケーション設定を JSON 形式で指定する必要があります。以下の JSON を、ローカルコンピュータの現在のディレクトリにあるファイル (`replication.json`) に保存します。

      ```
      {
         "Role":"IAM-Role-ARN",
         "Rules":[
            {
               "Status":"Enabled",
               "Priority":1,
               "DeleteMarkerReplication":{
                  "Status":"Disabled"
               },
               "Filter":{
                  "Prefix":"Tax"
               },
               "Destination":{
                  "Bucket":"arn:aws:s3:::amzn-s3-demo-destination-bucket",
                  "EncryptionConfiguration":{
                     "ReplicaKmsKeyID":"AWS KMS key IDs (in ARN format) to use for encrypting object replicas"
                  }
               },
               "SourceSelectionCriteria":{
                  "SseKmsEncryptedObjects":{
                     "Status":"Enabled"
                  }
               }
            }
         ]
      }
      ```

   1. JSON を編集して、`amzn-s3-demo-destination-bucket` バケット、`AWS KMS key IDs (in ARN format)`、および `IAM-role-ARN` の値を指定します。変更を保存します。

   1. 次のコマンドを使用して、レプリケーション設定を `amzn-s3-demo-source-bucket` バケットに追加します。必ず `amzn-s3-demo-source-bucket` バケット名を指定してください。

      ```
      $ aws s3api put-bucket-replication \
      --replication-configuration file://replication.json \
      --bucket amzn-s3-demo-source-bucket \
      --profile acctA
      ```

1. 設定をテストして、暗号化されたオブジェクトがレプリケートされることを確認します。Amazon S3 コンソールで、次の操作を行います。

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

   1. `amzn-s3-demo-source-bucket` バケットに `Tax` という名前のフォルダを作成します。

   1. サンプルオブジェクトをフォルダに追加します。必ず暗号化オプションを選択し、オブジェクトを暗号化するための KMS キーを指定してください。

   1. `amzn-s3-demo-destination-bucket` バケットにオブジェクトのレプリカが含まれていることと、設定で指定した KMS キーを使用して暗号化されていることを確認します。詳細については、「[レプリケーションステータス情報の取得](replication-status.md)」を参照してください。

### AWS SDK の使用
<a name="replication-ex4-sdk"></a>

レプリケーション設定を追加するコード例については、「[AWS SDK の使用](replication-walkthrough1.md#replication-ex1-sdk)」を参照してください。レプリケーション設定を適切に変更する必要があります。

 

# レプリカの変更同期によるメタデータ変更のレプリケート
<a name="replication-for-metadata-changes"></a>

Amazon S3 レプリカの変更を同期することで、タグ、アクセスコントロールリスト (ACL)、Object Lock 設定などのオブジェクトメタデータをレプリカとレプリケート元オブジェクト間でレプリケートできます。デフォルトでは、Amazon S3 はレプリケート元オブジェクトからレプリカにのみメタデータをレプリケートします。レプリカの変更同期を有効にすると、Amazon S3 はレプリカコピーに加えられたメタデータの変更をレプリケート元オブジェクトにレプリケートし、レプリケーションを双方向にします。

## レプリカ変更の同期の有効化
<a name="enabling-replication-for-metadata-changes"></a>

Amazon S3 レプリカの変更同期は、新規または既存のレプリケーションルールで使用できます。削除マーカーレプリケーションは、バケット全体に適用することも、特定のプレフィックスを持つオブジェクトに適用することもできます。

Amazon S3 コンソールを使用してレプリカ変更の同期を有効にするには、「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」を参照してください。このトピックでは、レプリケート元およびレプリケート先バケットが同じまたは異なる AWS アカウントによって所有されている場合に、レプリケーション設定でレプリカ変更の同期を有効にする手順について説明します。

AWS Command Line Interface (AWS CLI) を使用してレプリカ変更の同期を有効にするには、`ReplicaModifications` が有効になっているレプリカを含むバケットにレプリケーション設定を追加する必要があります。双方向レプリケーションを設定するには、レプリケート元バケット (`amzn-s3-demo-source-bucket`) から、レプリカを含めるバケット (`amzn-s3-demo-destination-bucket`) に対するレプリケーションルールを作成します。次に、レプリカを含めるバケット (`amzn-s3-demo-destination-bucket`) からレプリケート元バケット (`amzn-s3-demo-source-bucket`) に対するレプリケーションルールを、もう 1 つ作成します。レプリケート元およびレプリケート先バケットは、同一のまたは異なる AWS リージョンに配置することができます。

**注記**  
オブジェクトのアクセスコントロールリスト (ACL)、オブジェクトのタグ、あるいは Object Lock の設定など、レプリカメタデータの変更を複製するには、レプリケート元およびレプリケート先の両方のバケットでレプリカ変更の同期を有効にする必要があります。これらのルールは、すべてのレプリケーションルールと同様に、バケット全体に適用することも、オブジェクトのサブセットをプレフィックスまたはオブジェクトタグでフィルタリングして適用することも可能です。

以下の設定例では、Amazon S3 は `Tax` というプレフィックスのメタデータの変更を `amzn-s3-demo-source-bucket` バケット (このバケットにはレプリケート元オブジェクトを含む) にレプリケートします。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "SourceSelectionCriteria": {
                "ReplicaModifications":{
                    "Status": "Enabled"
                }
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-source-bucket"
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

AWS CLI を使用してレプリケーションルールを作成する手順については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。

# バケット間での削除マーカーのレプリケーション
<a name="delete-marker-replication"></a>

デフォルトでは、S3 レプリケーションが有効で、レプリケーション元バケットでオブジェクトが削除されると、Amazon S3 はレプリケート元バケットにのみ削除マーカーを追加します。このアクションは、レプリケート先バケット内のデータを偶発的または悪意のある削除から保護するのに役立ちます。削除マーカーレプリケーションが有効になっている場合、これらのマーカーはレプリケート先バケットにコピーされ、Amazon S3 はオブジェクトがレプリケート元バケットとレプリケート先バケットの両方で削除されたように動作します。**削除マーカーの動作の詳細については、[削除マーカーの使用](DeleteMarker.md)を参照してください。

**注記**  
削除マーカーレプリケーションは、タグベースのレプリケーションルールではサポートされていません。また、削除マーカーレプリケーションは、S3 Replication Time Control (S3 RTC) の使用時に付与される 15 分間のサービスレベルアグリーメント (SLA) に準拠していません。
レプリケーション設定の最新 XML バージョンを使用していない場合、削除操作はレプリケーションに異なる影響を与えます。詳細については、「[削除オペレーションがレプリケーションに与える影響](replication-what-is-isnot-replicated.md#replication-delete-op)」を参照してください。
削除マーカーレプリケーションを有効化し、レプリケート元バケットに S3 ライフサイクルの有効期限ルールがある場合、S3 ライフサイクルの有効期限ルールによって追加された削除マーカーはレプリケート先バケットにレプリケートされません。

## 削除マーカーレプリケーションの有効化
<a name="enabling-delete-marker-replication"></a>

新規または既存のレプリケーションルールで、削除マーカーレプリケーションの使用を開始できます。削除マーカーレプリケーションは、バケット全体に適用することも、特定のプレフィックスを持つオブジェクトに適用することもできます。

Amazon S3 コンソールを使用して削除マーカーレプリケーションを有効にするには、「[S3 コンソールの使用](replication-walkthrough1.md#enable-replication)」を参照してください。このトピックでは、レプリケート元およびレプリケート先バケットが同じまたは異なる AWS アカウントによって所有されている場合に、レプリケーション設定で削除マーカーレプリケーションを有効にする手順について説明します。

AWS Command Line Interface (AWS CLI) を使用して削除マーカーレプリケーションを有効にするには、次の設定例に示すように、`DeleteMarkerReplication` が有効になっているレプリケート元バケットにレプリケーション設定を追加する必要があります。

次のレプリケーション設定例では、`Tax` というプレフィクスの下にあるオブジェクトのレプリケート先バケットである `amzn-s3-demo-destination-bucket` に、削除マーカーがレプリケートされます。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "DeleteMarkerReplication": {
                "Status": "Enabled"
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-destination-bucket"
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

AWS CLI を使用してレプリケーションルールを作成する手順については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。

# ライブレプリケーションの管理または一時停止
<a name="disable-replication"></a>

ライブレプリケーションは、同一または異なる AWS リージョン にあるバケット間でオブジェクトを自動的に非同期でコピーする機能です。レプリケーションを設定すると、Amazon S3 は新しく作成されたオブジェクトと更新されたオブジェクトをレプリケート元バケットから指定された 1 つ以上のレプリケート先バケットにレプリケートします。

レプリケーションルールは、Amazon S3 コンソールを使用してレプリケート元のバケットに追加できます。レプリケーションルールにより、レプリケート元のソースバケットオブジェクトと、レプリケートされたオブジェクトが保存されるレプリケート先バケットが定義されます。レプリケーションの詳細については、「[リージョン内およびリージョン間でのオブジェクトのレプリケート](replication.md)」を参照してください。

Amazon S3 コンソールの **[レプリケーション]** ページで、レプリケーションルールを管理できます。レプリケーションルールは、追加、表示、編集、有効化、無効化、削除できます。また、レプリケーションルールの優先度を変更することもできます。バケットへのレプリケーションルールの追加については、「[S3 コンソールの使用](replication-walkthrough1.md#enable-replication)」を参照してください。

**Amazon S3 コンソールを使用してバケットのレプリケーションルールを管理するには**

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

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

1. **[汎用バケット]** タブで、バケットの名前を選択します。

1. **[管理]** タブを選択して、**[レプリケーションルール]** まで下にスクロールします。

1. レプリケーションルールは、以下の方法で変更することができます。
   + レプリケーションルールを有効化または無効化するには、ルールの左側にあるオプションボタンを選択します。**[アクション]** メニューで、**[ルールの有効化]** または **[ルールの無効化]** を選択します。**[アクション]** メニューでは、バケットのすべてのルールを無効化、有効化、削除することもできます。
**注記**  
レプリケーションルールを無効化し、後でルールを再度有効化した場合、ルールの無効化中にレプリケートされなかった新規または変更されたオブジェクトは、ルールを再度有効にしても自動的にレプリケートされません**。これらのオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用する必要があります。詳細については、「[バッチレプリケーションを使用した既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。
   + ルールの優先度を変更するには、ルールの左側にあるオプションボタンを選択して、**[ルールの編集]** を選択します。

     ルールの優先順位を指定して、複数のルールの範囲に含まれるオブジェクトによって引き起こされる競合を回避します。ルールが重複している場合、Amazon S3 はルールの優先度を使用して適用するルールを決定します。数値が大きいほど、優先度が高くなります。ルーティングの優先度の詳細については、[レプリケーション設定ファイル要素](replication-add-config.md)をご覧ください。

## レプリケーションの一時停止または停止
<a name="replication-pause"></a>

レプリケーションを一時停止し、後で自動的に再開するには、AWS Fault Injection Service の `aws:s3:bucket-pause-replication` アクションを使用できます。詳細については、「**AWS Fault Injection Service ユーザーガイド」の「[https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#bucket-pause-replication](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#bucket-pause-replication)」および「[Pause S3 Replication](https://docs.aws.amazon.com/fis/latest/userguide/cross-region-scenario.html#cross-region-scenario-actions-pause-s3-replication)」を参照してください。

Amazon S3 でレプリケーションを停止するには、レプリケーションルールを無効化することをお勧めします。レプリケーションルールを無効化し、後でルールを再度有効化した場合、ルールの無効化中にレプリケートされなかった新規または変更されたオブジェクトは、ルールを再度有効にしても自動的にレプリケートされません**。これらのオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用する必要があります。詳細については、「[バッチレプリケーションを使用した既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

AWS Identity and Access Management (IAM) ロール、AWS Key Management Service (AWS KMS) アクセス許可、または必要なアクセス許可を Amazon S3 に付与するバケットポリシーアクセス許可を削除すると、レプリケーションは停止します。ただし、レプリケーションが失敗するため、これらのアプローチはお勧めしません。Amazon S3 は、影響を受けるオブジェクトのレプリケーションステータスを `FAILED` として報告します。アクセス許可が後で復元された場合、`FAILED` とマークされたオブジェクトは自動的にレプリケートされません。**これらのオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用する必要があります。

# バッチレプリケーションを使用した既存のオブジェクトのレプリケーション
<a name="s3-batch-replication-batch"></a>

S3 バッチレプリケーションは、Amazon S3 バケット間で新しいオブジェクトを継続的かつ自動的にレプリケートするライブレプリケーションとは異なります。代わりに、S3 バッチレプリケーションは既存のオブジェクトでオンデマンドで実行されます。S3 バッチレプリケーションを使用して、次のタイプのオブジェクトをレプリケートできます。
+ レプリケーション設定が実行される前に存在していたオブジェクト
+ 以前にレプリケートされたオブジェクト
+ レプリケーションに失敗したオブジェクト

バッチオペレーションジョブを使用して、これらのオブジェクトをオンデマンドでレプリケートできます。

バッチレプリケーションを開始するには、次の操作を行います。
+ **新しいレプリケーションルールまたはレプリケート先のバッチレプリケーションを開始する** — 1 回限りのバッチレプリケーションジョブは、新しいレプリケーション設定で最初のルールを作成する場合や、Amazon S3 を介して既存の設定に新しいレプリケート先バケットを追加する場合に作成できます。
+ **既存のレプリケーション設定のバッチレプリケーションを開始する** — S3 バッチオペレーションを使用して、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を介し、新しいバッチレプリケーションジョブを作成できます。

バッチレプリケーションジョブが終了すると、完了レポートが表示されます。このレポートを使用してジョブを検査する方法の詳細については、「[ジョブステータスと完了レポートの追跡](batch-ops-job-status.md)」を参照してください。

## S3 バッチレプリケーションに関する考慮事項
<a name="batch-replication-considerations"></a>

S3 バッチレプリケーションを使用する前に、次の考慮事項のリストを確認してください。
+ レプリケート元バケットには既存のレプリケーション設定が必要です。レプリケーションを有効にするには、「[ライブレプリケーションの設定の概要](replication-how-setup.md)」と「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」を参照してください。
+ バケットで S3 ライフサイクルが設定されている場合は、バッチレプリケーションジョブがアクティブな際には、ライフサイクルルールを無効にすることをお勧めします。これは、レプリケート元バケットとレプリケート先バケットの間で等価性を確保するのに役立ちます。これを行わない場合、これらのバケットが分岐し、レプリケート先バケットがレプリケート元バケットの完全なレプリカではなくなる可能性があります。たとえば、次のシナリオを考えてみます。
  + レプリケート元バケットには、オブジェクトとそのオブジェクトの削除マーカーの複数のバージョンがあります。
  + レプリケート元とレプリケート先のバケットには、期限切れの削除マーカーを削除するライフサイクル設定が設定されています。

  このシナリオでは、バッチレプリケーションにより、オブジェクトのバージョンがレプリケートされる前に、レプリケート先バケットに削除マーカーがレプリケートされることがあります。その場合、オブジェクトのバージョンがレプリケートされる前に、ライフサイクル設定で削除マーカーの有効期限が切れ、削除マーカーがレプリケート先バケットから削除される可能性があります。
+ バッチオペレーションジョブを実行するために指定する AWS Identity and Access Management IAM ロールには、基になるバッチレプリケーションを実行する権限が必要です。IAM ロールの作成の詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。
+ バッチレプリケーションには、Amazon S3 で生成できるマニフェストが必要です。生成されたマニフェストは、レプリケーション元バケットと同じ AWS リージョンに保存されている必要があります。マニフェストを生成しない場合は、レプリケートするオブジェクトを含む Amazon S3 インベントリレポートまたは CSV ファイルを指定できます。詳細については、「[バッチレプリケーションジョブのマニフェストの指定](#batch-replication-manifest)」を参照してください。
+ バッチレプリケーションでは、レプリケート先バケットからオブジェクトのバージョン ID を指定することで削除されたオブジェクトの再レプリケーションはサポートされません。これらのオブジェクトを再レプリケートするには、バッチコピージョブを使用してソースオブジェクトを所定の場所でコピーします。これらのオブジェクトを所定の場所でコピーすると、レプリケート元バケットにオブジェクトの新しいバージョンが作成され、レプリケート先バケットへのレプリケーションが自動的に開始されます。レプリケート先バケットを削除して再作成しても、レプリケーションは開始されません。

  バッチコピーの詳細については、「[バッチ操作を使用してオブジェクトをコピーする例](batch-ops-examples-copy.md)」を参照してください。
+ レプリケート元バケットでレプリケーションルールを使用している場合は、[レプリケーション設定を更新して](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-2.html)、レプリケーションルールにアタッチされている IAM ロールに、オブジェクトをレプリケートするための適切な権限を付与してください。この IAM ロールには、ソースバケットとレプリケート先バケットの両方でレプリケーションを実行する権限が必要です。
+ 短期間に同じバケットに対して複数のバッチレプリケーションジョブを送信すると、Amazon S3 はそれらのジョブを同時に実行します。
+ 2 つの異なるバケットに対して複数の Batch レプリケーションジョブを送信する場合、Amazon S3 がすべてのジョブを同時に実行するわけではないことに注意してください。アカウントで一度に実行できるバッチレプリケーションジョブの数を超えると、Amazon S3 は優先度の低いジョブを一時停止して優先度の高いジョブを処理します。優先度の高いジョブが完了すると、一時停止していたジョブは再びアクティブになります。
+ バッチオペレーションは、S3 Glacier Flexible Retrieval ストレージクラスと S3 Glacier Deep Archive ストレージクラスに保存されたオブジェクトに対してはサポートされていません。
+ アーカイブアクセスまたはディープアーカイブアクセスのストレージ階層に保存されている S3 Intelligent-Tiering オブジェクトのバッチレプリケーションを行うには、まず[復元](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-managing.html#restore-data-from-int-tier-archive)リクエストを開始し、オブジェクトが高頻度アクセス階層に移動されるまで待つ必要があります。
+ 1 つのバッチレプリケーションジョブで、最大 200 億個のオブジェクトを持つマニフェストをサポートできます。
+ S3 バッチレプリケーションを使用してデータセットをリージョン間でレプリケートし、オブジェクトのサーバー側の暗号化タイプを SSE-S3 から SSE-KMS に更新したことがある場合は、追加のアクセス許可が必要になる場合があります。ソースリージョンバケットでは、`kms:decrypt` アクセス許可が必要です。次に、レプリケート先リージョンのバケットの `kms:decrypt` および `kms:encrypt` アクセス許可が必要です。詳細については、「[暗号化オブジェクトのレプリケート](replication-config-for-kms-objects.md)」を参照してください。

## バッチレプリケーションジョブのマニフェストの指定
<a name="batch-replication-manifest"></a>

マニフェストは、Amazon S3 が動作するオブジェクトキーを含む Amazon S3 オブジェクトです。バッチレプリケーションジョブを作成する場合は、ユーザー生成のマニフェストを指定するか、レプリケーション設定に基づいて Amazon S3 でマニフェストを生成させる必要があります。

ユーザーが作成したマニフェストを提供する場合は、Amazon S3 インベントリレポートまたは CSV ファイルの形式である必要があります。マニフェスト内のオブジェクトがバージョニング対応のバケット内にある場合は、そのオブジェクトのバージョン ID を指定する必要があります。マニフェストで指定されたバージョン ID を持つオブジェクトのみがレプリケートされます。マニフェストの指定の詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。

Amazon S3 がユーザーに代わってマニフェストファイルを生成するように選択した場合、リストされるオブジェクトでは、レプリケート元バケットのレプリケーション設定と同じレプリケート元バケット、プレフィックス、タグを使用します。生成されたマニフェストでは、Amazon S3 はオブジェクトの適格なバージョンをすべてレプリケートします。

**注記**  
Amazon S3 によるマニフェストの生成を選択する場合は、マニフェストがレプリケーション元バケットと同じ AWS リージョンに保存されている必要があります。

## バッチレプリケーションジョブのフィルター
<a name="batch-replication-filters"></a>

バッチレプリケーションジョブを作成するときに、オプションで、オブジェクトの作成日やレプリケーションステータスなどの追加のフィルターを指定して、ジョブのスコープを縮小できます。

オブジェクトのレプリケーションは、`ObjectReplicationStatuses` 値を基に、以下の値を 1 つ以上指定することでフィルターできます。
+ `"NONE"` - Simple Storage Service (Amazon S3) がこれまでオブジェクトのレプリケートを試みたことがないことを示します。
+ `"FAILED"` - Amazon S3 が以前にオブジェクトのレプリケートを試みたがオブジェクトのレプリケーションに失敗したことを示します。
+ `"COMPLETED"` - Simple Storage Service (Amazon S3) が以前にオブジェクトを正常にレプリケートしたことを示します。
+ `"REPLICA"` - このオブジェクトが Amazon S3 が別のレプリケート元バケットからレプリケートしたレプリカであることを示します。

レプリケーションステータスの詳細については、「[レプリケーションステータス情報の取得](replication-status.md)」を参照してください。

バッチレプリケーションジョブをフィルターしない場合、バッチオペレーションは、デフォルトでレプリケートされない特定のオブジェクトを除き、レプリケーション設定のルールに一致するマニフェスト内のすべてのオブジェクト (`ObjectReplicationStatus` に関係なく) のレプリケーションを試みます。詳細については、[レプリケーション設定でレプリケートされないものは何ですか?](replication-what-is-isnot-replicated.md#replication-what-is-not-replicated)を参照してください。

目標によっては、以下の 1 つまたは複数の値に `ObjectReplicationStatuses` を設定する場合があります。
+ レプリケートされたことがない既存のオブジェクトのみをレプリケートするには、`"NONE"` のみを含めます。
+ 以前にレプリケートに失敗したオブジェクトのレプリケートのみを再試行するには、`"FAILED"` のみを含めます。
+ 既存のオブジェクトをレプリケートし、以前にレプリケートに失敗したオブジェクトのレプリケーションを再試行するには、`"NONE"` と `"FAILED"` の両方を含めます。
+ 別のレプリケート先にレプリケートされたオブジェクトをレプリケート先バケットにバックフィルするには、`"COMPLETED"` を含めます。
+ 以前にレプリケートオブジェクトをレプリケートするには、`"REPLICA"` を含めます。

## バッチレプリケーション完了レポート
<a name="batch-replication-completion-report"></a>

バッチレプリケーションジョブを作成するときに、CSV 完了レポートをリクエストできます。このレポートには、オブジェクト、レプリケーションの成功コードまたは失敗コード、出力、および説明が表示されます。ジョブの追跡と完了レポートの追跡については、「[完了レポート](batch-ops-job-status.md#batch-ops-completion-report)」を参照してください。

レプリケーション失敗コードのリストと説明については、「[Amazon S3 レプリケーションの失敗の理由](replication-metrics-events.md#replication-failure-codes)」を参照してください。

バッチレプリケーションのトラブルシューティングについては、「[バッチレプリケーションエラー](replication-troubleshoot.md#troubleshoot-batch-replication-errors)」を参照してください。

## バッチレプリケーションの使用開始
<a name="batch-replication-tutorial"></a>

バッチレプリケーションの使用方法の詳細については、「[チュートリアル: S3 バッチレプリケーションによる Amazon S3 バケット内の既存のオブジェクトのレプリケーション](https://aws.amazon.com/getting-started/hands-on/replicate-existing-objects-with-amazon-s3-batch-replication/)」を参照してください。

# S3 バッチレプリケーション用の IAM ロールの設定
<a name="s3-batch-replication-policies"></a>

Amazon S3 バッチレプリケーションはバッチオペレーションジョブの一種であるため、AWS Identity and Access Management (IAM) ロールを作成し、ユーザーに代わってアクションを実行するためのバッチオペレーション許可を付与する必要があります。また、バッチレプリケーション IAM ポリシーをバッチオペレーション IAM ロールにアタッチする必要があります。

次の手順を使用して、バッチレプリケーションジョブを開始するバッチオペレーションの許可を与えるポリシーと IAM ロールを作成します。

**バッチレプリケーションのポリシーを作成するには**

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

1. **[アクセス管理]** で、**[ポリシー]** を選択します。

1. [**Create policy**] (ポリシーの作成) を選択します。

1. **[アクセス許可の指定]** ページで、**[JSON]** を選択します。

1. マニフェストが Amazon S3 によって生成されるか、独自のマニフェストを提供するかに応じて、次のいずれかのポリシーを挿入します。マニフェストの詳細については、「[バッチレプリケーションジョブのマニフェストの指定](s3-batch-replication-batch.md#batch-replication-manifest)」を参照してください。

   これらのポリシーを使用する前に、次のポリシーの `user input placeholders` をレプリケーション元バケット、マニフェストバケット、および完了レポートバケットの名前に置き換えます。
**注記**  
バッチレプリケーションの IAM ロールには、マニフェストを生成するか提供するかに応じて異なるアクセス許可が必要です。そのため、次の例から適切なポリシーを選択してください。

**AmazonS3 で生成されたマニフェストを使用して保存する場合のポリシー**

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Action": [
               "s3:InitiateReplication"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
         },
         {
            "Action": [
               "s3:GetReplicationConfiguration",
               "s3:PutInventoryConfiguration"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-source-bucket"
            ]
         },
         {
            "Action": [
               "s3:GetObject",
               "s3:GetObjectVersion"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
         },
         {
            "Effect": "Allow",
            "Action": [
               "s3:PutObject"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*",
               "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"    
            ]
         }
      ]
   }
   ```

------

**ユーザー指定のマニフェストを使用する場合のポリシー**

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
         {
            "Action": [
               "s3:InitiateReplication"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-source-bucket/*"
            ]
         },
         {
            "Action": [
               "s3:GetObject",
               "s3:GetObjectVersion"
            ],
            "Effect": "Allow",
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-manifest-bucket/*"
            ]
         },
         {
            "Effect": "Allow",
            "Action": [
               "s3:PutObject"
            ],
            "Resource": [
               "arn:aws:s3:::amzn-s3-demo-completion-report-bucket/*"    
            ]
         }
      ]
   }
   ```

------

1. [**次へ**] を選択します。

1. ポリシーの名前を指定し、**[ポリシーの作成]** を選択します。

**バッチレプリケーションの IAM ロールを作成するには**

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

1. **[Access management]** (アクセス管理) で、**[Roles]** (ロール) を選択します。

1. [**ロールの作成**] を選択してください。

1. 信頼されたエンティティの種類に、**[AWS のサービス]** を選択します。**[ユースケース]** セクションで、サービスとして **[S3]**、ユースケースとして **[S3 バッチオペレーション]** を選択します。

1. [**次へ**] を選択します。**[アクセス許可を追加]** ページが表示されます。検索ボックスで、前述の手順で作成したポリシーを検索します。ポリシー名の横にあるチェックボックスにチェックを入れてから、**[次へ]** を選択します。

1. **[名前、確認および作成]** ページで、IAM ロールに名前を指定します。

1. **[ステップ 1: 信頼 ID]** セクションで、IAM ロールが次の信頼ポリシーを使用していることを確認します。

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

****  

   ```
   {
      "Version":"2012-10-17",		 	 	 
      "Statement":[
         {
            "Effect":"Allow",
            "Principal":{
               "Service":"batchoperations.s3.amazonaws.com"
            },
            "Action":"sts:AssumeRole"
         }
      ]
   }
   ```

------

1. **[ステップ 2: アクセス許可を追加する]** セクションで、IAM ロールが前に作成したポリシーを使用していることを確認します。

1. [**ロールの作成**] を選択してください。

# 新しいレプリケーションルールまたは新しいレプリケート先にバッチレプリケーションジョブを作成する
<a name="s3-batch-replication-new-config"></a>

Amazon S3 では、ライブレプリケーションは、レプリケーション設定を作成する前にレプリケート元バケットに既に存在していたオブジェクトをレプリケートしません。ライブレプリケーションは、レプリケーション設定の作成後にバケットに書き込まれた新しいオブジェクトと更新されたオブジェクトのみを自動的にレプリケートします。既存のオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用して、これらのオブジェクトをオンデマンドでレプリケートできます。

新しいライブレプリケーション設定で最初のルールを作成する場合、または Amazon S3 コンソールを介して新しいレプリケート先バケットを既存のレプリケーション設定に追加する場合は、オプションでバッチレプリケーションジョブを作成できます。このバッチレプリケーションジョブを使用して、レプリケート元バケット内の既存のオブジェクトをレプリケート先バケットにレプリケートできます。

既存の設定に対して、新しいレプリケート先バケットを追加せずにバッチレプリケーションを使用するには、「[既存のレプリケーションルールのバッチレプリケーションジョブを作成する](s3-batch-replication-existing-config.md)」を参照してください。

**前提条件**  
バッチオペレーションジョブを作成する前に、バッチオペレーション AWS Identity and Access Management (IAM) ロールを作成し、ユーザーに代わってアクションを実行するための Amazon S3 許可を付与する必要があります。詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。

## Amazon S3 コンソールを介して新しいレプリケーションルールまたはレプリケート先にバッチレプリケーションを使用する
<a name="batch-replication-new-config-console"></a>

新しいレプリケーション設定で最初のルールを作成する場合、または Amazon S3 コンソールを介して新しいレプリケート先バケットを既存の設定に追加する場合は、バッチレプリケーションジョブを作成してレプリケート元バケットで既存のオブジェクトをレプリケートできます。

**レプリケーション設定を作成または更新するときにバッチレプリケーションジョブを作成するには**

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

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

1. **[汎用バケット]** リストで、レプリケートするオブジェクトが含まれるバケットの名前を選択します。

1. 新しいレプリケーションルールを作成するか、既存のルールを編集するには、**[管理]** を選択し、下へスクロールして **[レプリケーションルール]** を選択します。
   + 新しいレプリケーションルールを作成するには、[**レプリケーションルールの作成**] を選択します。ベーシックレプリケーションルールのセットアップ方法の例については、「[ライブレプリケーションの設定例](replication-example-walkthroughs.md)」を参照してください。
   + 既存のバックアップルールを編集するには、ルール名の隣にあるオプションボタンを選択してから、**[編集]** を選択します。

1. 新しいレプリケーションルールを作成するか、既存のレプリケーションルールのレプリケーション先を編集して、[**保存**] を選択します。

   新しいレプリケーション設定で最初のルールを作成した後、または既存の設定を編集して新しいレプリケート先を追加すると、[**Replicate existing objects?**] (既存のオブジェクトをレプリケーションしますか?) ダイアログが表示され、バッチレプリケーションジョブを作成するオプションが表示されます。

1. このジョブを今すぐ作成して実行する場合は、**[はい、既存のオブジェクトをレプリケートする]** を選択します。

   バッチレプリケーションジョブを後で作成するには、**[いいえ、既存のオブジェクトをレプリケートしない** を選択します。

1. **[はい、既存のオブジェクトをレプリケートする]** を選択すると、**[バッチオペレーションの作成ジョブ]** ページが表示されます。S3 バッチレプリケーションジョブには、次の設定があります。  
**ジョブ実行オプション**  
S3 バッチレプリケーションジョブをすぐに実行する場合は、**[準備ができたジョブを自動的に実行]** を選択します。後でジョブを実行する場合は、**[ジョブの準備ができるまで実行を待機]** 選択します。  
**[準備ができたジョブを自動的に実行]** を選択すると、バッチオペレーションマニフェストを作成および保存することはできません。バッチオペレーションマニフェストを保存するには、**[ジョブの準備ができるまで実行を待機]** を選択します。  
**バッチオペレーションマニフェスト**  
**[ジョブの準備ができるまで実行を待機]** を選択した場合、**[バッチオペレーションマニフェスト]** セクションが表示されます。マニフェストとは、指定されたアクションを実行するすべてのオブジェクトのリストです。マニフェストを保存することもできます。S3 インベントリファイルと同様に、マニフェストは CSV ファイルとして保存され、バケットに保存されます。バッチオペレーションマニフェストの詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。  
**完了レポート**  
S3 バッチオペレーションは、マニフェストで指定された各オブジェクトに対して 1 つのタスクを実行します。完了レポートは、追加の設定を必要としない統合形式でタスクの結果を表示する簡単な方法です。すべてのタスクまたは失敗したタスクについてのみ完了レポートをリクエストできます。完了レポートの詳細については、「[完了レポート](batch-ops-job-status.md#batch-ops-completion-report)」を参照してください。  
**アクセス許可**  
レプリケーション失敗の最も一般的な原因の 1 つは、提供されている AWS Identity and Access Management (IAM) ロールの権限が不十分であることです。このロールの作成の詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。バッチレプリケーションに必要なアクセス許可を持つ IAM ロールを作成または選択します。

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

# 既存のレプリケーションルールのバッチレプリケーションジョブを作成する
<a name="s3-batch-replication-existing-config"></a>

Amazon S3 では、ライブレプリケーションは、レプリケーション設定を作成する前にレプリケート元バケットに既に存在していたオブジェクトをレプリケートしません。ライブレプリケーションは、レプリケーション設定の作成後にバケットに書き込まれた新しいオブジェクトと更新されたオブジェクトのみを自動的にレプリケートします。既存のオブジェクトをレプリケートするには、S3 バッチレプリケーションを使用して、これらのオブジェクトをオンデマンドでレプリケートできます。

AWS SDK、AWS Command Line Interface (AWS CLI)、Simple Storage Service (Amazon S3) コンソールを使用して、既存のレプリケーション設定に S3 バッチレプリケーションを設定できます。バッチレプリケーションの概要については、「[バッチレプリケーションを使用した既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。

バッチレプリケーションジョブが終了すると、完了レポートが表示されます。レポートを使用してジョブを検査する方法の詳細については、「[ジョブステータスと完了レポートの追跡](batch-ops-job-status.md)」を参照してください。

**前提条件**  
バッチオペレーションジョブを作成する前に、バッチオペレーション AWS Identity and Access Management (IAM) ロールを作成し、ユーザーに代わってアクションを実行するための Amazon S3 許可を付与する必要があります。詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。

## S3 コンソールの使用
<a name="batch-replication-existing-config-console"></a>

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

1. 左のナビゲーションペインで、[**バッチ操作**] を選択します。

1. **[ジョブの作成]** を選択します。

1. **[AWS リージョン]** セクションに、ジョブを作成するリージョンが表示されていることを確認します。

1. **[マニフェスト]** セクションで、使用するマニフェスト形式を指定します。マニフェストとは、指定されたアクションを実行するすべてのオブジェクトのリストです。バッチオペレーションマニフェストの詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。
   + マニフェストの準備ができている場合は、**S3 インベントリレポート manifest.json**または**CSV**。マニフェストがバージョニングされたバケットにある場合は、マニフェストのバージョン ID を指定できます。バージョン ID を指定しない場合、バッチオペレーションはマニフェストの最新バージョンを使用します。マニフェストの作成の詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。
**注記**  
マニフェスト内のオブジェクトがバージョニング対応のバケット内にある場合は、そのオブジェクトのバージョン ID を指定する必要があります。詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。
   + レプリケーション構成に基づいてマニフェストを作成するには、**[Create manifest using S3 Replication configuration]** (S3 レプリケーション設定を使用してマニフェストを作成する) を選択します。レプリケーション設定のレプリケート元バケットを選択します。

1. (オプション) **[S3 レプリケーション設定を使用してマニフェストを作成する]** を選択した場合は、オブジェクト作成日やレプリケーションステータスなどの追加のフィルターを含めることができます。レプリケーションステータスによるフィルター方法の例については、「[バッチレプリケーションジョブのマニフェストの指定](s3-batch-replication-batch.md#batch-replication-manifest)」を参照してください。

1. (オプション) **[S3 レプリケーション設定を使用してマニフェストを作成する]** を選択した場合は、生成されたマニフェストを保存できます。マニフェストを保存するには、**[バッチオペレーションマニフェストを保存]** を選択します。次に、マニフェストのレプリケート先バケットを指定し、マニフェストを暗号化するかどうかを選択します。
**注記**  
生成されたマニフェストは、レプリケーション元バケットと同じ AWS リージョンに保存されている必要があります。

1. [**次へ**] を選択します。

1. **[オペレーション]** ページで、**[レプリケート]** を選択し、**[次へ]** を選択します。

1. (オプション) **[Description]** (説明) に入力します。

1. 必要に応じて、ジョブの **[Priority]** (優先度) を調整します。番号が高いほど、優先順位が高いことを表します。Simple Storage Service (Amazon S3) は、優先度の低いジョブの前に優先度の高いジョブを実行しようとします。ジョブの優先度の詳細については、「[ジョブの優先度の割り当て](batch-ops-job-priority.md)」を参照してください。

1. (オプション) 完了レポートを生成します。このレポートを生成するには **[完了レポートを生成]** を選択します。

   完了レポートを生成する場合は、**[Failed tasks only]** (失敗したタスクのみ) または **[All tasks]** (すべてのタスク) をレポートするかを選択肢、レポートのレプリケート先バケットを指定する必要があります。

1. **[アクセス許可]** セクションで、バッチレプリケーションに必要なアクセス許可を持つ IAM ロールが選択されていることを確認してください。レプリケーション失敗の最も一般的な原因の 1 つは、提供されている (IAM) ロールのアクセス許可が不十分であることです。このロールの作成の詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。

1. (オプション) バッチレプリケーションジョブにジョブタグを追加します。

1. [**次へ**] を選択します。

1. ジョブの設定を確認し、**[ジョブの作成]** を選択します。

## S3 マニフェストとともに、AWS CLI を使用する
<a name="batch-replication-existing-config-cli"></a>

次の `create-job` コマンド例では、S3 が AWS アカウント `111122223333` に生成したマニフェストを使用して S3 バッチレプリケーションジョブを作成します。この例では、既存のオブジェクトと以前にレプリケートに失敗したオブジェクトをレプリケートします。レプリケーションステータスによるフィルタリングの詳細については、「[バッチレプリケーションジョブのマニフェストの指定](s3-batch-replication-batch.md#batch-replication-manifest)」を参照してください。

このコマンドを使用するには、*`user input placeholders`* をユーザー自身の情報に置き換えます。IAM ロール `role/batch-Replication-IAM-policy` を、以前に作成した IAM ロールに置き換えます。詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。

```
aws s3control create-job --account-id 111122223333 \ 
--operation '{"S3ReplicateObject":{}}' \ 
--report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",\ 
"Prefix":"batch-replication-report", \ 
"Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \ 
--manifest-generator '{"S3JobManifestGenerator": {"ExpectedBucketOwner": "111122223333", \ 
"SourceBucket": "arn:aws:s3:::amzn-s3-demo-source-bucket", \ 
"EnableManifestOutput": false, "Filter": {"EligibleForReplication": true, \ 
"ObjectReplicationStatuses": ["NONE","FAILED"]}}}' \ 
--priority 1 \ 
--role-arn arn:aws:iam::111122223333:role/batch-Replication-IAM-policy \ 
--no-confirmation-required \ 
--region source-bucket-region
```

**注記**  
ジョブは、レプリケーション元バケットと同じ AWS リージョンから開始する必要があります。

バッチレプリケーションジョブを正常に開始すると、応答としてジョブ ID を受け取ります。次の `describe-job` コマンドを使用して、このジョブをモニタリングできます。このコマンドを使用するには、*`user input placeholders`* をユーザー自身の情報に置き換えます。

```
aws s3control describe-job --account-id 111122223333 --job-id job-id --region source-bucket-region
```

## ユーザー提供のマニフェストとともに AWS CLI を使用する
<a name="batch-replication-existing-config-cli-customer-manifest"></a>

次の例では、AWS アカウント `111122223333` のユーザー定義のマニフェストを使用して S3 バッチレプリケーションジョブを作成します。マニフェスト内のオブジェクトがバージョニング対応のバケット内にある場合は、そのオブジェクトのバージョン ID を指定する必要があります。マニフェストで指定されたバージョン ID を持つオブジェクトのみがレプリケートされます。マニフェストの作成の詳細については、「[マニフェストの指定](batch-ops-create-job.md#specify-batchjob-manifest)」を参照してください。

このコマンドを使用するには、*`user input placeholders`* をユーザー自身の情報に置き換えます。IAM ロール `role/batch-Replication-IAM-policy` を、以前に作成した IAM ロールに置き換えます。詳細については、「[S3 バッチレプリケーション用の IAM ロールの設定](s3-batch-replication-policies.md)」を参照してください。

```
aws s3control create-job --account-id 111122223333 \ 
--operation '{"S3ReplicateObject":{}}' \
--report '{"Bucket":"arn:aws:s3:::amzn-s3-demo-completion-report-bucket",\
"Prefix":"batch-replication-report", \
"Format":"Report_CSV_20180820","Enabled":true,"ReportScope":"AllTasks"}' \
--manifest '{"Spec":{"Format":"S3BatchOperations_CSV_20180820",\
"Fields":["Bucket","Key","VersionId"]},\
"Location":{"ObjectArn":"arn:aws:s3:::amzn-s3-demo-manifest-bucket/manifest.csv",\
"ETag":"Manifest Etag"}}' \
--priority 1 \
--role-arn arn:aws:iam::111122223333:role/batch-Replication-IAM-policy \
--no-confirmation-required \
--region source-bucket-region
```

**注記**  
ジョブは、レプリケーション元バケットと同じ AWS リージョンから開始する必要があります。

バッチレプリケーションジョブを正常に開始すると、応答としてジョブ ID を受け取ります。次の `describe-job` コマンドを使用して、このジョブをモニタリングできます。

```
aws s3control describe-job --account-id 111122223333 --job-id job-id --region source-bucket-region
```

# レプリケーションのトラブルシューティング
<a name="replication-troubleshoot"></a>

このセクションでは、Amazon S3 レプリケーションのトラブルシューティングのヒントと S3 バッチレプリケーションエラーに関する情報を一覧で示します。

**Topics**
+ [

## S3 レプリケーションのトラブルシューティングのヒント
](#troubleshoot-replication-tips)
+ [

## バッチレプリケーションエラー
](#troubleshoot-batch-replication-errors)

## S3 レプリケーションのトラブルシューティングのヒント
<a name="troubleshoot-replication-tips"></a>

レプリケーションを設定した後にオブジェクトレプリカがレプリケート先バケットに表示されない場合は、これらのトラブルシューティングのヒントを使用して問題を特定し、修正してください。
+ 大部分のオブジェクトは、15 分以内にレプリケートされます。Amazon S3 がオブジェクトをレプリケートするために要する時間は、さまざまな要因に依存します (レプリケート元とレプリケート先のリージョンペア、オブジェクトのサイズなど)。大きなオブジェクトの場合は、レプリケーションには最大で数時間かかることもあります。レプリケート時間を可視化するには、[S3 Replication Time Control (S3 RTC)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-time-control.html#enabling-replication-time-control) を使用できます。

  レプリケートされているオブジェクトが大きい場合は、レプリケート先バケットに表示されるかどうかを確認する前に、少しの間待機してください。また、レプリケート先オブジェクトのレプリケーションの状態を確認できます。オブジェクトのレプリケーションステータスが `PENDING` の場合は、Amazon S3 がレプリケーションを完了していません。オブジェクトのレプリケーションの状態が `FAILED` の場合は、レプリケート元バケットのレプリケーション設定を確認してください。

  さらに、レプリケーション中の失敗についての情報を受信するには、Amazon S3 イベント通知レプリケーションを設定することで失敗イベントを受信できます。詳細については、「[Amazon S3 イベント通知によるレプリケーション失敗イベントの受信](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-metrics.html)」を参照してください。
+ オブジェクトのレプリケーションの状態を確認するには、`HeadObject` API オペレーションを呼び出します。`HeadObject` API オペレーションは、`PENDING`、`COMPLETED`、または `FAILED` で、オブジェクトのレプリケーションの状態を返します。`HeadObject` API コールへの応答では、レプリケーションの状態が `x-amz-replication-status` ヘッダーで返されます。
**注記**  
`HeadObject` を実行するには、リクエストするオブジェクトへの読み取りアクセス権が必要です。`HEAD` リクエストには、`GET` リクエストと同じオプションがあり、`GET` オペレーションは実行されません。例えば、AWS Command Line Interface (AWS CLI) を使用して `HeadObject` リクエストを実行するには、次のコマンドを実行します。`user input placeholders` を、ユーザー自身の情報に置き換えます。  

  ```
  aws s3api head-object --bucket amzn-s3-demo-source-bucket --key index.html
  ```
+ `HeadObject` が `FAILED` のレプリケーション状態のオブジェクトを返した場合、S3 バッチレプリケーションを使用して、失敗したオブジェクトをレプリケートできます。詳細については、「[バッチレプリケーションを使用した既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。また、失敗したオブジェクトをレプリケート元バケットに再アップロードできます。これにより、新しいオブジェクトに対するレプリケーションが開始されます。
+ レプリケート元バケットのレプリケーション設定について、以下を確認します。
  + レプリケート先バケットの Amazon リソースネーム (ARN) が正しい。
  + キー名のプレフィックスが正しい。たとえば、`Tax` というプレフィックスが付いたオブジェクトをレプリケートする設定にした場合、`Tax/document1` や `Tax/document2` のようなキー名のオブジェクトのみがレプリケートされます。キー名が "`document3`" のオブジェクトはレプリケートされません。
  + レプリケーションルールの状態は `Enabled` です。
+ レプリケーション設定で、どのバケットでもバージョニングが一時停止されていないことを確認します。レプリケート元とレプリケート先の両方のバケットで、バージョニングを有効にする必要があります。
+ レプリケーションルールが **[オブジェクト所有権をレプリケート先バケット所有者に変更]** に設定されている場合、レプリケーションに使用する AWS Identity and Access Management (IAM) ロールに `s3:ObjectOwnerOverrideToBucketOwner` 権限が必要です。この権限はリソース (この場合はレプリケート先バケット) に付与されます。例えば、次の `Resource` ステートメントは、レプリケート先バケットにこの権限を付与する方法を示しています。

  ```
  {
    "Effect":"Allow",
    "Action":[
      "s3:ObjectOwnerOverrideToBucketOwner"
    ],
    "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
  }
  ```
+ レプリケート先バケットを他のアカウントが所有している場合、レプリケート先バケットの所有者は、レプリケート先バケットポリシーにより、レプリケート元バケットの所有者に対しても `s3:ObjectOwnerOverrideToBucketOwner` 権限を付与する必要があります。次の例のバケットポリシーを使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

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

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Id": "Policy1644945280205",
    "Statement": [
      {
        "Sid": "Stmt1644945277847",
        "Effect": "Allow",
        "Principal": {
          "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
        },
        "Action": [
          "s3:ReplicateObject",
          "s3:ReplicateTags",
          "s3:ObjectOwnerOverrideToBucketOwner"
        ],
        "Resource": "arn:aws:s3:::amzn-s3-demo-destination-bucket/*"
      }
    ]
  }
  ```

------
**注記**  
レプリケート先バケットのオブジェクト所有権設定に **[バケット所有者の強制]** が含まれている場合は、レプリケーションルールの **[オブジェクト所有権をレプリケート先バケット所有者に変更]** 設定を更新する必要はありません。オブジェクトの所有権の変更はデフォルトで行われます。レプリカの所有権の変更の詳細については、「[レプリカ所有者の変更](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-change-owner.html)」を参照してください。
+ レプリケート元バケットとレプリケート先バケットが異なる AWS アカウントによって所有されているクロスアカウントシナリオでレプリケーション設定を行っている場合、レプリケート先バケットをリクエスタ支払いバケットに設定することはできません。詳細については、「[ストレージの転送と使用にリクエスタ支払い汎用バケットを使用する](RequesterPaysBuckets.md)」を参照してください。
+ バケットのレプリケート先オブジェクトが AWS Key Management Service (AWS KMS) キーを使用したサーバー側暗号化 (SSE-KMS) を使用して暗号化されている場合、AWS KMS で暗号化されたオブジェクトが含まれるようにレプリケーションルールを設定する必要があります。Amazon S3 コンソールの**暗号化**設定で、必ず **[AWS KMS で暗号化されたオブジェクトをレプリケートする]** を選択してください。次に、レプリケート先オブジェクトを暗号化するための AWS KMS キーを選択します。
**注記**  
レプリケート先バケットが別のアカウントにある場合は、レプリケート先アカウントが所有する AWS KMS カスタマーマネージドキーを指定します。デフォルトの Amazon S3 マネージドキー (`aws/s3`) は使用しないでください。デフォルトのキーを使用すると、レプリケート元アカウントが所有する Amazon S3 マネージドキーでオブジェクトが暗号化され、オブジェクトが別のアカウントと共有されるのを防ぎます。その結果、レプリケート先アカウントはレプリケート先バケット内のオブジェクトにアクセスできなくなります。

  レプリケート先アカウントに属する AWS KMS キーを使用してレプリケート先オブジェクトを暗号化するには、レプリケート先アカウントによって KMS キーポリシーのレプリケーションロールに `kms:GenerateDataKey` および `kms:Encrypt` 権限を付与する必要があります。次の例のステートメントを KMS キーポリシーで使用するには、`user input placeholders` をユーザー自身の情報に置き換えます。

  ```
  {    
      "Sid": "AllowS3ReplicationSourceRoleToUseTheKey",
      "Effect": "Allow",
      "Principal": {
          "AWS": "arn:aws:iam::123456789101:role/s3-replication-role"
      },
      "Action": ["kms:GenerateDataKey", "kms:Encrypt"],
      "Resource": "*"
  }
  ```

  AWS KMS キーポリシーの `Resource` ステートメントにアスタリスク (`*`) を使用すると、そのポリシーは KMS キーの使用権限をレプリケーションロールのみに付与します。このポリシーでは、レプリケーションロールの権限の昇格は許可していません。

  デフォルトでは、KMS キーポリシーによって、キーに対するすべての権限をルートユーザーに付与します。この権限は、同じアカウントの他のユーザーに委任できます。ソース KMS キーポリシーに `Deny` ステートメントがない限り、IAM ポリシーを使用してレプリケーションロールにソース KMS キーへのアクセス権限を付与するだけで十分です。
**注記**  
特定の CIDR 範囲、仮想プライベートクラウド (VPC) エンドポイント、S3 アクセスポイントへのアクセスを制限する KMS キーポリシーにより、レプリケーションが失敗する可能性があります。

  レプリケート元またはレプリケート先の KMS キーのいずれかが、暗号化コンテキストに基づいてアクセス権限を付与する場合は、Amazon S3 バケットキーがバケットに対して有効になっていることを確認します。バケットで S3 バケットキーが有効になっている場合、暗号化コンテキストは次のようなバケットレベルのリソースである必要があります。

  ```
  "kms:EncryptionContext:arn:aws:arn": [
       "arn:aws:s3:::amzn-s3-demo-source-bucket"
       ]
  "kms:EncryptionContext:arn:aws:arn": [
       "arn:aws:s3:::amzn-s3-demo-destination-bucket"
       ]
  ```

  KMS キーポリシーによって付与されるアクセス権限に加えて、レプリケート元アカウントは、レプリケーションロールの IAM ポリシーに次の最小限必要なアクセス権限を追加する必要があります。

  ```
  {
      "Effect": "Allow",
      "Action": [
          "kms:Decrypt",
          "kms:GenerateDataKey"
      ],
      "Resource": [
          "Source-KMS-Key-ARN"
      ]
  },
  {
      "Effect": "Allow",
      "Action": [
          "kms:GenerateDataKey",
          "kms:Encrypt"
      ],
      "Resource": [
          "Destination-KMS-Key-ARN"
      ]
  }
  ```
**重要**  
S3 バッチレプリケーションを使用してデータセットをリージョン間でレプリケートし、オブジェクトのサーバー側の暗号化タイプを SSE-S3 から SSE-KMS に更新したことがある場合は、追加のアクセス許可が必要になる場合があります。ソースリージョンバケットでは、`kms:decrypt` アクセス許可が必要です。次に、レプリケート先リージョンのバケットの `kms:decrypt` および `kms:encrypt` アクセス許可が必要です。

  AWS KMS で暗号化されたオブジェクトをレプリケートする方法の詳細については、「[暗号化オブジェクトのレプリケート](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough-4.html)」を参照してください。
+ レプリケート先バケットが他の AWS アカウントによって所有されている場合、バケット所有者が、レプリケート元バケットの所有者に対してオブジェクトのレプリケーションを許可するバケットポリシーをレプリケート先バケットに設定していることを確認します。例については、「[異なるアカウントでのバケットのレプリケーション設定](replication-walkthrough-2.md)」を参照してください。
+ レプリケーションでオブジェクトロックを使用するには、レプリケーションの設定に使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの追加のアクセス許可を付与する必要があります。2 つの新しいアクセス許可とは `s3:GetObjectRetention` と `s3:GetObjectLegalHold` です。ロールに `s3:Get*` アクセス許可がある場合、そのステートメントは要件を満たしています。詳細については、「[S3 レプリケーションでのオブジェクトロックの使用](object-lock-managing.md#object-lock-managing-replication)」を参照してください。
+ 権限を検証してもオブジェクトがレプリケートされない場合は、次の場所に明示的な `Deny` ステートメントがないかを確認してください。
  + レプリケート先またはレプリケート先バケットポリシーにおける `Deny` ステートメント。バケットポリシーで次のいずれかのアクションでレプリケーションのロールへのアクセスを拒否した場合、レプリケーションは失敗します。

    レプリケート元のバケット

    ```
    1.            "s3:GetReplicationConfiguration",
    2.            "s3:ListBucket",
    3.            "s3:GetObjectVersionForReplication",
    4.            "s3:GetObjectVersionAcl",
    5.            "s3:GetObjectVersionTagging"
    ```

    レプリケート先バケット:

    ```
    1.            "s3:ReplicateObject",
    2.            "s3:ReplicateDelete",
    3.            "s3:ReplicateTags"
    ```
  + IAM ロールにアタッチされた `Deny` ステートメントまたはアクセス許可の境界により、レプリケーションが失敗する可能性があります。
  + レプリケート元アカウントまたはレプリケート先アカウントのいずれかにアタッチされた AWS Organizations サービスコントロールポリシー (SCP) の `Deny` ステートメントが原因で、レプリケーションが失敗する可能性があります。
  + レプリケート元バケットまたはレプリケート先バケットのいずれかにアタッチされた AWS Organizations リソースコントロールポリシー (RCP) の `Deny` ステートメントが原因で、レプリケーションが失敗する場合があります。
+ レプリケート先バケットにオブジェクトのレプリカが表示されない場合、次の問題でレプリケーションを妨げている可能性があります。
  + レプリケート元バケットのオブジェクト自体が別のレプリケーション設定によって作成されたレプリカである場合、Amazon S3 はそのオブジェクトをレプリケートしません。例えば、バケット A からバケット B へ、バケット B からバケット C へのレプリケーション設定を設定した場合、Amazon S3 はバケット B にあるオブジェクトレプリカをバケット C へレプリケートしません。
  + レプリケート元バケット所有者は、オブジェクトをアップロードするための許可を他の AWS アカウントに付与できます。デフォルトでは、レプリケート元バケット所有者は、他のアカウントによって作成されたオブジェクトに対するアクセス許可を持ちません。レプリケーション設定では、レプリケート元バケット所有者がアクセス許可を持つオブジェクトのみがレプリケートされます。この問題を回避するために、レプリケート元バケット所有者は、条件付きでオブジェクトを作成するための他の AWS アカウントアクセス許可を付与し、それらのオブジェクトに対する明示的なアクセス許可を要求することができます。ポリシーの例については「[バケット所有者はフルコントロール権限を持ちながら、オブジェクトをアップロードするためのクロスアカウントアクセス許可を付与する](example-bucket-policies.md#example-bucket-policies-acl-2)」を参照してください。
+ レプリケーション設定に、特定のタグを持つオブジェクトのサブセットをレプリケートするためのルールを追加するとします。この場合、Amazon S3 がオブジェクトをレプリケートするには、オブジェクトの作成時に特定のタグキーと値を割り当てる必要があります。まず、オブジェクトを作成して、それから既存のオブジェクトにタグを追加した場合、Amazon S3 はそのオブジェクトをレプリケートしません。
+ Amazon S3 イベント通知を使用すると、オブジェクトがレプリケート先の AWS リージョンにレプリケートされない場合に通知します。Amazon S3 イベント通知は、Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS)、または AWS Lambda を通じて使用できます。詳細については、「[Amazon S3 イベント通知によるレプリケーション失敗イベントの受信](replication-metrics-events.md)」を参照してください。

  また、Amazon S3 イベント通知を使用して、レプリケーションの失敗の理由を確認できます。失敗理由のリストを確認するには、「[Amazon S3 レプリケーションの失敗の理由](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-failure-codes.html)」を参照してください。

## バッチレプリケーションエラー
<a name="troubleshoot-batch-replication-errors"></a>

レプリケート先バケットにレプリケートされないオブジェクトをトラブルシューティングするには、バケット、レプリケーションロール、バッチレプリケーションジョブの作成に使用した IAM ロールのさまざまなタイプのアクセス許可を確認します。また、ブロックパブリックアクセス設定とバケットの S3 オブジェクトの所有権設定を必ず確認してください。

バッチオペレーションの使用に関するトラブルシューティングのその他のヒントについては、「[S3 バッチオペレーションのトラブルシューティング](troubleshooting-batch-operations.md)」を参照してください。

レプリケーションを設定していて、オブジェクトがレプリケートされていない場合は、AWS re:Post ナレッジセンターの「[バケット間のレプリケーションを設定したにもかかわらず、Amazon S3 オブジェクトがレプリケートされない理由を知りたいです。](https://repost.aws/knowledge-center/s3-troubleshoot-replication)」を参照してください。

バッチレプリケーションの使用中に、次のいずれかのエラーが発生する可能性があります。
+ マニフェストの生成で、フィルター条件に一致するキーが見つかりませんでした。

  このエラーは、以下のいずれかの原因で発生することがあります。
  + レプリケート元バケット内のオブジェクトが S3 Glacier Flexible Retrieval または S3 Glacier Deep Archive のストレージクラスに保存されている場合。

    これらのオブジェクトでバッチレプリケーションを使用するには、まず、バッチオペレーションジョブで **[復元]** (`S3InitiateRestoreObjectOperation`) オペレーションを使用して、オブジェクトを S3 標準ストレージクラスに復元します。詳細については、「[アーカイブされたオブジェクトの復元](restoring-objects.md)」および「[オブジェクトの復元 (バッチオペレーション)](batch-ops-initiate-restore-object.md)」を参照してください。オブジェクトの復元後、バッチレプリケーションジョブを使用してオブジェクトをレプリケートできます。
  + 指定したフィルター条件がソースバケット内の有効なオブジェクトと一致しない場合。

    フィルター条件を確認して修正します。例えば、バッチレプリケーションルールにおいて、フィルター条件によってレプリケート元バケット内でプレフィックス `Tax/` を持つすべてのオブジェクトを検索するとします。プレフィックス名が誤って入力され、スラッシュが末尾だけでなく先頭と末尾の両方にある場合 (`/Tax/`)、S3 オブジェクトは見つかりません。このエラーを解決するには、レプリケーションルールのプレフィックスを `/Tax/` から `Tax/` に修正します。
+ バッチオペレーションの状態は失敗です。理由: ジョブレポートをレポートバケットに書き込めませんでした。

  このエラーは、バッチオペレーションジョブに使用される IAM ロールが、ジョブの作成時に指定された場所に完了レポートを保存できない場合に発生します。このエラーを解決するには、バッチオペレーションの完了レポートを保存するバケットの `s3:PutObject` アクセス許可が IAM ロールにあることを確認します。レプリケート元バケットとは異なるバケットにレポートを配信することをお勧めします。
+ バッチオペレーションが失敗しました。失敗合計は 0 ではありません。

  このエラーは、実行中のバッチレプリケーションジョブにオブジェクト権限が不十分という問題がある場合に発生します。バッチレプリケーションジョブにレプリケーションルールを使用している場合は、レプリケーションに使用する IAM ロールに、レプリケート元またはレプリケート先のバケットのオブジェクトにアクセスする適切な権限があることを確認します。また、[バッチレプリケーション完了レポート](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-batch-replication-batch.html#batch-replication-completion-report)で、特定の [Amazon S3 レプリケーション失敗の理由](https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-failure-codes.html)を確認できます。
+ バッチジョブは正常に実行されましたが、レプリケート先バケットに必要なオブジェクトの数が一致しません。

  このエラーは、バッチレプリケーションジョブで提供されたマニフェストにリストアップされているオブジェクトと、ジョブの作成時に選択したフィルターが一致しない場合に発生します。また、レプリケート元バケット内のオブジェクトがどのレプリケーションルールにも一致せず、生成されたマニフェストに含まれていない場合にもこのメッセージが表示されることがあります。

### バッチオペレーションの失敗は、既存のレプリケーション設定に新しいレプリケーションルールを追加した後に発生します
<a name="new-replication-rule"></a>

バッチオペレーションは、レプリケート元バケットのレプリケーション設定のすべてのルールに対して、既存オブジェクトのレプリケーションを実行しようとします。既存のレプリケーションルールのいずれかに問題があると、失敗が発生する可能性があります。

バッチオペレーションジョブの完了レポートには、ジョブの失敗理由が説明されています。一般的なエラーのリストについては、「[Amazon S3 レプリケーションの失敗の理由](replication-metrics-events.md#replication-failure-codes)」を参照してください。

# メトリクス、イベント通知、ステータスによるレプリケーションのモニタリング
<a name="replication-metrics"></a>

以下のメカニズムを使用して、ライブレプリケーション設定と S3 バッチレプリケーションジョブをモニタリングできます。
+ **S3 レプリケーションメトリクス** – S3 レプリケーションメトリクスを有効にすると、Amazon CloudWatch は、保留中のバイト数、保留中のオペレーション、レプリケーションレイテンシーをレプリケーションルールレベルで追跡するために使用できるメトリクスを出力します。S3 レプリケーションメトリクスは、Amazon S3 コンソールと Amazon CloudWatch コンソールから表示できます。Amazon S3 コンソールでは、ソースバケットの **[メトリクス]** タブでこれらのメトリクスを表示できます。S3 レプリケーションメトリクスの詳細については、「[S3 レプリケーションメトリクスの使用](repl-metrics.md)」を参照してください。
+ **S3 ストレージレンズメトリクス** – S3 レプリケーションメトリクスに加えて、S3 ストレージレンズダッシュボードが提供するレプリケーション関連のデータ保護メトリクスを使用できます。例えば、S3 ストレージレンズの無料のメトリクスを使用すると、ソースバケットからレプリケートされた総バイト数や、ソースバケットからレプリケートされたオブジェクトの数などのメトリクスを表示できます。

  レプリケーションインスタンス全体を監査するには、S3 ストレージレンズで高度なメトリクスを有効にします。S3 ストレージレンズの高度なメトリクスを使用すると、無効なレプリケーション先を持つレプリケーションルールの数など、さまざまなタイプのレプリケーションルールの数を確認できます。

  S3 ストレージレンズでのレプリケーションメトリクスの使用の詳細については、「[S3 ストレージレンズでのレプリケーションメトリクスの表示](viewing-replication-metrics-storage-lens.md)」を参照してください。
+ **S3 イベント通知** – S3 イベント通知は、オブジェクトが宛先の AWS リージョンにレプリケートされない場合や、オブジェクトが特定のしきい値内にレプリケートされない場合に、インスタンスのオブジェクトレベルで通知できます。S3 イベント通知には、`s3:Replication:OperationFailedReplication`、`s3:Replication:OperationMissedThreshold`、`s3:Replication:OperationReplicatedAfterThreshold`、および `s3:Replication:OperationNotTracked` のレプリケーションイベントタイプが用意されています。

  Amazon S3 イベントは、Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS)、または を通じて使用できますAWS Lambda 詳細については、「[Amazon S3 イベント通知によるレプリケーション失敗イベントの受信](replication-metrics-events.md)」を参照してください。
+ **レプリケーションステータス値** – オブジェクトのレプリケーションステータスを取得することもできます。レプリケーションステータスは、レプリケートされているオブジェクトの現在の状態を判断するのに役立ちます。レプリケート元オブジェクトのレプリケーションステータスは、 `PENDING`、`COMPLETED`または`FAILED`のいずれかを返します。レプリカのレプリケーションステータスが`REPLICA`に返されます。

  S3 バッチレプリケーションジョブを作成するときにも、レプリケーションステータス値を使用することもできます。例えば、これらのステータス値を使用して、レプリケートされたことがない、またはレプリケーションに失敗したオブジェクトをレプリケートできます。

  オブジェクトのレプリケーションステータスの取得の詳細については、「[レプリケーションステータス情報の取得](replication-status.md)」を参照してください。バッチレプリケーションでこれらの値を使用する方法の詳細については、「[バッチレプリケーションジョブのフィルター](s3-batch-replication-batch.md#batch-replication-filters)」を参照してください。

**Topics**
+ [

# S3 レプリケーションメトリクスの使用
](repl-metrics.md)
+ [

# S3 ストレージレンズでのレプリケーションメトリクスの表示
](viewing-replication-metrics-storage-lens.md)
+ [

# Amazon S3 イベント通知によるレプリケーション失敗イベントの受信
](replication-metrics-events.md)
+ [

# レプリケーションステータス情報の取得
](replication-status.md)

# S3 レプリケーションメトリクスの使用
<a name="repl-metrics"></a>

S3 レプリケーションメトリクス は、レプリケーション設定のレプリケーションルールの詳細なメトリクスを提供します。レプリケーションメトリクスを使って、保留中のバイト数、保留中のオペレーション、レプリケーションに失敗したオペレーション、レプリケーションのレイテンシーを追跡すると、レプリケーションの進行状況を 1 分単位でモニタリングできます。

**注記**  
S3 レプリケーションメトリクスは、Amazon CloudWatch カスタムメトリクスと同じ料金レートで請求されます。詳細については、「[Amazon CloudWatch の料金](https://aws.amazon.com/cloudwatch/pricing/)」を参照してください。
S3 レプリケーション時間コントロールを使用している場合、Amazon CloudWatch は、各レプリケーションルールで S3 RTC を有効にしてから 15 分後にレプリケーションメトリクスのレポートを開始します。

S3 Replication Time Control (S3 RTC) を有効にすると、S3 レプリケーションメトリクスが自動的にオンになります。[ルールを作成または編集するときに](replication-walkthrough1.md)、S3 RTC とは独立して S3 レプリケーションメトリクスを有効にすることもできます。S3 RTC には、サービスレベルアグリーメント (SLA) やしきい値の欠落に関する通知など、その他の機能が含まれています。詳細については、「[S3 Replication Time Control (S3 RTC)を使用してコンプライアンス要件を満たす](replication-time-control.md)」を参照してください。

S3 レプリケーションメトリクスが有効になっている場合、Amazon S3 は次のメトリクスを Amazon CloudWatch に発行します。CloudWatch メトリクスは、ベストエフォートで配信されます。


| メトリクス名 | メトリクスの説明 | このメトリクスはどのオブジェクトに適用されますか。 | このメトリクスはどのリージョンで発行されていますか。 | レプリケート先バケットが削除された場合でも、このメトリクスは発行されますか。 | レプリケーションが行われない場合、このメトリクスは引き続き発行されますか。 | 
| --- | --- | --- | --- | --- | --- | 
| **レプリケーション保留中のバイト数** |  特定のレプリケーションルールについて、レプリケーションが保留中のオブジェクトの合計バイト数。  | このメトリクスは、S3 クロスリージョンレプリケーション (S3 CRR) または S3 同一リージョンレプリケーション (S3 SRR) でレプリケートされた新しいオブジェクトにのみ適用されます。 | このメトリクスは、レプリケート先バケットのリージョンで発行されます。 | いいえ | あり | 
| **レプリケーションレイテンシー** |  特定のレプリケーションルールについて、レプリケート先バケットがレプリケート元バケットより遅れる最大秒数。  | このメトリクスは、S3 CRR または S3 SRR でレプリケートされた新しいオブジェクトにのみ適用されます。 | このメトリクスは、レプリケート先バケットのリージョンで発行されます。 | いいえ | あり | 
| **レプリケーション保留中のオペレーション** |  特定のレプリケーションルールについて、レプリケーションが保留中のオペレーションの数。このメトリクスは、オブジェクト、削除マーカー、タグ、アクセスコントロールリスト (ACL)、S3 オブジェクトロックに関連するオペレーションを追跡します。  | このメトリクスは、S3 CRR または S3 SRR でレプリケートされた新しいオブジェクトにのみ適用されます。 | このメトリクスは、レプリケート先バケットのリージョンで発行されます。 | いいえ | あり | 
| **オペレーション失敗レプリケーション** |  特定のレプリケーションルールについて、レプリケーションに失敗したオペレーションの数。このメトリクスは、オブジェクト、削除マーカー、タグ、アクセスコントロールリスト (ACL)、Object Lockに関連するオペレーションを追跡します。 **[レプリケーションに失敗したオペレーション]** は、S3 レプリケーションの失敗を 1 分間隔で集計して追跡します。レプリケーションに失敗した特定のオブジェクトとその失敗理由を特定するには、Amazon S3 イベント通知で `OperationFailedReplication` イベントをサブスクライブしてください。詳細については、「[Amazon S3 イベント通知によるレプリケーション失敗イベントの受信](replication-metrics-events.md)」を参照してください。  |  このメトリクスは S3 CRR または S3 SRR でレプリケートされる新しいオブジェクトと、S3 バッチレプリケーションでレプリケートされる既存のオブジェクトの両方に適用されます。  S3 バッチレプリケーションジョブがまったく実行されなかった場合、メトリクスは Amazon CloudWatch に送信されません。例えば、S3 Batch レプリケーションジョブを実行するために必要なアクセス許可がない場合、またはレプリケーション設定のタグまたはプレフィックスが一致しない場合、ジョブは実行されません。   | このメトリクスは、ソースバケットのリージョンで公開されます。 | はい | なし | 

CloudWatch でこれらのメトリクスを利用する方法については、「[CloudWatch の S3 レプリケーションメトリクス](metrics-dimensions.md#s3-cloudwatch-replication-metrics)」を参照してください。

## S3 レプリケーションメトリクスの有効化
<a name="enabling-replication-metrics"></a>

S3 レプリケーションメトリクスは、新規または既存のレプリケーションルールを使用して開始できます。レプリケーションルールの作成方法の詳細については、「[同じアカウントでのバケットのレプリケーションの設定](replication-walkthrough1.md)」を参照してください。レプリケーションルールを S3 バケット全体に適用するか、特定のプレフィックスやタグを持つ Amazon S3 オブジェクトに適用するかを選択できます。

このトピックでは、ソースバケットとレプリケーション先バケットが同じまたは異なる AWS アカウント で所有されている場合に、レプリケーション設定で S3 レプリケーションメトリクスを有効にする手順について説明します。

AWS Command Line Interface (AWS CLI) を使用してレプリケーションメトリクスを有効にするには、`Metrics` が有効になっているレプリケート元バケットにレプリケーション設定を追加する必要があります。この設定例では、`Tax` というプレフィックスの下にあるオブジェクトがレプリケート先バケットである `amzn-s3-demo-bucket` にレプリケートされて、それらのオブジェクトのメトリクスが生成されます。

```
{
    "Rules": [
        {
            "Status": "Enabled",
            "Filter": {
                "Prefix": "Tax"
            },
            "Destination": {
                "Bucket": "arn:aws:s3:::amzn-s3-demo-bucket",
                "Metrics": {
                    "Status": "Enabled"
                }
            },
            "Priority": 1
        }
    ],
    "Role": "IAM-Role-ARN"
}
```

## レプリケーションメトリクスの表示
<a name="viewing-replication-metrics"></a>

S3 レプリケーションメトリクスは、Amazon S3 コンソールのソース汎用バケットの **[メトリクス]** タブで表示できます。これらの Amazon CloudWatch メトリクスは、Amazon CloudWatch コンソールでも使用できます。S3 レプリケーションメトリクスを有効にすると、Amazon CloudWatch は、保留中のバイト数、保留中のオペレーション、レプリケーションレイテンシーをレプリケーションルールレベルで追跡するために使用できるメトリクスを出力します。

Amazon S3 コンソールまたは Amazon S3 REST API を使用して S3 Replication Time Control (S3 RTC) でレプリケーションを有効にすると、S3 レプリケーションメトリクスが自動的にオンになります。[ルールを作成または編集するときに](replication-walkthrough1.md)、S3 RTC とは独立して S3 レプリケーションメトリクスを有効にすることもできます。

S3 レプリケーション時間コントロールを使用している場合、Amazon CloudWatch は、各レプリケーションルールで S3 RTC を有効にしてから 15 分後にレプリケーションメトリクスのレポートを開始します。詳細については、「[S3 レプリケーションメトリクスの使用](#repl-metrics)」を参照してください。

レプリケーションメトリクスは、レプリケーション設定のルール ID を追跡します。レプリケーションルール ID は、プレフィックス、タグ、またはその両方の組み合わせに固有です。

 Amazon S3 の CloudWatch メトリクスの詳細については、「[Amazon CloudWatch によるメトリクスのモニタリング](cloudwatch-monitoring.md)」を参照してください。

**前提条件**  
S3 レプリケーションメトリクスが有効になっているレプリケーションルールを作成します。詳細については、「[S3 レプリケーションメトリクスの有効化](#enabling-replication-metrics)」を参照してください。

**レプリケート元バケットの **[メトリクス]** タブで S3 レプリケーションメトリクスを表示するには**

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

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

1. バケットリストで、レプリケーションメトリクスを取得するオブジェクトが含まれているソースバケットの名前を選択します。

1. **[メトリクス]** タブをクリックします。

1. **[レプリケーションメトリクス]** で、メトリクスを表示するレプリケーションルールを選択します。

1. **[グラフを表示]** を選択します。

   Amazon S3 には、選択したルールの **[レプリケーションレイテンシー]**、**[レプリケーション保留中のバイト数]**、**[レプリケーションを保留中のオペをレーション]**、および **[レプリケーションに失敗したオペレーション]** のグラフが表示されます。

# S3 ストレージレンズでのレプリケーションメトリクスの表示
<a name="viewing-replication-metrics-storage-lens"></a>

[S3 レプリケーションメトリクスに加えて](repl-metrics.md)、S3 ストレージレンズが提供するレプリケーション関連のデータ保護メトリクスを使用できます。S3 ストレージレンズは、オブジェクトストレージの使用状況とアクティビティを組織全体で可視化するために使用できるクラウドストレージの分析機能です。詳細については、「[Using S3 Storage Lens to protect your data](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-lens-data-protection.html#storage-lens-data-protection-replication-rule)」(S3 ストレージレンズを使用してデータを保護する) を参照してください。

S3 ストレージレンズには、無料のメトリクスと、追加料金でアップグレードできるアドバンストメトリクスとレコメンデーションの 2 つの階層のメトリクスがあります。アドバンストメトリクスとレコメンデーションをご利用になれば、ストレージに関するインサイトが得られる追加のメトリクスや機能にアクセスできます。S3 Storage Lens の料金の詳細については、「[Amazon S3 の料金](https://aws.amazon.com/s3/pricing)」を参照してください。

S3 ストレージレンズで無料のメトリクスを使用すると、ソースバケットからレプリケートされた総バイト数や、ソースバケットからレプリケートされたオブジェクトの数などのメトリクスを表示できます。

レプリケーションインスタンス全体を監査するには、S3 ストレージレンズで高度なメトリクスを有効にします。S3 ストレージレンズの高度なメトリクスを使用すると、無効なレプリケーション先を持つレプリケーションルールの数など、さまざまなタイプのレプリケーションルールの数を確認できます。

各階層にあるレプリケーションメトリクスを含む S3 ストレージレンズメトリクスの完全なリストについては、「[S3 ストレージレンズのメトリクスに関する用語集](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html)」を参照してください。

**前提条件**  
[ライブレプリケーション設定](replication-how-setup.md)または [S3 バッチレプリケーションジョブ](s3-batch-replication-batch.md)を作成します。

**Amazon S3 ストレージレンズでレプリケーションメトリクスを表示するには**

1. S3 ストレージレンズダッシュボードを作成します。手順については、「[S3 コンソールの使用](storage_lens_creating_dashboard.md#storage_lens_console_creating)」を参照してください。

1. (オプション) ダッシュボードの設定中に、すべての S3 ストレージレンズレプリケーションメトリクスを表示するには、**[高度なメトリクスとレコメンデーション]** を選択し、**[高度なデータ保護メトリクス]** を選択します。メトリクスの完全なリストについては、「[Amazon S3 Storage Lens のメトリクスに関する用語集](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage_lens_metrics_glossary.html?icmpid=docs_s3_user_guide_replication.html)」を参照してください。

   高度なメトリクスとレコメンデーションを有効にすると、レプリケーション設定に関する詳細なインサイトを得ることができます。例えば、S3 ストレージレンズのレプリケーションルール数メトリクスを使用して、レプリケーション用に設定されているバケットに関する詳細な情報を取得できます。この情報には、バケット内とリージョン内およびバケット間とリージョン間のレプリケーションルールが含まれます。詳細については、「[各バケットのレプリケーションルールの総数を数える](storage-lens-data-protection.md#storage-lens-data-protection-replication-rule)」を参照してください。

1. ダッシュボードを作成したら、ダッシュボードを開き、**[バケット]** タブを選択します。

1. **[Buckets]** (バケット) セクションまで下にスクロールします。**[Metrics categories]** (メトリクスのカテゴリ) で、**[Data protection]** (データ保護) を選択します。次に、**[Summary]** (概要) を選択解除します。

1. **[バケット]** リストをフィルタリングしてレプリケーションメトリクスのみを表示するには、設定アイコン (![\[The preferences icon in the S3 Storage Lens dashboard.\]](http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/images/preferences.png)) を選択します。

1. レプリケーションメトリクスだけが選択された状態になるまで、他のすべてのデータ保護メトリクスを選択解除します。

1. (オプション) **[Page size]** (ページサイズ) で、リストに表示するバケットの数を選択します。

1. [**続行**] をクリックしてください。

# Amazon S3 イベント通知によるレプリケーション失敗イベントの受信
<a name="replication-metrics-events"></a>

レプリケーション設定で S3 レプリケーションメトリクスを有効にしている場合は、Amazon S3 イベント通知を設定して、オブジェクトが宛先 AWS リージョンにレプリケートされない場合に通知を受けることができます。レプリケーション設定で S3 Replication Time Control (S3 RTC) を有効にしている場合、レプリケーションの 15 分間の S3 RTC しきい値内にオブジェクトがレプリケートされない場合にも通知を受け取ることができます。

次の `Replication` イベントタイプを使用すると、保留中のバイト数、保留中のオペレーション、およびレプリケーションのレイテンシーを追跡すると、レプリケーションイベントの進行状況を 1 分単位でモニタリングできます。S3 レプリケーションメトリクスの詳細については、「[S3 レプリケーションメトリクスの使用](repl-metrics.md)」を参照してください。
+ −`s3:Replication:OperationFailedReplication`イベントタイプは、レプリケーションのターゲットであったオブジェクトがレプリケートに失敗したときに通知を受け取ります。
+ `s3:Replication:OperationMissedThreshold` イベントタイプは、S3 RTC を使用するレプリケーションの対象であったオブジェクトがレプリケーションの 15 分の閾値を超えたときに通知します。
+ `s3:Replication:OperationReplicatedAfterThreshold` イベントタイプは、S3 RTC を使用するレプリケーションの対象であったオブジェクトが 15 分の閾値を超えてレプリケートされたときに通知します。
+ `s3:Replication:OperationNotTracked` イベントタイプは、ライブレプリケーションの対象であったオブジェクト (同一リージョンレプリケーション [SRR] またはクロスリージョンレプリケーション [CRR]) がレプリケーションメトリクスによって追跡されなくなったときに通知します。

サポートされているすべてのレプリケーションイベントタイプの詳細な説明については、「[SQS、SNS、および Lambda でサポートされているイベントタイプ](notification-how-to-event-types-and-destinations.md#supported-notification-event-types)」を参照してください。

S3 イベント通知によってキャプチャされた失敗コードのリストについては、「[Amazon S3 レプリケーションの失敗の理由](#replication-failure-codes)」を参照してください。

S3 イベント通知は、Amazon Simple Queue Service (Amazon SQS)、Amazon Simple Notification Service (Amazon SNS)、または AWS Lambda を使用して受信できます。詳細については、「[Amazon S3 イベント通知](EventNotifications.md)」を参照してください。

Amazon S3 イベント通知を設定する手順については、[Enabling event notifications](how-to-enable-disable-notification-intro.md) を参照してください。

**注記**  
イベント通知を有効にするだけでなく、S3 レプリケーションメトリクスも有効にしてください。詳細については、「[S3 レプリケーションメトリクスの有効化](repl-metrics.md#enabling-replication-metrics)」を参照してください。

次は Amazon S3 が `s3:Replication:OperationFailedReplication` イベントを発行するために送信するメッセージの例です。詳細については、「[イベントメッセージの構造](notification-content-structure.md)」を参照してください。

```
{
  "Records": [
    {
      "eventVersion": "2.2",
      "eventSource": "aws:s3",
      "awsRegion": "us-east-1",
      "eventTime": "2024-09-05T21:04:32.527Z",
      "eventName": "Replication:OperationFailedReplication",
      "userIdentity": {
        "principalId": "s3.amazonaws.com"
      },
      "requestParameters": {
        "sourceIPAddress": "s3.amazonaws.com"
      },
      "responseElements": {
        "x-amz-request-id": "123bf045-2b4b-4ca8-a211-c34a63c59426",
        "x-amz-id-2": "12VAWNDIHnwJsRhTccqQTeAPoXQmRt22KkewMV8G3XZihAuf9CLDdmkApgZzudaIe2KlLfDqGS0="
      },
      "s3": {
        "s3SchemaVersion": "1.0",
        "configurationId": "ReplicationEventName",
        "bucket": {
          "name": "amzn-s3-demo-bucket1",
          "ownerIdentity": {
            "principalId": "111122223333"
          },
          "arn": "arn:aws:s3:::amzn-s3-demo-bucket1"
        },
        "object": {
          "key": "replication-object-put-test.png",
          "size": 520080,
          "eTag": "e12345ca7e88a38428305d3ff7fcb99f",
          "versionId": "abcdeH0Xp66ep__QDjR76LK7Gc9X4wKO",
          "sequencer": "0066DA1CBF104C0D51"
        }
      },
      "replicationEventData": {
        "replicationRuleId": "notification-test-replication-rule",
        "destinationBucket": "arn:aws:s3:::amzn-s3-demo-bucket2",
        "s3Operation": "OBJECT_PUT",
        "requestTime": "2024-09-05T21:03:59.168Z",
        "failureReason": "AssumeRoleNotPermitted"
      }
    }
  ]
}
```

## Amazon S3 レプリケーションの失敗の理由
<a name="replication-failure-codes"></a>

次の表は、Amazon S3 レプリケーションが失敗した理由を示しています。Amazon S3 イベント通知で `s3:Replication:OperationFailedReplication` イベントを受信し、`failureReason` 値を見ると、これらの理由を確認できます。

失敗の理由は、S3 バッチレプリケーション完了レポートでも確認できます。詳細については、「[バッチレプリケーション完了レポート](s3-batch-replication-batch.md#batch-replication-completion-report)」を参照してください。


| レプリケーションの失敗の理由 | 説明 | 
| --- | --- | 
| `AssumeRoleNotPermitted` | Amazon S3 は、レプリケーション設定またはバッチオペレーションジョブで指定された AWS Identity and Access Management (IAM) ロールを引き受けることができません。 | 
| `DstBucketInvalidRegion` | 宛先バケットがバッチオペレーションジョブで指定されたのと同じ AWS リージョンにありません。このエラーはバッチレプリケーションに固有のものです。 | 
| `DstBucketNotFound` | Amazon S3 は、レプリケーション設定で指定されたレプリケート先バケットを見つけることができません。 | 
| `DstBucketObjectLockConfigMissing` | オブジェクトロックが有効になっているレプリケート元バケットからオブジェクトをレプリケートするには、レプリケート先バケットでもオブジェクトロックが有効になっている必要があります。このエラーは、レプリケート先バケットでオブジェクトロックが有効になっていない可能性があることを示しています。詳細については、「[オブジェクトロックの考慮事項](object-lock-managing.md)」を参照してください。 | 
| `DstBucketUnversioned` | S3 レプリケート先バケットでバージョニングが有効になっていません。S3 レプリケーションでオブジェクトをレプリケートするには、レプリケート先バケットのバージョニングを有効にします。 | 
| `DstDelObjNotPermitted` | Amazon S3 は、レプリケート先バケットに削除マーカーをレプリケートできません。レプリケート先バケットに対する `s3:ReplicateDelete` 権限がない可能性があります。 | 
| `DstKmsKeyInvalidState` | レプリケート先バケットの AWS Key Management Service (AWS KMS) キーが無効な状態です。必要な AWS KMS キーを確認して有効にします。AWS KMS キーの管理について詳しくは、*AWS Key Management Service デベロッパーガイド*の「[AWS KMS キーのキーステータス](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)」を参照してください。 | 
| `DstKmsKeyNotFound` | レプリケーション設定でレプリケート先バケットに設定されている AWS KMS キーは存在しません。 | 
| `DstMultipartCompleteNotPermitted` | Amazon S3 は、レプリケート先バケットでオブジェクトのマルチパートアップロードを完了できません。レプリケート先バケットに対する `s3:ReplicateObject` 権限がない可能性があります。 | 
| `DstMultipartInitNotPermitted` | Amazon S3 は、レプリケート先バケットへのオブジェクトのマルチパートアップロードを開始できません。レプリケート先バケットに対する `s3:ReplicateObject` 権限がない可能性があります。 | 
| `DstMultipartUploadNotPermitted` | Amazon S3 は、レプリケート先バケットにマルチパートアップロードオブジェクトをアップロードできません。レプリケート先バケットに対する `s3:ReplicateObject` 権限がない可能性があります。 | 
| `DstObjectHardDeleted` | S3 バッチレプリケーションでは、レプリケート先バケットからオブジェクトのバージョン ID で削除されたオブジェクトの再レプリケーションはサポートされません。このエラーはバッチレプリケーションに固有のものです。 | 
| `DstPutAclNotPermitted` | Amazon S3 は、レプリケート先バケットにオブジェクトアクセスコントロールリスト (ACL) をレプリケートできません。レプリケート先バケットに対する `s3:ReplicateObject` 権限がない可能性があります。 | 
| `DstPutLegalHoldNotPermitted` | イミュータブルなオブジェクトをレプリケートしている際は、Amazon S3 ではレプリケート先オブジェクトに Object Lock のリーガルホールドを設定できません。レプリケート先バケットに対する `s3:PutObjectLegalHold` 権限がない可能性があります。詳細については、「[リーガルホールド](object-lock.md#object-lock-legal-holds)」を参照してください。 | 
|  `DstPutObjectNotPermitted` | Amazon S3 は、レプリケート先バケットにオブジェクトをレプリケートできません。これは、レプリケート先バケットに必要なアクセス許可 (`s3:ReplicateObject` または `s3:ObjectOwnerOverrideToBucketOwner` アクセス許可) がない場合、または AWS KMS キーポリシーによってソースのレプリケーションロールが宛先バケットで AWS KMS キー (`kms:Decrypt` および `kms:GenerateDataKey*` アクション) を使用することが許可されていない場合に発生する可能性があります。 | 
|  `DstPutRetentionNotPermitted` | イミュータブルなオブジェクトをレプリケートしている際は、Amazon S3 では送信先オブジェクトに保持期間を設定することができません。レプリケート先バケットに対する `s3:PutObjectRetention` 権限がない可能性があります。 | 
| `DstPutTaggingNotPermitted` | Amazon S3 は、レプリケート先バケットにオブジェクトタグをレプリケートできません。レプリケート先バケットに対する `s3:ReplicateObject` 権限がない可能性があります。 | 
| `DstVersionNotFound ` | Amazon S3 は、メタデータをレプリケートする必要があるレプリケート先バケットで必要なオブジェクトバージョンを見つけることができません。 | 
| `InitiateReplicationNotPermitted` | Amazon S3 は、オブジェクトのレプリケーションを開始できません。バッチオペレーションジョブに対する `s3:InitiateReplication` 権限がない可能性があります。このエラーはバッチレプリケーションに固有のものです。 | 
| `SrcBucketInvalidRegion` | レプリケート元バケットがバッチオペレーションジョブで指定されたのと同じ AWS リージョンにありません。このエラーはバッチレプリケーションに固有のものです。 | 
| `SrcBucketNotFound` | Amazon S3 はレプリケート元バケットを見つけることができません。 | 
| `SrcBucketReplicationConfigMissing` | Amazon S3 はソースバケットのレプリケーション設定を見つけることができませんでした。 | 
| `SrcGetAclNotPermitted` |  Amazon S3 は、レプリケート元バケットにあるオブジェクトにアクセスしてレプリケートを行うことができません。レプリケート元バケットオブジェクトに対する `s3:GetObjectVersionAcl` 権限がない可能性があります。 ソースバケットのオブジェクトは、バケット所有者が所有している必要があります。ACL が有効になっている場合は、[オブジェクト所有権] が [希望するバケット所有者] または [オブジェクトライター] に設定されているかどうかを確認してください。オブジェクト所有権が [希望するバケット所有者] に設定されている場合、バケット所有者がオブジェクト所有者になるためには、ソースバケットオブジェクトに `bucket-owner-full-control` ACL が必要です。ソースアカウントは、オブジェクト所有権を [バケット所有者の強制] に設定して、ACL を無効にすることで、バケット内のすべてのオブジェクトの所有権を取得できます。  | 
| `SrcGetLegalHoldNotPermitted` | Amazon S3 は S3 オブジェクトロックのリーガルホールド情報にアクセスできません。 | 
| `SrcGetObjectNotPermitted` | Amazon S3 は、レプリケート元バケットにあるオブジェクトにアクセスしてレプリケートを行うことができません。レプリケート元バケットに対する `s3:GetObjectVersionForReplication` 権限がない可能性があります。 | 
| `SrcGetRetentionNotPermitted` | Amazon S3 は S3 オブジェクトロックの保持期間情報にアクセスできません。 | 
| `SrcGetTaggingNotPermitted` | Amazon S3 はレプリケート元バケットのオブジェクトタグ情報にアクセスできません。レプリケート元バケットに対する `s3:GetObjectVersionTagging` 権限がない可能性があります。 | 
| `SrcHeadObjectNotPermitted` | Amazon S3 はレプリケート元バケットからオブジェクトメタデータを取得できません。レプリケート元バケットに対する `s3:GetObjectVersionForReplication` 権限がない可能性があります。 | 
| `SrcKeyNotFound` | Amazon S3 は、レプリケートするソースオブジェクトキーを見つけることができません。ソースオブジェクトはレプリケーションが完了する前に削除された可能性があります。 | 
| `SrcKmsKeyInvalidState` | レプリケート元バケットの AWS KMS キーは有効な状態ではありません。必要な AWS KMS キーを確認して有効にします。AWS KMS キーの管理について詳しくは、*AWS Key Management Service デベロッパーガイド*の「[AWS KMS キーのキーステータス](https://docs.aws.amazon.com/kms/latest/developerguide/key-state.html)」を参照してください。 | 
| `SrcObjectNotEligible` | 一部のオブジェクトはレプリケーションの対象外です。これは、オブジェクトのストレージクラスが原因であるか、オブジェクトタグがレプリケーション構成と一致しないことが原因である可能性があります。 | 
| `SrcObjectNotFound` | ソースオブジェクトが存在しません。 | 
| `SrcReplicationNotPending` | Amazon S3 はすでにこのオブジェクトをレプリケートしています。このオブジェクトはもう保留中レプリケーションではなくなっています。 | 
| `SrcVersionNotFound` | Amazon S3 は、レプリケートするソースオブジェクトバージョンを見つけることができません。ソースオブジェクトバージョンはレプリケーションが完了する前に削除された可能性があります。 | 

### 関連トピック
<a name="replication-metrics-related-topics"></a>

[ライブレプリケーションのアクセス許可の設定](setting-repl-config-perm-overview.md)

[レプリケーションのトラブルシューティング](replication-troubleshoot.md)

# レプリケーションステータス情報の取得
<a name="replication-status"></a>

レプリケーションステータスは、レプリケートされるオブジェクトの現在の状態を判断するのに役立ちます。レプリケート元オブジェクトのレプリケーションステータスは、 `PENDING`、`COMPLETED`または`FAILED`のいずれかを返します。レプリカのレプリケーションステータスが`REPLICA`に返されます。

S3 バッチレプリケーションジョブを作成するときにも、レプリケーションステータス値を使用することもできます。例えば、これらのステータス値を使用して、レプリケートされたことがない、またはレプリケーションに失敗したオブジェクトをレプリケートできます。バッチレプリケーションでこれらの値を使用する方法の詳細については、「[バッチレプリケーションジョブでのレプリケーションステータス情報の使用](#replication-status-batch-replication)」を参照してください。

**Topics**
+ [

## レプリケーションステータスの概要
](#replication-status-overview)
+ [

## 複数のレプリケート先バケットにレプリケートする場合のレプリケーションステータス
](#replication-status-multiple-destinations)
+ [

## Amazon S3 レプリカ変更の同期が有効になっている場合のレプリケーションステータス
](#replication-status-replica-mod-syn)
+ [

## バッチレプリケーションジョブでのレプリケーションステータス情報の使用
](#replication-status-batch-replication)
+ [

## レプリケーションステータスの検索
](#replication-status-usage)

## レプリケーションステータスの概要
<a name="replication-status-overview"></a>

レプリケーションには、レプリケーションを設定するレプリケート元バケットと、Amazon S3 がオブジェクトをレプリケートする 1 つ以上のレプリケート先バケットがあります。これらのバケットからオブジェクト (`GetObject` を使用) またはオブジェクトメタデータ (`HeadObject` を使用) をリクエストすると、Amazon S3 はレスポンスとして `x-amz-replication-status` ヘッダーを返します。
+ レプリケート元バケットのオブジェクトをリクエストする場合、リクエストしたオブジェクトがレプリケーション対象であると、Amazon S3 は `x-amz-replication-status` ヘッダーを返します。

  たとえば、レプリケーション設定でオブジェクトプレフィックス `TaxDocs` を指定して、キー名のプレフィックス `TaxDocs` が付いたオブジェクトのみをレプリケートするように Amazon S3 に指示しているとします。このキー名のプレフィックスを持つ、アップロードしたすべてのオブジェクト (`TaxDocs/document1.pdf` など) がレプリケートされます。このキー名のプレフィックスが付いたオブジェクトのリクエストでは、Amazon S3 が、オブジェクトのレプリケーション状態が `x-amz-replication-status`、`PENDING`、または `COMPLETED` の値のいずれかの `FAILED` ヘッダーを返します。
**注記**  
オブジェクトをアップロードした後で、オブジェクトのレプリケーションに失敗した場合、レプリケーションを再試行できません。オブジェクトを再度アップロードするか、S3 バッチレプリケーションを使用して失敗したオブジェクトをレプリケートする必要があります。バッチレプリケーションの使用の詳細については、「[バッチレプリケーションを使用した既存のオブジェクトのレプリケーション](s3-batch-replication-batch.md)」を参照してください。  
レプリケーションロールの許可、AWS Key Management Service (AWS KMS) 許可、またはバケットの許可がないなどの問題がある場合、オブジェクトは `FAILED` ステータスに移行します。バケットやリージョンが使用できないなどの一時的な障害が発生した場合、レプリケーションのステータスは `FAILED` にはならず、`PENDING` のままになります。リソースがオンラインに戻ると、Amazon S3 はこれらのオブジェクトのレプリケーションを再開します。
+ レプリケート先バケットからオブジェクトをリクエストした場合、リクエストされたオブジェクトが Amazon S3 によって作成されたレプリカであるときに、Amazon S3 は値が`x-amz-replication-status`である`REPLICA`ヘッダーを返します。

**注記**  
レプリケーションが有効になっているレプリケート元バケットからオブジェクトを削除する前に、削除する前にオブジェクトのレプリケーションステータスをチェックして、そのオブジェクトがレプリケートされていることを確認します。  
レプリケート元バケットで S3 ライフサイクル設定が有効である場合、Amazon S3 は、オブジェクトのステータスが `COMPLETED` または `FAILED` になるまでライフサイクルアクションを停止します。

## 複数のレプリケート先バケットにレプリケートする場合のレプリケーションステータス
<a name="replication-status-multiple-destinations"></a>

オブジェクトを複数のレプリケート先バケットにレプリケートした場合、`x-amz-replication-status`ヘッダーの動作はそれぞれ異なります。レプリケート元オブジェクトのヘッダーは、すべてのレプリケート先へのレプリケーションが成功した場合のみ、`COMPLETED` の値を返します。すべてのレプリケート先に対してレプリケーションが完了するまで、ヘッダーは`PENDING`の値のままになります。1 つ以上のレプリケート先がレプリケーションに失敗すると、ヘッダーは`FAILED`を返します。

## Amazon S3 レプリカ変更の同期が有効になっている場合のレプリケーションステータス
<a name="replication-status-replica-mod-syn"></a>

レプリケーションルールが Amazon S3 レプリカの変更を有効にすると、レプリカは `REPLICA` 以外のステータスをレポートできます。メタデータの変更がレプリケート中の場合は、`x-amz-replication-status` ヘッダーは `PENDING` を返します。レプリカ変更の同期がメタデータのレプリケートに失敗した場合、ヘッダーは `FAILED` を返します。メタデータが正しくレプリケートされると、レプリカはヘッダー `REPLICA` を返します。

## バッチレプリケーションジョブでのレプリケーションステータス情報の使用
<a name="replication-status-batch-replication"></a>

バッチレプリケーションジョブを作成するときに、オプションで、オブジェクトの作成日やレプリケーションステータスなどの追加のフィルターを指定して、ジョブのスコープを縮小できます。

オブジェクトのレプリケーションは、`ObjectReplicationStatuses` 値を基に、以下の値を 1 つ以上指定することでフィルターできます。
+ `"NONE"` - Simple Storage Service (Amazon S3) がこれまでオブジェクトのレプリケートを試みたことがないことを示します。
+ `"FAILED"` - Amazon S3 が以前にオブジェクトのレプリケートを試みたがオブジェクトのレプリケーションに失敗したことを示します。
+ `"COMPLETED"` - Simple Storage Service (Amazon S3) が以前にオブジェクトを正常にレプリケートしたことを示します。
+ `"REPLICA"` - Amazon S3 が別のソースからレプリケートしたレプリカオブジェクトであることを示します。

バッチレプリケーションでこれらのレプリケーションステータス値を使用する方法の詳細については、「[バッチレプリケーションジョブのフィルター](s3-batch-replication-batch.md#batch-replication-filters)」を参照してください。

## レプリケーションステータスの検索
<a name="replication-status-usage"></a>

バケット内のオブジェクトのレプリケーションステータスを取得するには、Amazon S3 インベントリツールを使用できます。Amazon S3 は、インベントリ設定で指定したレプリケート先バケットに CSV ファイルを送信します。Amazon Athena を使用して、インベントリレポートのレプリケーションステータスをクエリすることもできます。Amazon S3 インベントリのさらなる詳細については、[S3 インベントリを使用したデータのカタログ化と分析](storage-inventory.md) を参照してください。

オブジェクトのレプリケーションステータスは、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK で確認できます。

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

S3 コンソールでは、オブジェクトの詳細ページで、オブジェクトのレプリケーションステータスを確認できます。

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

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

1. **[汎用バケット]** リストで、レプリケーションソースバケットの名前を選択します。

1. [**オブジェクト**] リストで、オブジェクト名を選択します。オブジェクトの詳細ページが表示されます。

1. **[プロパティ]** タブで、**[オブジェクト管理の概要]** セクションまでスクロールします。**[管理設定]** で、**[レプリケーションステータス]** の [値] を確認します。

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

次の例に示すように、AWS Command Line Interface (AWS CLI) `head-object` コマンドを使用して、オブジェクトのメタデータを取得します。`amzn-s3-demo-source-bucket1` をレプリケーションソースバケットの名前に置き換え、その他の `user input placeholders` を独自の情報に置き換えます。

```
aws s3api head-object --bucket amzn-s3-demo-source-bucket1 --key object-key --version-id object-version-id           
```

このコマンドは、以下のレスポンス例に示すように、`ReplicationStatus` を含むオブジェクトメタデータを返します。

```
{
   "AcceptRanges":"bytes",
   "ContentType":"image/jpeg",
   "LastModified":"Mon, 23 Mar 2015 21:02:29 GMT",
   "ContentLength":3191,
   "ReplicationStatus":"COMPLETED",
   "VersionId":"jfnW.HIMOfYiD_9rGbSkmroXsFj3fqZ.",
   "ETag":"\"6805f2cfc46c0f04559748bb039d69ae\"",
   "Metadata":{

   }
}
```

### AWS SDK の使用
<a name="replication-status-sdk"></a>

次のコードフラグメントは、それぞれ AWS SDK for Java および AWS SDK for .NET を使用してレプリケーションステータスを取得します。

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

```
GetObjectMetadataRequest metadataRequest = new GetObjectMetadataRequest(bucketName, key);
ObjectMetadata metadata = s3Client.getObjectMetadata(metadataRequest);

System.out.println("Replication Status : " + metadata.getRawMetadataValue(Headers.OBJECT_REPLICATION_STATUS));
```

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

```
GetObjectMetadataRequest getmetadataRequest = new GetObjectMetadataRequest
    {
         BucketName = sourceBucket,
         Key        = objectKey
    };

GetObjectMetadataResponse getmetadataResponse = client.GetObjectMetadata(getmetadataRequest);
Console.WriteLine("Object replication status: {0}", getmetadataResponse.ReplicationStatus);
```

------