S3クロスリージョンレプリケーションでデータを冗長化する方法

こんにちは、AWSエンジニアの@ダーシーです。

今回はS3のクロスリージョンレプリケーションについてお勉強したいと思います。

ストレージのバックアップを考えた人ならわかると思いますが、容量の大きいストレージ全体を一気にコピーするのは非現実的です。

S3のクロスリージョンレプリケーションはそんな疑問に答えてくれるソリューションになると思います。

【S3】クロスリージョンレプリケーションについて

異なる AWS リージョンにある2つのバケット間で、オブジェクトを自動的に非同期にコピーする機能です。

バケットに対するオブジェクト作成・更新・削除などのデータ処理のイベントをトリガーとしてレプリ ケーションが実行されます。

クロスリージョンレプリケーションは同じ AWS アカウントが所有するバケットにも、異なるアカウントが所有するバケットにも設定できます。

 

何のためにやるのか?

ユースケース

ユースケース

複数のEC2インスタンスに対してWEBアプリケーションを利用しています。

このEC2インスタンスから別リージョンのS3にアクセスする際に、

VPCエンドポイントを使用することを決定しました。

現在のアーキテクチャではVPCエンドポイントをそのまま使用できないようです。

別VPCエンドポイントを利用してS3バケット内のコンテンツをシェアする場合など。

 

特徴

クロスリージョンレプリケーションは同じ AWS アカウントが所有するバケットにも、異なるアカウントが所有するバケットにも設定できます。

クロスリージョンレプリケーションは、オブジェクトの登録や削除と同時に実行されます

AWS CLIのコマンド操作によって手動で実行することが可能

マネジメントコンソール上ではオブジェクトを登録すれば自動でレプリケーションされるため

マネジメントコンソール上でクロスリージョンレプリケーションを有効化する設定は可能だが、現段階でバケット間の同期をとる操作はできない。

双方向レプリケーションは可能ですが、双方向でのクロスリージョンレプリケーション設定が別途必要となる

 

VPCエンドポイントはリージョン内のポイントであるため、リージョン外からはアクセスできません。

したがって、エンドポイントを使用するには、使用されるリージョンに対して、 S3 クロスリージョンレプリケーションによってS3オブジェクトをコピーする必要があります。

これによって、対象リージョンにS3オブジェクトをレプリケーションしておいて、そのリージョンに対するVPCエンドポイントによるアクセスを構成します。 

 

AWS CLIのコマンド操作によって手動で実行することが可能です。

やり方

マネジメントコンソール上のレプリケート操作

マネジメントコンソール上ではオブジェクトを登録すれば自動でレプリケーションされます。

マネジメントコンソール上でクロスリージョンレプリケーションを有効化する設定は可能が、現段階のバケット間の同期をとる操作はできません。

その場合はAWS CLIコマンドを利用します。

 

冗長化されているか常に監視する

構築したあとは以下のような運用方法を考えなければなりません。

どのリージョンにどの名前のオブジェクト、どのサイズで格納されているのか

どのタイミングで同期されるのか

サイズが同じなのか

正しい動きなのかどうやって判断すればよいか

監視のやり方はいろいろ

 

 

 

 

 

Twitterでフォローしよう