オブジェクトのレプリケーション - Amazon Simple Storage Service

オブジェクトのレプリケーション

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

新しいオブジェクトをバケットに書き込むときに自動的にレプリケートするには、クロスリージョンレプリケーション (CRR) などのライブレプリケーションを使用します。オンデマンドで既存のオブジェクトを別のバケットにレプリケートするには、S3 バッチレプリケーションを使用します。既存のオブジェクトのレプリケーションの詳細については、「S3 バッチレプリケーションを使用する状況」を参照してください。

CRR を有効にするには、レプリケーション設定をレプリケート元バケットに追加します。最小設定では、以下を指定する必要があります。

  • Amazon S3 がオブジェクトをレプリケートする送信先バケット

  • Amazon S3 がユーザーのためにオブジェクトをレプリケートできる AWS Identity and Access Management (IAM) ロール

追加の設定オプションが利用可能です。詳細については、「追加のレプリケーション設定」を参照してください。

レプリケーションルール数メトリクスを含む S3 レプリケーションの詳細なメトリクスを取得するには、Amazon S3 ストレージレンズを使用できます。S3 ストレージレンズは、オブジェクトストレージの使用状況とアクティビティを組織全体で可視化するために使用できるクラウドストレージの分析機能です。詳細については、「Using S3 Storage Lens to protect your data」(S3 ストレージレンズを使用してデータを保護する) を参照してください。メトリクスの完全なリストについては、「S3 Storage Lens のメトリクスに関する用語集」を参照してください。

レプリケーションを使用する理由

レプリケーションは、以下の場合に役立ちます。

  • メタデータを保持しながらオブジェクトをレプリケートする — レプリケーションを使用すると、元のオブジェクトの作成時刻やバージョン 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) を使用してコンプライアンス要件を満たす」を参照してください。

  • バケットの同期、既存オブジェクトのレプリケート、以前に失敗したオブジェクトまたはレプリケートされたオブジェクトのレプリケート - バケットを同期して既存のオブジェクトをレプリケートするには、オンデマンドレプリケーションアクションとしてバッチレプリケーションを使用します。バッチレプリケーション使用時の詳細については、「S3 バッチレプリケーションを使用する状況」を参照してください。

  • オブジェクトをレプリケートし、別のAWS リージョン のバケットにフェイルオーバーする - データレプリケーション中にバケット間ですべてのメタデータとオブジェクトを同期させるために、Amazon S3 マルチリージョンアクセスポイントのフェイルオーバーコントロールを構成する前に双方向レプリケーションルールを使用します。双方向のレプリケーションルールにより、トラフィックがフェイルオーバーする S3 バケットにデータが書き込まれると、そのデータがソースバケットにレプリケートされます。

注記

S3 RTC はバッチレプリケーションには適用されません。バッチレプリケーションはオンデマンドレプリケーションジョブで、S3 バッチオペレーションで追跡できます。詳細については、「ジョブステータスと完了レポートの追跡」を参照してください。

クロスリージョンレプリケーションを使用する場合

異なる AWS リージョン 内の Amazon S3 バケット間でオブジェクトをコピーするには、S3 クロスリージョンレプリケーション (CRR) を使用します。CRR は、次の場合に役立ちます。

  • コンプライアンス要件を満たす — Simple Storage Service (Amazon S3) はデフォルトで地理的に離れた複数のアベイラビリティーゾーンにデータを保存しますが、コンプライアンス要件によっては、さらに離れた場所にデータを保存することが要求される場合があります。これらの要件を満たすには、遠く離れた AWS リージョン にデータをレプリケートするクロスリージョンレプリケーションを使用します。

  • レイテンシーを最小にする — ユーザーが地理的に離れた 2 つの場所にいる場合、ユーザーにより近い AWS リージョン にオブジェクトのコピーを保持することで、オブジェクトにアクセスする際のレイテンシーを最小にすることができます。

  • オペレーション効率を向上する — コンピューティングクラスターが 2 つの異なる AWS リージョン にあり、同じオブジェクトセットを分析している場合、これら 2 つのリージョンにオブジェクトのコピーを保持できます。

同一リージョンレプリケーションを使用する時

同一 AWS リージョン 内の Amazon S3 バケット間でオブジェクトをコピーするには、同一リージョンレプリケーション (SRR) を使用します。SRR は、次の場合に役立ちます。

  • ログを 1 つのバケットに集約する — 複数のバケットまたは複数のアカウントにログを保存している場合、ログを 1 つのリージョン内バケットに簡単にレプリケートできます。そうすることで、ログを一箇所でよりシンプルに処理できます。

  • 本番稼働用アカウントとテストアカウント間のライブレプリケーションを設定する — お客様またはお客様のユーザーが保持する本稼働用アカウントとテストアカウントで同じデータを使用する場合、オブジェクトメタデータを維持しながら、これらの複数のアカウント間でオブジェクトをレプリケートできます。

  • データ主権法に準拠する — データの複数のコピーを特定のリージョン内の複数の異なる AWS アカウントに保存することを義務付けられる場合があります。同一リージョンレプリケーションを使用すると、コンプライアンス規制によりデータを国外に持ち出すことが許可されていない場合に、重要なデータを自動的にレプリケートできます。

