0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【S3】レプリケーションによる既存オブジェクト上書き動作

Last updated at Posted at 2023-04-05

はじめに

今回は下記をいじることでレプリケーションの挙動を理解しようとしています

  • 設定変更(レプリケーションルール 有効 OR 無効)
  • レプリケーション(バッチ OR 通常)
  • 更新(オブジェクトの削除やアップロード)

設定変更およびオブジェクト更新をおこない、必要に応じて通常のレプリケーションとバッチレプリケーションを使い分けるというイメージです
image.png

前提

  • ターゲットのバケットにはソースにアップロードする予定のオブジェクトをすでに格納しています(しかも同じキー)
  • 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

検証

下記を検証します
①ソースの既存オブジェクトの上書き動作
②ソースの新規オブジェクトの上書き動作
③ソースの特定バージョンを削除した場合の動作
④ソースのオブジェクト(バージョン指定なし)を削除した場合の動作

そのために時系列として下記のような手順を踏みます
①ソースおよびターゲットにオブジェクトをアップロード(ソースからアップロード)
②レプリケーションルールを設定&有効化
③ソースに新規オブジェクトアップロード
④ソースのオブジェクトを削除

①ソースおよびターゲットにオブジェクトをアップロード(ソースからアップロード)

検証のためにオブジェクトをアップロードして準備します

ソース

  • レプリケーション無効化時点
    test1.txtアップロード→削除→アップロード
    image.png

ターゲット

  • ソースのレプリケーション無効化時点
    test1.txtアップロード
    test2.txtアップロード
    image.png

②レプリケーションルールを設定&有効化

キャプチャないですが特に特別な設定はせずにルール作成&有効化しました

③ソースに新規オブジェクトアップロード

ソース

test2.txtをアップロードして「②ソースの新規オブジェクトの上書き動作」を確認

  • レプリケーション有効化後
    test2.txtアップロード
    image.png

ターゲット

  • レプリケーション有効化後
    image.png
    test1.txtは変化なし、既存オブジェクトは更新されないのでバッチレプリケーションが必要
    image.png
    test2.txtが上書きされたので、既存のターゲットのオブジェクトとソースのオブジェクトが同じキーの場合、上書きされる。ただしバージョンが更新されるだけで過去バージョンのオブジェクトは消えない
    ※参考

オブジェクトの更新をソース バケットから宛先バケットにコピー
https://docs.aws.amazon.com/AmazonS3/latest/userguide/replication-walkthrough1.html

  • バッチレプリケーション実施後
    バッチレプリケーションを実施して「①ソースの既存オブジェクトの上書き動作」を確認
    image.png
    こちらを見るとターゲットで作ったオブジェクトが最新のものとなっているためソースとターゲットで同じキーのオブジェクトが存在する場合アップロードした時間順にマージされる。実際更新日時を見るとそうなっていた

image.png

④ソースのオブジェクトを削除

次に削除の挙動
test1.txtの最も古いバージョンを削除
image.png

test2.txtをバージョン指定せず削除
image.png

その結果ソースはこうなった、ターゲットを確認するとオブジェクトに変化なしでした
バージョン指定しない場合オブジェクトを削除すると削除マーカーが挿入されますが、削除マーカーをレプリケーションする設定にしないと反映されないよう。バージョン指定した場合は削除されないようになってる

image.png

※参考

デフォルトでは、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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?