Amazon S3 バッチレプリケーションを利用して、Amazon S3 バケット内の既存のオブジェクトをレプリケートする

チュートリアル

概要

このチュートリアルでは、Amazon Simple Storage Service (Amazon S3) バッチレプリケーション を利用して、同じ AWS リージョン内または異なる AWS リージョン間で、バケットに既に存在するオブジェクトをレプリケートする方法を説明します。

Amazon S3 レプリケーションは、Amazon S3 バケット間でオブジェクトをレプリケートする、伸縮性のあるフルマネージドの低コスト機能です。新規および既存のデータを 1 つのソースバケットから、同じまたは異なる AWS リージョン内の複数の送信先バケットにレプリケートできます。データ保護のためにデータのセカンダリコピーを維持する場合でも、ユーザーに発生するレイテンシーを最小限に抑えるためにデータを複数の地域に配置しておく場合でも、S3 レプリケーションはビジネスニーズを満たすために必要なコントロールを提供します。

Amazon S3 バッチレプリケーションを利用すると、新しく作成したバケットに既存のオブジェクトをバックフィルしたり、既にレプリケートされたオブジェクトや、以前はレプリケートできなかったオブジェクトを再レプリケートしたりできるほか、アカウント間でのデータの移行や、データレイクへの新しいバケットの追加を行うこともできます。S3 バッチレプリケーションジョブは、既存のレプリケーションの設定に基づいて作成され、バケットで有効になっているすべてのレプリケーションルールについて実行されます。S3 レプリケーションの詳細については、「Amazon S3 ユーザーガイド」の「オブジェクトのレプリケーション」セクションを参照してください。S3 レプリケーションの設定に関するステップバイステップのチュートリアルについては、「Replicate Data within and between AWS Regions Using Amazon S3 Replication」を参照してください。このチュートリアルを完了すると、Amazon S3 レプリケーションを利用して AWS リージョン内およびリージョン間で既存のデータをレプリケートできるようになります。

実行するアクション

このチュートリアルでは、次を行います。

  • Amazon S3 バケットで S3 レプリケーションを設定する
    • 2 つの S3 バケットを作成する
    • S3 バケットで S3 レプリケーションルールを作成する
    • 送信先 S3 バケットを選択する
    • レプリケーション用の IAM ロールを選択または作成する
    • 暗号化タイプを指定する (オプション)
    • 送信先 S3 ストレージクラスを選択する
    • 追加のレプリケーションオプションを有効にする (オプション)
  •  次の方法で、Amazon S3 バケット内の既存のオブジェクトについて、S3 バッチレプリケーションを設定します。
    • バケットで新しいレプリケーションの設定を作成するとき、または既存のレプリケーションの設定に新しい送信先を追加するときに、S3 バッチレプリケーションジョブを作成する
    • S3 バッチオペレーションのホームページから S3 バッチレプリケーションジョブを作成する (推奨)
    • 既存のレプリケーションの設定ページから S3 バッチレプリケーションジョブを作成する

前提条件

このチュートリアルを開始する前に、以下のものが必要です。

  • AWS アカウント: アカウントをまだお持ちでない場合は、「AWS 環境のセットアップ」チュートリアルに従うことで、概要を短時間で確認できます。

 AWS の利用経験

初心者

 所要時間

20 分

 完了までにかかるコスト

1 USD 未満
詳細については、Amazon S3 の料金ページをご覧ください。

 必要なもの

AWS アカウント

 利用するサービス

 最終更新日

2023 年 6 月 30 日

実装

ステップ 1: 2 つの Amazon S3 バケットを作成する

1.1 アカウント情報を使用して、AWS マネジメントコンソールにログインします。検索バーで S3 と入力し、結果から [S3] を選択します。

1.2 S3 コンソールの左側のナビゲーションペインで、[バケット] を選択し、次に [バケットを作成] を選択します。

1.3 ソースバケット用に、グローバルに一意で、かつ、わかりやすい名前を入力します。バケットを作成する [AWS リージョン] を選択します。この例では、[欧州 (フランクフルト) eu-central-1 リージョン] が選択されています。

1.4 [バケットのバージョニング] を有効にします。S3 レプリケーションのために、ソース S3 バケットと送信先 S3 バケットの両方でバケットのバージョニングが必要です。バージョニングの詳細については、「S3 バケットでのバージョニングの使用」を参照してください。

1.5 残りのオプションはデフォルトのままにすることができます。ページの下部に移動して、
[バケットを作成] を選択します。

