S3 バッチレプリケーションで既存オブジェクトの同期を試してみた

S3バッチレプリケーションを利用して、170万オブジェクトのS3バケット間転送が1時間弱で簡単にできるようになりました。
2022.02.10

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

AWSチームのすずきりょうです。

2022年2月8日のアップデートでサポートされたバッチレプリケーション (Amazon S3 Batch Replication) を利用して、 S3のレプリケーション設定と、レプリケーション設定前から存在していた既存オブジェクトの同期を試す機会がありましたので、紹介させていただきます。

S3レプリケーション設定

バージョニング

レプリケーション対象のS3バケット、バージョニングを有効である事を確認します。

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

以下の設定で、レプリケーションルールを作成しました。

  • ルールスコープは全てのオブジェクト
  • 送信先となるS3バケットを指定
  • S3レプリケーションに利用するロールは「新しいロールを作成」

既存のオブジェクトをレプリケート

レプリケーションルールの作成時、既存オブジェクトの転送を行うバッチオペレーションジョブの作成が可能になりました。

バッチオペレーションジョブ

以下設定でバッチオペレーションジョブを作成しました。

  • ジョブ実行オプションは「ジョブを自動的に実行」
  • 完了レポートの出力先S3のパス
  • S3バッチオペレーションで利用するIAMロールは「新しいロールの作成」

バッチオペレーションジョブが作成されます。

100件弱のオブジェクトの同期は、約3分で完了しました。

別環境(オブジェクト数:170万、合計バケットサイズ:150GB、ストレージクラス:標準、暗号化:無し、リージョン:東京→東京)の同期を試みた所、約48分で完了しました。

所要時間はオブジェクト数、データ量、リージョン、暗号化方式、ストレージクラスなどの条件により変化するため、所要時間の見積もりが必要な場合、再現環境を用意し事前検証を行う事を強くおすすめします。

費用

S3 バッチレプリケーションを利用すると、バッチオペレーション の費用が発生します。

  • ジョブあたり 0.25USD
  • 実行された 100 万オブジェクトオペレーションあたり 1.00USD

まとめ

S3 のレプリケーション、既存オブジェクトの同期は別途行う必要がありましたが、 同期対象のオブジェクトが多い場合には、所要時間や並列処理の実現が課題になる事がありました。

今回サポートされたバッチレプリケーションにより、大規模なS3バケットでも高速な同期処理が簡単に利用できる様になりました。 S3バケット間の同期が必要となった場合の手段の一つとして、バッチレプリケーションをご活用ください。