はじめに
今回は下記をいじることでレプリケーションの挙動を理解しようとしています
- 設定変更(レプリケーションルール 有効 OR 無効)
- レプリケーション(バッチ OR 通常)
- 更新(オブジェクトの削除やアップロード)
設定変更およびオブジェクト更新をおこない、必要に応じて通常のレプリケーションとバッチレプリケーションを使い分けるというイメージです
前提
- ターゲットのバケットにはソースにアップロードする予定のオブジェクトをすでに格納しています(しかも同じキー)
- IAMロールやバケットの作成および必要な設定は済ませておいてください
- IAMロールはバッチレプリケーションと通常のレプリケーションで必要な権限が異なります
※IAMロール参考(バッチの方はコンソール作成時にIAMポリシーのJSON作ってくれるのでそちらを使ったほうが楽です)
ユーザーに代わってレプリケーションタスクを実行する権許可をロールに付与します
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/setting-repl-config-perm-overview.html#setting-repl-config-same-acctowner
S3 で生成されたマニフェストを使用して保存する場合のポリシー
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/s3-batch-replication-policies.html
検証
下記を検証します
①ソースの既存オブジェクトの上書き動作
②ソースの新規オブジェクトの上書き動作
③ソースの特定バージョンを削除した場合の動作
④ソースのオブジェクト(バージョン指定なし)を削除した場合の動作
そのために時系列として下記のような手順を踏みます
①ソースおよびターゲットにオブジェクトをアップロード(ソースからアップロード)
②レプリケーションルールを設定&有効化
③ソースに新規オブジェクトアップロード
④ソースのオブジェクトを削除
①ソースおよびターゲットにオブジェクトをアップロード(ソースからアップロード)
検証のためにオブジェクトをアップロードして準備します
ソース
ターゲット
②レプリケーションルールを設定&有効化
キャプチャないですが特に特別な設定はせずにルール作成&有効化しました
③ソースに新規オブジェクトアップロード
ソース
test2.txtをアップロードして「②ソースの新規オブジェクトの上書き動作」を確認
ターゲット
- レプリケーション有効化後
test1.txtは変化なし、既存オブジェクトは更新されないのでバッチレプリケーションが必要
test2.txtが上書きされたので、既存のターゲットのオブジェクトとソースのオブジェクトが同じキーの場合、上書きされる。ただしバージョンが更新されるだけで過去バージョンのオブジェクトは消えない
※参考
オブジェクトの更新をソース バケットから宛先バケットにコピー
https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough1.html
- バッチレプリケーション実施後
バッチレプリケーションを実施して「①ソースの既存オブジェクトの上書き動作」を確認
こちらを見るとターゲットで作ったオブジェクトが最新のものとなっているためソースとターゲットで同じキーのオブジェクトが存在する場合アップロードした時間順にマージされる。実際更新日時を見るとそうなっていた
④ソースのオブジェクトを削除
次に削除の挙動
test1.txtの最も古いバージョンを削除
その結果ソースはこうなった、ターゲットを確認するとオブジェクトに変化なしでした
バージョン指定しない場合オブジェクトを削除すると削除マーカーが挿入されますが、削除マーカーをレプリケーションする設定にしないと反映されないよう。バージョン指定した場合は削除されないようになってる
※参考
デフォルトでは、S3 レプリケーションが有効で、レプリケーション元バケットでオブジェクトが削除されると、Amazon S3 はレプリケート元バケットにのみ削除マーカーを追加します
https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/delete-marker-replication.html
削除するオブジェクト バージョン ID を指定すると、Amazon S3 はソース バケット内のそのオブジェクト バージョンを削除します。ただし、宛先バケットでの削除は複製されません。
https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough1.html