1.6 前述のステップを繰り返して、送信先バケットとして機能する別の S3 バケットを作成します。この新しいバケットは、S3 同一リージョンレプリケーション (S3 SRR) のためにソースバケットと同じ AWS リージョンに存在することも、S3 クロスリージョンレプリケーション (S3 CRR) のために別の AWS リージョンに存在することもできます。送信先 S3 バケット用にバケットのバージョニングを有効にし、新しいバケットに一意の名前を付けてください。

ステップ 2: S3 バケットで S3 レプリケーションの設定を作成する

2.1 S3 バケットのリストから、ソース S3 バケットを選択します。コンソールから、S3 バケットのランディングページに移動します。

2.2 S3 バケットのランディングページでは、選択した S3 バケットの [オブジェクト][プロパティ][許可][メトリクス][管理][アクセスポイント] を確認できます。

[管理] タブの [レプリケーションルール] で、[レプリケーションルールを作成] を選択します。

2.3 [レプリケーションルール名] を入力し、[ステータス] セクションで [有効] が選択されていることを確認します。レプリケーションルールが無効になっている場合、レプリケーションルールは実行されません。

: Amazon S3 は、すべてのレプリケーションルールに従ってオブジェクトのレプリケーションを試みます。ただし、同じ送信先バケットを持つルールが 2 つ以上ある場合、オブジェクトは最も優先順位の高いルールに従ってレプリケートされます。数字が小さいほど、優先順位が高くなります。レプリケーションの設定ページでは、各レプリケーションルールの優先順位を編集できます。 

2.4 [フィルタータイプ] ([プレフィックス] または [タグ]) を定義してレプリケーションの範囲を絞り込むか、またはバケット全体をレプリケートすることを選択します。例えば、Finance というプレフィックスを含むオブジェクトのみをレプリケートする場合は、その範囲を指定します。レプリケーション用のオブジェクトのフィルタリングの詳細については、「S3 ユーザーガイド」のフィルターの指定に関するドキュメントを参照してください。

2.5 [S3 を参照] ボタンを選択し、バケット名全体を入力して、作成した送信先バケットを選択します。

レプリケーションの設定プロセス中に新しい S3 バケットを作成することはできません。

2.6 同じソースバケットから新しいレプリケーションルールを作成する場合は、新しい送信先バケットに新しいオブジェクトを書き込むための十分な許可が、この設定に関連付けられた AWS Identity and Access Management (IAM) ロールに付与されていることを確認してください。新しい IAM ロールを作成するか、または適切な許可セットを持つ既存の IAM ロールを選択するかを選択できます。詳細については、S3 レプリケーションの許可のセットアップに関するドキュメントを参照してください。

2.7 (オプション) オブジェクトが Amazon S3 マネージド暗号化キー (SSE-S3) または AWS Key Management Service (AWS KMS) で暗号化されている場合は、暗号化オプションを指定します。S3 レプリケーションは、SSE-S3 (デフォルトの暗号化)、AWS KMS サーバー側の暗号化 (SSE-KMS)、およびお客様提供のキーを使用したサーバー側の暗号化 (SSE-C) をサポートしています。AWS KMS 暗号化を選択した場合は、ソースバケットで復号し、送信先バケットで再暗号化するための AWS KMS キーを指定します。AWS KMS でコストを削減するには、Amazon S3 バケットキーを有効にします。

2.8 (オプション) 送信先バケットでレプリケートされたオブジェクトの S3 ストレージクラスを選択します。ワークロードに応じて、より低コストのストレージクラスを選択することを検討します。例えば、アクセスパターンが予測不能または変化するデータのストレージコストを最適化するには Intelligent-Tiering、レプリケートされたオブジェクトへのアクセス頻度は低いものの、ミリ秒単位で取得する必要がある場合は Glacier Instant Retrieval、アクセスする必要がほとんどないデータをアーカイブするには Glacier Deep Archive を選択できます。詳細については、「Amazon S3 ストレージクラスを使用する」を参照してください。

