Amazon S3 レプリケーションを使用して、AWS リージョン内およびリージョン間でデータをレプリケートする

概要

Amazon S3 レプリケーションは、Amazon S3 バケット間でオブジェクトをレプリケートするための、伸縮自在なフルマネージド型の機能であり、低コストで利用できます。S3 レプリケーションにより、1 つのソースバケットから複数の送信先バケット (AWS リージョンは同じでも異なってもよい) にデータをレプリケートできます。データ保護のためにデータのセカンダリコピーを維持したい場合も、データを複数の地域に分散させてユーザーに最小のレイテンシーを提供したい場合も、S3 レプリケーションはビジネスニーズを満たすために必要な制御を可能にします。この Amazon S3 入門ガイドでは、S3 同一リージョンレプリケーション (SRR)、S3 クロスリージョンレプリケーション (CRR)、S3 Replication Time Control (S3 RTC)、および S3 Batch Replication で S3 レプリケーションのベストプラクティスに従う方法を説明します。 

S3 同一リージョンレプリケーション (SRR) を使用すると、同じ AWS リージョン内のバケット間でデータを自動的にレプリケートできるため、ログを 1 つのバケットに集約したり、デベロッパーアカウントとテストアカウント間でレプリケートしたり、データ主権に関する法規を遵守したりできます。S3 クロスリージョンレプリケーション (CRR) を使用すると、オブジェクト (およびそのメタデータとオブジェクトタグ) を他の AWS リージョンにレプリケートして、レイテンシーの短縮、コンプライアンス、セキュリティ、ディザスタリカバリ、およびリージョンの効率向上に対応できます。S3 Replication Time Control (S3 RTC) を有効にして、データレプリケーションに関するコンプライアンス要件やビジネス要件を満たすこともできます。S3 RTC では、Amazon S3 にアップロードしたオブジェクトのほとんどは数秒で、また 99.99% のオブジェクトは 15 分以内にレプリケートされます。既存のオブジェクトのレプリケートについては、S3 Batch Replication を使用して、新しく作成したバケットに既存のオブジェクトをバックフィルしたり、以前にレプリケートできなかったオブジェクトを再試行したり、アカウント間でデータを移行したり、データレイクに新しいバケットを追加したりできます。S3 レプリケーションの詳細については、Amazon S3 ユーザーガイドの「オブジェクトのレプリケーション」セクションを参照してください。 このチュートリアルを終了すると、Amazon S3 レプリケーションを使用して AWS リージョン内およびリージョン間でデータをレプリケートできるようになります。

実行する内容

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

  • S3 バケットを作成する
  • S3 バケットに S3 レプリケーションルールを作成する
  • 送信先 S3 バケットを選択する
  • レプリケーション用の IAM ロールを選択または作成する
  • 暗号化タイプを指定する (オプション)
  • 送信先 S3 ストレージクラスを選択する
  • 追加のレプリケーションオプションを有効にする (オプション)

前提条件

 AWS の使用経験

初心者

 所要時間

20 分

 完了までのコスト

1 USD 未満 (Amazon S3 料金ページ)

 必要なもの

AWS アカウント**
 
[**] 過去 24 時間以内に作成されたアカウントは、このチュートリアルに必要なサービスへのアクセス権限がまだ付与されていない可能性があります。
 

 利用するサービス

 最終更新日

2022 年 10 月 17 日

実装

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

1.1 – Amazon S3 コンソールにサインインする

  • まだ作成していない場合は AWS アカウントを作成します。 
  • アカウント情報を使用して、AWS マネジメントコンソールにログインします。
  • AWS コンソールのサービス検索バーから、S3 と入力します。 サービス検索結果セクションで、[S3] を選択します。

1.2 – S3 バケットを作成する

  • 左側のナビゲーションペインの Amazon S3 メニューから [バケット] を選択し、[バケットの作成] ボタンを選択します。

1.3

  • グローバルに一意の、わかりやすいバケット名を入力します。バケットを作成する [AWS リージョン] を選択します。この例では、欧州 (フランクフルト) eu-central-1 リージョンが選択されています。S3 レプリケーションでは、ソースと送信先の両方の S3 バケットでバケットバージョニングを有効にする必要があります。詳細については、「S3 バケットでのバージョニングの使用」を参照してください。
  • 残りのオプションはデフォルトのままで構いません。ページの一番下に進み、[バケットの作成] を選択します。

1.4

  • 上記の手順を繰り返して、オブジェクトをレプリケートするための送信先バケットとして機能する別の S3 バケットを作成します。送信先 S3 バケットのバケットバージョニングも必ず有効にしてください。 

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

2.1 – ソース S3 バケットを選択する

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

2.2

ソース S3 バケットを選択すると、コンソールには次のスクリーンショットのように S3 バケットのランディングページが表示されます。ここでは、選択した S3 バケットの [オブジェクト][プロパティ][アクセス許可][メトリクス][管理]、および [アクセスポイント] を確認できます。

2.3 – 選択した S3 バケットの S3 レプリケーションルールを作成する

  • レプリケーションソースバケットの [管理] タブを選択します。[管理][レプリケーションルール] が表示されます。[レプリケーションルールを作成] を選択します。