双方向レプリケーションを使用する場合

  • 複数の AWS リージョン で共有するデータセットを構築する — レプリカ変更の同期により、オブジェクトのアクセスコントロールリスト (ACL)、オブジェクトタグ、またはオブジェクトロックなどのメタデータの変更を、レプリケーションオブジェクトで簡単に複製することができます。この双方向のレプリケーションは、すべてのオブジェクトとオブジェクトメタデータの変更を同期させたい場合に重要です。同一または異なる AWS リージョン にある 2 つ以上のバケット間で双方向レプリケーションを実行する場合、新規または既存のレプリケーションルールでレプリカ変更の同期を有効にすることができます。

  • フェイルオーバー中にデータをリージョン間で同期させる — マルチリージョンアクセスポイントから直接 S3 クロスリージョンレプリケーション (CRR) で双方向レプリケーションルールを設定することで、AWS リージョン 間のバケットのデータを同期させることができます。フェイルオーバーを開始するタイミングについて十分な情報に基づいた決定を行うために、S3 レプリケーションメトリクスを有効にして Amazon CloudWatch、S3 Replication Time Control (S3 RTC)、またはマルチリージョンアクセスポイントからのレプリケーションをモニタリングすることもできます。

  • アプリケーションの可用性を高める — リージョンのトラフィックが中断した場合でも、双方向のレプリケーションルールを使用して、データレプリケーション中にすべてのメタデータとオブジェクトをバケット間で同期させることができます。

S3 バッチレプリケーションを使用する状況

バッチレプリケーションは、オンデマンドオプションとして、既存のオブジェクトを異なるバケットにレプリケートします。ライブレプリケーションとは異なり、これらのジョブは必要に応じて実行できます。バッチレプリケーションは、以下の場合に役立ちます。

  • 既存のオブジェクトのレプリケーション — バッチレプリケーションを使用して、同じリージョンレプリケーションまたはクロスリージョンレプリケーションが設定される前に、バケットに追加されたオブジェクトをレプリケートできます。

  • 以前にレプリケートに失敗したオブジェクトをレプリケートする - バッチレプリケーションジョブをフィルタリングして、レプリケーションステータスが [FAILED] (失敗) のオブジェクトをレプリケートできます。

  • すでにレプリケートされたオブジェクトをレプリケートする — データの複数のコピーを別々の AWS アカウントまたは AWS リージョンに保存することを義務付けられる場合があります。バッチレプリケーションでは、新規に追加された宛先に既存のオブジェクトをレプリケートできます。

  • レプリケーションルールから作成されたオブジェクトのレプリカをレプリケートする — レプリケーション設定では、レプリケート先バケットにオブジェクトのレプリカが作成されます。オブジェクトのレプリカは、バッチレプリケーションでのみレプリケートできます。

レプリケーションの要件

レプリケーションには以下が必要です。

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

    AWS リージョン の有効化と無効化の詳細については、AWS 全般のリファレンス の「AWS リージョン の管理」を参照してください。

  • レプリケート元とレプリケート先の両方のバケットで、バージョニングを有効にする必要があります。バージョニングの詳細については、「S3 バケットでのバージョニングの使用」を参照してください。

  • Amazon S3 には、お客様に代わってレプリケート元バケットから送信先バケットにオブジェクトをレプリケートするためのアクセス許可が必要です。これらのアクセス許可の詳細については、「許可のセットアップ」を参照してください。

  • ソースバケット所有者がバケット内のオブジェクトを所有していない場合、オブジェクト所有者は、オブジェクトアクセスコントロールリスト (ACL) を使用して、バケット所有者に READ 権限と READ_ACP 権限を付与する必要があります。詳細については、「アクセスコントロールリスト (ACL) の概要」を参照してください。

  • レプリケート元バケットで S3 オブジェクトロックが有効になっている場合は、レプリケート先バケットでも S3 オブジェクトロックが有効になっている必要があります。

    Object Lock が有効になっているバケットでレプリケーションを有効にするには、AWS Command Line Interface、REST API、または AWS SDK を使用する必要があります。一般的な的な情報については、「S3 オブジェクトロックの使用」を参照してください

    注記

    レプリケーションを設定するために使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの新しいアクセス許可を付与する必要があります。2 つの新しいアクセス許可は s3:GetObjectRetentions3:GetObjectLegalHold です。ロールに s3:Get* アクセス許可がある場合、そのロールは要件を満たしています。詳細については、「許可のセットアップ」を参照してください。

詳細については、「レプリケーションの設定」を参照してください。

異なる AWS アカウント がレプリケート元バケットとレプリケート先バケットを所有するクロスアカウントのシナリオでレプリケーション設定を設定している場合は、次の追加の要件が適用されます。