2.9 必要な追加のレプリケーションオプションを選択します。

  • Replication Time Control (RTC): S3 RTC は、オブジェクトの 99.99% を 15 分間でレプリケートするという SLA を提供するため、コンプライアンスとビジネスの要件を満たすのに役立ちます。S3 CRR および S3 SRR とともに S3 RTC を有効にすることができます。レプリケーションのメトリクスと通知はデフォルトで有効になっています。
  • [レプリケーションメトリクスと通知]: 非 RTC ルールでは、[レプリケーションメトリクスと通知] を選択するオプションを使用できます。これは、レプリケーションルールについて、保留中のバイト数、保留中のオペレーション、失敗したオペレーション、およびレプリケーションレイテンシーの進行状況を分単位で追跡するための詳細なメトリクスを提供します。
  • [削除マーカーのレプリケーション]: [削除マーカーのレプリケーション] を選択すると、ソースバケットの削除が送信先バケットにレプリケートされます。これは、ソースバケットと送信先バケットの同期を維持する場合には有効にする必要がありますが、意図しない削除や悪意のある削除から保護することを目的としている場合には有効にする必要はありません。
  • [レプリカ変更の同期]: 2 つの S3 バケット間で双方向レプリケーションを確立するには、双方向レプリケーションルール (A から B、および B から A) を作成し、ソースと送信先の両方の S3 バケットのレプリケーションルールのために [レプリカ変更の同期] を有効にします。これは、タグ、ACL、オブジェクトロックの設定などのオブジェクトメタデータが、レプリカとソースオブジェクト間で同期されている状態を維持するのに役立ちます。

S3 バッチレプリケーションを利用して既存のオブジェクトをレプリケートする際、[S3 RTC][レプリケーションメトリクスと通知]、および [レプリカ変更の同期] はサポートされません。

レプリケーションを設定したら、[保存] を選択します。 

2.10 S3 バケット用に新しいレプリケーションの設定で最初のルールを作成する場合、または既存の設定に新しい送信先 AWS リージョンを追加する場合、そのレプリケーションルール用に既存のオブジェクトレプリケーションを有効にするオプションを使用できます。既存のオブジェクトをレプリケートするには、[はい、既存のオブジェクトをレプリケートします] を選択し、[送信] を選択します。

コンソールから、[バッチオペレーションジョブを作成] ページに移動します。

ステップ 3: 新しいレプリケーションの設定を作成しつつ、既存のオブジェクトをレプリケートする

[バッチオペレーションジョブを作成] ページで、
ジョブ実行オプション、S3 完了レポートの範囲、許可などの S3 バッチオペレーションジョブの設定を確認できます。

3.1 ジョブ実行オプションを設定します。S3 バッチレプリケーションジョブをすぐに実行する場合は、[準備ができたらジョブを自動的に実行します] を選択できます。ジョブの準備ができた後、すぐにそのジョブを実行しない場合は、バッチオペレーションマニフェストを保存して、レプリケートされるオブジェクトのリストを確認できます。

3.2 バッチオペレーションマニフェストのオプションを設定します。Amazon S3 が生成するマニフェストファイルは、レプリケーションの設定と同じソースバケット、プレフィックス、タグを使用して、レプリケーションに適格なオブジェクトのバージョンをすべてリストします。レプリケーションを開始する前にオブジェクトリストを確認できるように、常に [バッチオペレーションマニフェストの保存] を選択することをお勧めします。マニフェストは同じ AWS アカウントまたは別の AWS アカウントに保存できますが、マニフェストファイルはソースバケットと同じ AWS リージョンに保存する必要があります。

この例では、ソースバケットと同じ AWS アカウントにあるマニフェストファイルを保存するために「aws-s3-tutorial-batch-replication-manifest-destination」バケットを選択しました。

3.3 セキュリティをさらに強化するには、Amazon S3 マネージドキー (SSE-S3) または AWS Key Management Service key (SS3-KMS) を使用してマニフェストファイルを暗号化します。

3.4 S3 バッチオペレーションが少なくとも 1 つのオブジェクトを正常に処理している限り、Amazon S3 は、バッチレプリケーションジョブが完了、失敗、またはキャンセルされた後に完了レポートを生成します。完了レポートには、オブジェクトキーの名前とバージョン、ステータス、エラーコード、エラーの説明など、各タスクの追加情報が含まれます。このジョブでレプリケートされているすべてのオブジェクトのステータスを確認できるように、[すべてのタスク] について [完了レポートの生成] を選択することをお勧めします。完了レポートの例については、「例: S3 バッチオペレーション完了レポート」を参照してください。

3.5 ユーザーに代わって S3 バッチオペレーションを実行するための十分な許可が、このバッチレプリケーションジョブに関連付けられた IAM ロールに付与されていることを確認してください。詳細については、「バッチレプリケーション用の IAM ポリシーの設定」および「Amazon S3 バッチオペレーションに対するアクセス許可の付与」に関するドキュメントを参照してください。

設定を確認し、[保存] を選択します。

バッチオペレーションのホームページにリダイレクトされます。

3.6 新しいジョブの [ジョブ ID] を選択して、ジョブの設定を確認します。バッチレプリケーションジョブのステータスを追跡することもできます。

ステップ 4: 既存のレプリケーションの設定を使用して、既存のオブジェクトをレプリケートする

