S3 バッチレプリケーションは、Amazon S3 バケット間で新しいオブジェクトを継続的かつ自動的にレプリケートするライブレプリケーションとは異なります。代わりに、S3 バッチレプリケーションは既存のオブジェクトでオンデマンドで実行されます。S3 バッチレプリケーションを使用して、次のタイプのオブジェクトをレプリケートできます。
-
レプリケーション設定が実行される前に存在していたオブジェクト
-
以前にレプリケートされたオブジェクト
-
レプリケーションに失敗したオブジェクト
バッチオペレーションジョブを使用して、これらのオブジェクトをオンデマンドでレプリケートできます。
バッチレプリケーションを開始するには、次の操作を行います。
-
新しいレプリケーションルールまたはレプリケート先のバッチレプリケーションを開始する — 1 回限りのバッチレプリケーションジョブは、新しいレプリケーション設定で最初のルールを作成する場合や、Amazon S3 を介して既存の設定に新しいレプリケート先バケットを追加する場合に作成できます。
-
既存のレプリケーション設定のバッチレプリケーションを開始する — S3 バッチオペレーションを使用して、Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を介し、新しいバッチレプリケーションジョブを作成できます。
バッチレプリケーションジョブが終了すると、完了レポートが表示されます。このレポートを使用してジョブを検査する方法の詳細については、「ジョブステータスと完了レポートの追跡」を参照してください。
S3 バッチレプリケーションに関する考慮事項
S3 バッチレプリケーションを使用する前に、次の考慮事項のリストを確認してください。
-
レプリケート元バケットには既存のレプリケーション設定が必要です。レプリケーションを有効にするには、「ライブレプリケーションの設定の概要」と「ライブレプリケーションの設定例」を参照してください。
-
バケットで S3 ライフサイクルが設定されている場合は、バッチレプリケーションジョブがアクティブな際には、ライフサイクルルールを無効にすることをお勧めします。これは、レプリケート元バケットとレプリケート先バケットの間で等価性を確保するのに役立ちます。これを行わない場合、これらのバケットが分岐し、レプリケート先バケットがレプリケート元バケットの完全なレプリカではなくなる可能性があります。たとえば、次のシナリオを考えてみます。
-
レプリケート元バケットには、オブジェクトとそのオブジェクトの削除マーカーの複数のバージョンがあります。
-
レプリケート元とレプリケート先のバケットには、期限切れの削除マーカーを削除するライフサイクル設定が設定されています。
このシナリオでは、バッチレプリケーションにより、オブジェクトのバージョンがレプリケートされる前に、レプリケート先バケットに削除マーカーがレプリケートされることがあります。その場合、オブジェクトのバージョンがレプリケートされる前に、ライフサイクル設定で削除マーカーの有効期限が切れ、削除マーカーがレプリケート先バケットから削除される可能性があります。
-
-
バッチオペレーションジョブを実行するために指定する AWS Identity and Access Management IAM ロールには、基になるバッチレプリケーションを実行する権限が必要です。IAM ロールの作成の詳細については、「S3 バッチレプリケーション用の IAM ロールの設定」を参照してください。
-
バッチレプリケーションには、Amazon S3 で生成できるマニフェストが必要です。生成されたマニフェストは、レプリケーション元バケットと同じ AWS リージョンに保存されている必要があります。マニフェストを生成しない場合は、レプリケートするオブジェクトを含む Amazon S3 インベントリレポートまたは CSV ファイルを指定できます。詳細については、「バッチレプリケーションジョブのマニフェストの指定」を参照してください。
-
バッチレプリケーションでは、レプリケート先バケットからオブジェクトのバージョン ID を指定することで削除されたオブジェクトの再レプリケーションはサポートされません。これらのオブジェクトを再レプリケートするには、バッチコピージョブを使用してソースオブジェクトを所定の場所でコピーします。これらのオブジェクトを所定の場所でコピーすると、レプリケート元バケットにオブジェクトの新しいバージョンが作成され、レプリケート先バケットへのレプリケーションが自動的に開始されます。レプリケート先バケットを削除して再作成しても、レプリケーションは開始されません。
バッチコピーの詳細については、「バッチ操作を使用してオブジェクトをコピーする例」を参照してください。
-
レプリケート元バケットでレプリケーションルールを使用している場合は、レプリケーション設定を更新して、レプリケーションルールにアタッチされている IAM ロールに、オブジェクトをレプリケートするための適切な権限を付与してください。この IAM ロールには、ソースバケットとレプリケート先バケットの両方でレプリケーションを実行する権限が必要です。
-
短期間に同じバケットに対して複数のバッチレプリケーションジョブを送信すると、Amazon S3 はそれらのジョブを同時に実行します。
-
2 つの異なるバケットに対して複数の Batch レプリケーションジョブを送信する場合、Amazon S3 がすべてのジョブを同時に実行するわけではないことに注意してください。アカウントで一度に実行できるバッチレプリケーションジョブの数を超えると、Amazon S3 は優先度の低いジョブを一時停止して優先度の高いジョブを処理します。優先度の高いジョブが完了すると、一時停止していたジョブは再びアクティブになります。
-
バッチオペレーションは、S3 Glacier Flexible Retrieval ストレージクラスと S3 Glacier Deep Archive ストレージクラスに保存されたオブジェクトに対してはサポートされていません。
-
アーカイブアクセスまたはディープアーカイブアクセスのストレージ階層に保存されている S3 Intelligent-Tiering オブジェクトのバッチレプリケーションを行うには、まず復元リクエストを開始し、オブジェクトが高頻度アクセス階層に移動されるまで待つ必要があります。
バッチレプリケーションジョブのマニフェストの指定
マニフェストは、Amazon S3 が動作するオブジェクトキーを含む Amazon S3 オブジェクトです。バッチレプリケーションジョブを作成する場合は、ユーザー生成のマニフェストを指定するか、レプリケーション設定に基づいて Amazon S3 でマニフェストを生成させる必要があります。
ユーザーが作成したマニフェストを提供する場合は、Amazon S3 インベントリレポートまたは CSV ファイルの形式である必要があります。マニフェスト内のオブジェクトがバージョニング対応のバケット内にある場合は、そのオブジェクトのバージョン ID を指定する必要があります。マニフェストで指定されたバージョン ID を持つオブジェクトのみがレプリケートされます。マニフェストの指定の詳細については、「マニフェストの指定」を参照してください。
Amazon S3 がユーザーに代わってマニフェストファイルを生成するように選択した場合、リストされるオブジェクトでは、レプリケート元バケットのレプリケーション設定と同じレプリケート元バケット、プレフィックス、タグを使用します。生成されたマニフェストでは、Amazon S3 はオブジェクトの適格なバージョンをすべてレプリケートします。
注記
Amazon S3 によるマニフェストの生成を選択する場合は、マニフェストがレプリケーション元バケットと同じ AWS リージョンに保存されている必要があります。
バッチレプリケーションジョブのフィルター
バッチレプリケーションジョブを作成するときに、オプションで、オブジェクトの作成日やレプリケーションステータスなどの追加のフィルターを指定して、ジョブのスコープを縮小できます。
オブジェクトのレプリケーションは、ObjectReplicationStatuses
値を基に、以下の値を 1 つ以上指定することでフィルターできます。
-
"NONE"
- Simple Storage Service (Amazon S3) がこれまでオブジェクトのレプリケートを試みたことがないことを示します。 -
"FAILED"
- Amazon S3 が以前にオブジェクトのレプリケートを試みたがオブジェクトのレプリケーションに失敗したことを示します。 -
"COMPLETED"
- Simple Storage Service (Amazon S3) が以前にオブジェクトを正常にレプリケートしたことを示します。 -
"REPLICA"
- このオブジェクトが Amazon S3 が別のレプリケート元バケットからレプリケートしたレプリカであることを示します。
レプリケーションステータスの詳細については、「レプリケーションステータス情報の取得」を参照してください。
バッチレプリケーションジョブをフィルターしない場合、バッチオペレーションは、デフォルトでレプリケートされない特定のオブジェクトを除き、レプリケーション設定のルールに一致するマニフェスト内のすべてのオブジェクト (ObjectReplicationStatus
に関係なく) のレプリケーションを試みます。詳細については、「レプリケーション設定でレプリケートされないものは何ですか?」を参照してください。
目標によっては、以下の 1 つまたは複数の値に ObjectReplicationStatuses
を設定する場合があります。
-
レプリケートされたことがない既存のオブジェクトのみをレプリケートするには、
"NONE"
のみを含めます。 -
以前にレプリケートに失敗したオブジェクトのレプリケートのみを再試行するには、
"FAILED"
のみを含めます。 -
既存のオブジェクトをレプリケートし、以前にレプリケートに失敗したオブジェクトのレプリケーションを再試行するには、
"NONE"
と"FAILED"
の両方を含めます。 -
別のレプリケート先にレプリケートされたオブジェクトをレプリケート先バケットにバックフィルするには、
"COMPLETED"
を含めます。 -
以前にレプリケートオブジェクトをレプリケートするには、
"REPLICA"
を含めます。
バッチレプリケーション完了レポート
バッチレプリケーションジョブを作成するときに、CSV 完了レポートをリクエストできます。このレポートには、オブジェクト、レプリケーションの成功コードまたは失敗コード、出力、および説明が表示されます。ジョブの追跡と完了レポートの追跡については、「完了レポート」を参照してください。
レプリケーション失敗コードのリストと説明については、「Amazon S3 レプリケーションの失敗の理由」を参照してください。
バッチレプリケーションのトラブルシューティングについては、「バッチレプリケーションエラー」を参照してください。
バッチレプリケーションの使用開始
バッチレプリケーションの使用方法の詳細については、「チュートリアル: S3 バッチレプリケーションによる Amazon S3 バケット内の既存のオブジェクトのレプリケーション