Amazon S3で複数の宛先バケットに対するS3レプリケーション(マルチデスティネーション)のサポートが追加されました #reinvent

1つのソースバケットから複数の宛先バケットにデータをレプリケートできるようになったで
2020.12.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

keynoteでは触れられていなかったと思いますが、しれっと発表されていました。

今までは複数の宛先バケットにデータをコピーするにはS3イベントをトリガーにしてlambdaを起動しデータをコピーするなどのソリューションを構築して実現していましたが、今回の機能追加により複数の宛先にデータを複製するための独自のソリューションを開発する必要がなくなります。

以下のような特徴があります。

  • 異なるストレージクラスに保存
  • 異なる暗号化タイプに保存
  • 異なるアカウントに保存
  • CloudWatchメトリクスを使用して、各リージョンペアのレプリケーションの進行状況を追跡
  • 既存のすべてのS3レプリケーション機能をサポート

やってみる

バージョン管理を有効にしたバケットを新規作成してレプリケーションの設定をしてみます。

レプリケーションルール作成

S3レプリケーション(マルチデスティネーション)を設定するには、レプリケーションルールを定義する必要があります.

バケットの管理タブからレプリケーションルールを作成できます。

ソースバケットの設定では、フィルターでprefixを指定したり、タグで制御したりが可能です。

送信先の設定ではアカウントの指定とバケットを選択します。

レプリケーションに必要なIAMロールはこのドキュメントを参考にして作成しましょう。

暗号化,ストレージクラス、追加オプションも適時設定します。

複数のバケットにレプリケーションするため、同じ工程をバケット分繰り返します。

※ ソースと同じアカウントで別リージョン

※ ソースと別アカウントで同じリージョン

全部で3つの送信先を指定してみました。

レプリケーションの確認

ソースのバケットにファイルを追加して確認してみましょう。

マネコンを使って適当なファイルをアップロードします。

上記のように送信先に指定したバケットに同じオブジェクトが置かれているとレプリケーションは成功しています。

ない場合はIAMロールの設定、別アカウントならバケットポリシーを確認しましょう。

レプリケーションメトリクス

レプリケーションルールのオプションで、レプリケーションメトリクスと通知を設定していると、ソースバケットでレプリケーションルールの進行状況をモニタリングできます。

メトリクスタブを選択し、ページ下部にいくと

上記のようにレプリケーションルールを選択してグラフを表示できます。

レプリケーション保留中のオペレーション、レプリケーションのレイテンシー、レプリケーションを保留中のバイト数 の3つのメトリクスグラフが確認できます。

レプリケーションがなかなか行われていないなどといったときはこのメトリクスを確認します。

終わりに

S3の新しい機能であるS3レプリケーション(マルチデスティネーション)を試してみました。 lambdaを使って独自のソリューションを構築しなくても簡単に複数バケットにレプリケーションできるようになったのは大きいのではないでしょうか。 バックアップ先を2つ以上指定しないといけない、データ解析用のオブジェクトはソースとは別のバケットを使用したいなどといった場面で役に立ちそうです。