ステップ 3: レプリケーションルールを設定する

3.1 – レプリケーションルールを有効にする

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

[優先度] は、複数のレプリケーションルールが競合する場合にどのルールが優先されるかを示します。レプリケーション設定ページで、各レプリケーションルールの優先度を編集できます。Amazon S3 は、すべてのレプリケーションルールに従ってオブジェクトをレプリケートしようとします。ただし、同じ送信先バケットに複数のルールがある場合、オブジェクトは最も優先度の高いルールに従ってレプリケートされます。優先度が 1 のルールは、優先度 2 のルールより先に実行されます。数字が小さいほど、優先度が高くなります。例えば、foo1 というタグを持つすべてのオブジェクトをレプリケートするレプリケーションルールと、foo2 というタグを持つすべてのオブジェクトをレプリケートする別のレプリケーションルールがあるとします。foo1foo2 のタグが付いたオブジェクトが 1 つある場合、そのオブジェクトは優先度の高い方のレプリケーションルールでのみレプリケートされます。1 つの送信先バケットに送信されるレプリケーションルールが 1 つしかない場合、優先度は考慮されません。 

3.2 – レプリケートする対象を選択する

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

3.3 – 送信先の S3 バケットを選択する

  • [S3 の参照] ボタンを選択して送信先バケットを選択します。送信先バケットの AWS リージョンが同じでも異なっても、さらに、AWS アカウントが同じでも異なっても、レプリケートできます。レプリケーションを設定するには 2 つの異なる S3 バケットが必要であり、両方のバケット (ソースと送信先) で S3 バージョニングが有効になっている必要があることに注意してください。S3 コンソールには、レプリケーション設定プロセスで新しい S3 バケットを作成する方法はありません。この例では、送信先バケットを「aws-s3-replication-tutorial-destination-bucket」にしました。

3.4 - IAM に関する考慮事項

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

3.5 - 暗号化オプション (オブジェクトが暗号化されていない場合は、このステップをスキップしてください)

  • オブジェクトが Amazon S3 管理の暗号化キー (SSE-S3) または AWS Key Management Service (AWS KMS) で暗号化されている場合は、レプリケーションの設定時に暗号化オプションを指定する必要があります。S3 レプリケーションは SSE-S3 (デフォルト暗号化) と AWS KMS サーバー側暗号化をサポートします。AWS KMS 暗号化を選択した場合は、ソースで復号して送信先で再暗号化する AWS KMS キーを指定する必要があります。AWS KMS のコストを節約するために、Amazon S3 バケットキーを有効にすることもできます。 

3.6 - 送信先の S3 ストレージクラスを選択する

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

3.7 – その他のレプリケーションオプション

  • S3 Replication Time Control (S3 RTC)[レプリケーションメトリクスと通知][削除マーカーのレプリケーション][レプリカ変更の同期] の有効化など、[追加のレプリケーションオプション] を選択します。S3 RTC では、オブジェクトの 99.99% をレプリケートするために 15 分の SLA が定められているため、コンプライアンス要件とビジネス要件を満たすのに役立ちます。RTC は S3 クロスリージョンレプリケーション (S3 CRR) および S3 同一リージョンレプリケーション (S3 SRR) とともに有効にでき、レプリケーションメトリクスと通知はデフォルトで有効になっています。RTC 以外のルールの場合は、[レプリケーションメトリクスと通知] を選択できます。これにより、レプリケーションルールについて、保留中のバイト、保留中のオペレーション、およびレプリケーションレイテンシーを分単位で追跡するための詳細なメトリクスが表示されます。[削除マーカーのレプリケーション] を選択すると、ソースバケットの削除が送信先バケットにレプリケートされます。これは、ソースと送信先のバケットを同期させたい場合は有効にしてください。ただし、誤操作による削除や悪意のある削除を防ぐことが目的である場合は有効にしないでください。2 つの S3 バケット間で双方向レプリケーションを確立するには、双方向のレプリケーションルール (A から B と B から A) を作成し、ソースと送信先の S3 バケットの両方のレプリケーションルールに対して [レプリカ変更の同期] を有効にします。これにより、タグ、ACL、オブジェクトロック設定などのオブジェクトメタデータをレプリカとソースオブジェクト間で同期させることができます。
  • レプリケーション設定を確認し、[保存] を選択します。

ステップ 4: 同じソース S3 バケットから別の送信先 S3 バケットへの別の S3 レプリケーションルールを作成する

  • 上記の手順を繰り返して、同じソース S3 バケットから別の送信先 S3 バケットへの別の S3 レプリケーションルールを作成します。[レプリケーションルール名] を入力し、[ステータス] セクションの [有効] を選択してレプリケーションルールを有効にします。レプリケーションルールの範囲を選択して、レプリケートする対象を選択します。
  • [S3 の参照] ボタンを選択して送信先バケットを選択します。この例では、送信先バケットを「ack-test-bucket-us-east-1」にしました。
  • [送信先 S3 ストレージクラス] を選択します。この例では、送信先バケットの S3 Standard ストレージクラスにレプリケートすることにしました。
  • レプリケーションルールの [追加のレプリケーションオプション] を選択します。この例では、S3 Replication Time Control (RTC) を有効にしました。

