🐕

AWS S3 BatchReplication 使ってみた

2024/04/29に公開

用語

  • ソース = 送信元となるS3のバケット
  • ターゲット=送信先となるS3のバケット

手順概要

  1. ソースとターゲットのバージョニングを有効
  2. ソースにバッチレプリケーションルールの設定
  3. レプリケーションルールから、ジョブを作成
  4. レプリケーションジョブを実行

手順詳細

ソースバケットの管理タブからレプリケーションルールを作成。

ルール名、ステータス、全てのオブジェクトを同期するのか、フィルターで特定のオブジェクトだけにするのかを設定。

送信先バケット、IAMロール、暗号化を設定。

送信したオブジェクトのストレージクラスの設定もできます。
追加のレプリケーションについては後述。

追加のレプリケーションオプションについて

RTCとは

  • 最大でも15分以内にオブジェクトの同期が完了する
  • レプリケートに失敗したオブジェクトはイベント通知の設定をすることで通知が受け取れる。
  • レプリケーションメトリクスが有効化される。
    • 保留しているS3 APIの合計数、保留しているオブジェクトの合計サイズ、レプリケート先への最大時間、失敗したオペレーションの合計数が、モニタリングされる。
    • メトリクスの設定はRTCを使わなくても有効化できる。
  • 追加料金が0.015/GB分とCloudWatchLogsの料金がかかる。

今回はニアリアルタイムに同期したいので有効化。

S3 Replication Time Control (S3 RTC) を使用してコンプライアンス要件を満たす - Amazon Simple Storage Service

削除マーカーのレプリケーションとは

  • ソースでついている削除マークを、ターゲットでもつけるのか
  • デフォルトではソースオブジェクトに削除マークがついていても、ターゲットで削除マークはつかない
  • ライフサイクルの設定によって一定期間後に削除される設定をしている場合、削除マーカーのレプリケーションを有効にしても反映されない

今回はバックアップ目的の同期ではないので、削除されたかどうか同期される必要があるため有効化

バケット間での削除マーカーのレプリケーション - Amazon Simple Storage Service

レプリカ変更の同期とは

  • タグやACLやオブジェクトロックのメタデータを双方向に同期させるかどうか
  • デフォルトではソースからターゲットにメタデータは移行されるが、ターゲットで変更されたメタデータの変更はソースに同期されない。

Amazon S3 レプリカの変更同期によるメタデータ変更のレプリケート - Amazon Simple Storage Service

次にレプリケーションジョブを作成。

既存のレプリケーション設定を用いてマニフェストを作成する。
ジョブが始まったら、最初に送信先にmanifest.jsonが作成され、そこで正常に同期ができるのか等確認を行なってくれます。IAMがおかしかったりしたらmanifest.jsonにerror等の記述がされます。
時間やステータスで同期するオブジェクトをフィルタリングできます。
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-batch-replication-batch.html

優先順位、完了レポート、IAMを設定。
オブジェクト数が多い場合、完了レポートを全てのタスクにしている場合時間がめちゃくちゃかかってしまうので注意。

ジョブを作成して、ステータスが実行待ちになるのを待ちます
先程のIAMの権限がおかしい場合失敗になってしまうので、ジョブのクローンをして正しく設定します。

ジョブが実行待ちの状態になればここからジョブの実行を行います

完了すれば以下のようになります

Discussion