前のステップで説明した新しいレプリケーションルール用のレプリケーションジョブの作成とは別に、S3 バケット内の既存のレプリケーションルール用の S3 バッチレプリケーションジョブを作成することもできます。これを実行するには、Amazon S3 コンソールのホームページに戻ります。

4.1 コンソールのホームページの左側のナビゲーションペインで、[バッチオペレーション] を選択し、次に [ジョブを作成] を選択します。

4.2 [ジョブを作成] ページで、バッチレプリケーションジョブを作成する AWS リージョンを選択します。ジョブは、ソース S3 バケットがあるのと同じ AWS リージョンで作成する必要があります。

4.3 レプリケートするオブジェクトのリストを提供します。ユーザーが生成したマニフェストは、Amazon S3 インベントリレポートまたは CSV ファイルの形式で追加できます。マニフェストには、レプリケートする必要があるすべてのオブジェクトのバージョンが含まれている必要があります。Amazon S3 は、ソースバケットの既存の S3 レプリケーションの設定を使用してマニフェストを生成することもできます。

: この例では、Amazon S3 にマニフェストを生成させるために [S3 レプリケーションの設定を利用してマニフェストを作成] を選択し、「aws-s3-replication-tutorial-source-bucket」をソースバケットとして選択しました。Amazon S3 にマニフェストを生成させることを選択した場合は、ジョブの範囲を絞り込むために、オブジェクトの作成日やレプリケーションステータスなどの追加のフィルターも表示されます。

       4.4 (オプション) バッチオペレーションマニフェストを保存することを選択した場合は、セキュリティとアクセスコントロールを強化するために、Amazon S3 マネージドキー (SSE-S3) または AWS Key Management Service キー (SSE-KMS) を使用してマニフェストファイルを暗号化します。

  • 暗号化モードを指定しない場合、Amazon S3 はマニフェスト送信先バケットのデフォルトの暗号化設定を使用してマニフェストファイルを暗号化します。
  • 送信先バケットでデフォルトの暗号化が有効になっていない場合、Amazon S3 は SSE-S3 を使用してマニフェストファイルを暗号化します。

 

 

4.5 [次へ] を選択して、[オペレーションを選択] ページに移動します。

4.6 前のページで [S3 レプリケーションの設定を利用してマニフェストを作成] を選択した場合、唯一の [オペレーション] のオプションは [レプリケート] です。これは、S3 で生成されたマニフェストの使用中に許可される唯一のオペレーションがレプリケーションであるためです。[レプリケート] を選択し、[次へ] を選択します。

4.7 追加オプションを設定します。

  • [説明] を入力して、ジョブの目的を明確にします。
  • [優先順位] を選択して、アカウントで実行されている他のジョブに対するこのジョブの相対的な優先順位を設定します。数値が大きいほど、優先順位が高くなります。例えば、[優先順位] が [2] のジョブは、[優先順位] が [1] のジョブよりも優先されます。S3 バッチオペレーションは優先順位の数字に従ってジョブを優先しますが、厳密に順位に従って実行されることは保証されません。したがって、あるジョブが他のジョブよりも前に確実に開始または終了するようにするために、ジョブの優先順位を使用すべきではありません。厳密に順番どおりに実行する必要がある場合は、あるジョブが終了するのを待ってから、次のジョブを開始してください。

4.8 完了レポートを生成するかどうかを選択します。 

4.9 バッチオペレーションの有効な IAM ロール を選択して、ユーザーに代わってアクションを実行するための Amazon S3 許可を付与します。

また、バッチレプリケーションの IAM ポリシーをバッチオペレーションの IAM ロールにアタッチする必要があります。 有効な IAM ロールとポリシーを作成するには、「バッチレプリケーション用の IAM ポリシーの設定」を参照してください。

4.10 [ジョブタグ] をバッチレプリケーションジョブに追加し、[次へ] を選択してジョブ設定を確認します。

 

4.11 [確認] ページで、[編集] を選択して変更を行ってから、[次へ] を選択して変更を保存し、[確認] ページに戻ります。

ジョブの準備ができたら、[ジョブを作成] を選択します。 

 

4.12 バッチレプリケーションジョブが作成された後、バッチオペレーションはマニフェストを処理します。成功すると、ジョブのステータスが [実行のための確認待ち] に変わります。ジョブを実行する前に、ジョブの詳細を確認する必要があります。

ジョブが成功すると、[バッチオペレーション] ページの上部にバナーが表示されます。

ステップ 5: S3 レプリケーションの設定ページから、バッチレプリケーションジョブを作成する

