

# ライブレプリケーションの設定例
<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)」を参照してください。