ステップ 5: レプリケーション設定を確認する

レプリケーションルールを保存すると、次のスクリーンショットのように S3 レプリケーションのランディングページに戻ります。ここでは、さまざまなレプリケーションルールを含むレプリケーション設定、ルールの優先順位、および暗号化や RTC などのその他のオプションを確認できます。 

次に、新しいオブジェクトをレプリケーションソースバケットにアップロードして、新しく追加されたレプリケーション設定をテストします。そのオブジェクトが新しい送信先バケットにレプリケートされたことを確認します。レプリケーションメトリクスが S3 コンソールに表示されるまでに数分かかる場合があります。

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

6.1

このバケットのレプリケーションを設定したので、送信先ごとのメトリクスと通知を追跡できます。ソースバケットの [メトリクス] タブを開きます。

6.2

下に移動して [レプリケーションメトリクス] を表示し、モニタリングする [レプリケーションルール] を 1 つまたは複数選択します。[グラフを表示] を選択すると、すべてのレプリケーションルールの [レプリケーション保留中のオペレーション][レプリケーションを保留中のバイト数][レプリケーションのレイテンシー] が表示されます。

さらに、[CloudWatch で表示] リンクを使用して Amazon CloudWatch[レプリケーションメトリクス] を表示できます。ここでは、それぞれのレプリケーションルール、ソースバケット、および送信先バケットのレプリケーションメトリクスを 1 か所で包括的に表示できます。さらに、実用的なインサイトを収集し、アラームを設定してメトリクスをモニタリングできます。詳細については、「Amazon CloudWatch アラームの使用」を参照してください。

ステップ 7: 個々のオブジェクトのレプリケーションステータスをモニタリングする

Amazon S3 Inventory を使用することで、ビジネス、コンプライアンス、規制などのニーズに合わせてオブジェクトのレプリケーションステータスを監査およびレポートできます。レプリケーションステータスは、レプリケートされているオブジェクトの現在の状態を判断するのに役立ちます。ソースオブジェクトのレプリケーションステータスは、保留中、完了、または失敗のいずれかを返します。 レプリカのレプリケーションステータスは、レプリカを返します。 レプリケーションステータスの詳細については、「レプリケーションステータス情報の取得」を参照してください。Amazon S3 Inventory レポートの設定の詳細については、「Amazon S3 Inventory と Amazon Athena を使用してデータを大規模に管理および分析する」を参照してください。

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

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

  • AWS マネジメントコンソールセッションからログアウトした場合、ログインし直します。S3 コンソールに移動し、[バケット] メニューオプションを選択します。最初に、テストバケットからテストオブジェクトを削除する必要があります。このチュートリアルのために操作しているバケットの名前を選択します。
  • テストオブジェクト名の左側にあるチェックボックスにチェックマークを付けて、[削除] ボタンを選択します。
  • [オブジェクトの削除] ページで、削除する適切なオブジェクトを選択していることを確認し、[オブジェクトを完全に削除] 確認ボックスに「削除」と入力します。その後、[オブジェクトの削除] ボタンを選択して続行します。 
  • 次に、削除が成功したかどうかを示すバナーが表示されます。

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

  • 最後に、作成したテストバケットを削除する必要があります。アカウント内のバケット一覧に戻ります。このチュートリアル用に作成したソースバケットの左側にあるラジオボタンを選択し、[削除] ボタンを選択します。 
  • 警告メッセージを確認します。このバケットの削除を続行する場合は、[バケットの削除] 確認ボックスにバケット名を入力し、[バケットの削除] を選択します。
  • 上記の手順を繰り返して、このチュートリアルの一部として作成した送信先バケットも削除します。アカウント内のバケット一覧に戻ります。このチュートリアル用に作成したソースバケットの左側にあるラジオボタンを選択し、[削除] ボタンを選択します。
  • 警告メッセージを確認します。このバケットの削除を続行する場合は、[バケットの削除] 確認ボックスにバケット名を入力し、[バケットの削除] を選択します。

まとめ

お疲れ様でした。 S3 レプリケーションを使用して、1 つまたは複数の AWS リージョンにわたってソースの S3 バケットから送信先の S3 バケットにオブジェクトをレプリケートする方法を説明しました。これにより、コンプライアンス要件を満たし、レイテンシーを最小限に抑え、運用効率を高めることができます。

S3 レプリケーションは、フルマネージド型の低コストのポリシーベースのストレージ管理機能で、手動による操作をほとんどまたはまったく必要としないように設計されています。各レプリケーションルールのメトリクスと通知を有効にし、ソースバケットで Amazon S3 イベント通知をオンにして、適切な Amazon CloudWatch メトリクスとアラートを有効にすることをお勧めします。有効にすると、1 つまたは複数の S3 バケットへの S3 レプリケーションの進行状況を追跡できるようになります。

このページはお役に立ちましたか?

次のステップ