5.1 S3 バケットのリストから、レプリケーションのソースとして設定する S3 バケットを選択します。

コンソールから、S3 バケットのランディングページに移動します。

5.2 選択した S3 バケットの [オブジェクト][プロパティ][許可][メトリクス][管理][アクセスポイント] を確認します。

5.3 [管理] タブの [レプリケーションルール] で、[レプリケーションの設定を表示] を選択します。

5.4 ソースバケットのためのレプリケーションの設定のホームページで、[レプリケーションジョブを作成] を選択して、S3 バッチオペレーションの [ジョブを作成] ページに移動します。前のステップを繰り返して、既存のレプリケーションの設定からバッチレプリケーションジョブを作成します。

ステップ 6: S3 バッチレプリケーションジョブの進行状況をモニタリングする

バッチレプリケーションジョブが作成および実行されると、一連のステータスを経ながら進行します。[バッチオペレーション] のホームページでこれらのステータスを参照することで、バッチレプリケーションジョブの進行状況を追跡できます。

例えば、ジョブは作成されたときに [新規] 状態となり、Amazon S3 がマニフェストや他のジョブパラメータを処理しているときに [準備中] 状態に移行し、その後に実行の準備ができている場合は [準備完了] 状態、進行中の場合は [アクティブ] 状態、処理が完了すると最後に [完了] 状態となります。ジョブステータスの完全なリストについては、「バッチオペレーションジョブのステータス」を参照してください。

バッチレプリケーションジョブを作成する際に、オブジェクトレプリケーションのステータスを追跡するために完了レポートを生成することを選択できます。完了レポートは、S3 バッチオペレーションで少なくとも 1 つのタスクが正常に呼び出されている限り、ジョブが完了、失敗、またはキャンセルされた後に Amazon S3 によって生成される CSV ファイルです。

さらに、レプリケーションルール用にレプリケーションメトリクスまたは S3 Replication Time Control (S3 RTC) を有効にしている場合は、Amazon S3 コンソールおよび Amazon CloudWatch コンソールで、1 分あたりの失敗したオペレーションの数を、[オペレーションが失敗したレプリケーション] メトリクスで確認できます。詳細については、「S3 バッチオペレーションの完了レポート」および「S3 レプリケーションメトリクスによる、進捗状況のモニタリング」を参照してください。

ステップ 7: リソースをクリーンアップする

テストオブジェクトを削除する

  1. AWS マネジメントコンソールセッションからログアウトした場合、ログインし直します。
  2. S3 コンソールに移動し、[バケット] メニューオプションを選択します。
  3. 最初に、テストバケットからテストオブジェクトを削除する必要があります。このチュートリアルで使用したバケットを選択します。
  4. テストオブジェクトを選択し、[削除] を選択します。
  5. [オブジェクトを削除] ページで、削除する正しいオブジェクトを選択していることを確認し、確認フィールドに削除と入力して、[オブジェクトを削除] を選択します。

ページ上部のバナーは、削除が成功したことを示します。

テストバケットを削除する

  1. アカウント内のバケット一覧に戻ります。
  2. このチュートリアル用に作成したソースバケットの左側にあるラジオボタンを選択し、[削除] を選択します。
  3. 確認フィールドにバケット名を入力し、[バケットを削除] を選択します。
  4. これらのステップを繰り返して、このチュートリアルの一環として作成した送信先バケットを削除します。

ページ上部のバナーは、削除が成功したことを示します。

まとめ

お疲れさまでした。 S3 バッチレプリケーションを利用して、ソース S3 バケットから送信先 S3 バケットに既存のオブジェクトをレプリケートし、新しく作成されたバケットに既存のオブジェクトをバックフィルする方法、以前にレプリケートされたオブジェクトをレプリケートする方法、および過去にレプリケートに失敗したオブジェクトをレプリケートする方法を学習しました。S3 バッチレプリケーションを利用する場合は、S3 で生成されたマニフェストを使用して、レプリケーションの対象とするオブジェクトのリストを自動的に作成することをお勧めします。また、以降の確認と分析のためにレプリケーションマニフェストを保存する必要もあります。最後に、S3 バッチレプリケーションを使用してレプリケートされているオブジェクトのステータスを追跡するために、完了レポートを生成することをお勧めします。

次のステップ

S3 レプリケーションの詳細については、次のリソースを参照してください。

S3 バッチレプリケーションのドキュメント

S3 レプリケーションに関するよくある質問

Replicate existing objects with Amazon S3 Batch Replication (ブログ)

Replicate data within and between AWS Regions using Amazon S3 Replication