AWS CSAA-Amazon S3 7

S3 Replication & Hands On

ZONGRU Li
Nov 16, 2022

Replication (CRR & SRR)

其中

CRR:Cross-Region Replication

SRR:Same-Region Replication

用意是我們在某A Region內建立的Bucket

想到將這個Bucket進行asynchronous到另一個B Region

Replication其條件:

  • 不管是源頭的Bucket或是目標的Bucket,都要先啟用Versioning
  • 就可以選擇CRR:Cross-Region Replication
  • 或是SRR:Same-Region Replication
  • 另外兩個Buckets間可以是在不同的AWS帳號下
  • 複製是"asynchronous"
  • 必須開通特定IAM permissionS3來讀寫特定Bucket

使用情境:

  • CRR — 合規,低延遲進入,跨帳號複製
  • SRR log aggregation,應用於複製prod環境帳號內容到test環境的帳號去

Replication Node:

  • 特別注意到,只有啟用"Replication後",只有新的Object才能Replicated
  • 若要複製既有的Objects,則可以選擇啟用S3 Batch Replication
  • S3 Batch Replication可用來複製既有的Objects或是複製失敗的Objects

針對移除的操作:

  • 可以選擇性的設置從源頭到目標複製"delete markers"
  • 但是刪除的時候若是有帶版本ID,則不會複製(Replication)這一刪除行為(這是避免malicious deletes(惡意刪除))

並沒有連鎖(chaining)Replication:

  • 例如Bucket1Replication複製Bucket2,接著又從Bucket2複製到Bucket3
  • Bucket1建立Object並不會同步複製到Bucket3

Replication Hands On:

首先建立新的Bucket:

同理再建立一個目標的Bucket:

這時候針對剛剛建立的"superpig-demo-s3-origin-v2"上傳一張狗狗圖

所以沒有設置replication的現況是:

所以先來到源頭BucketManagement →Replication rules

建立新的replication rule:

開始建立Replication Rule:

IAM角色部分(因為要有相關權限去複製):

後面都用預設的:

這時候可以特別注意到會跳出一個視窗詢問:

在"源頭"建立完以上的Replication設定後:

這時候源頭Bucket一樣有狗狗圖:

而後來建立的目標Bucket沒有依然狗狗圖:

這之後的物件操作我可以猜到應該就會同步給目標Bucket

這時候有個疑問是,我是不是就可以強迫丟給任何人的Bucket?

也有人問了類似的問題:

只要有權限就可以,前提是要有權限

這時候來源頭Bucket這邊多上傳貓貓圖:

這時候到目標Bucket:

這時候我回到源頭Bucket重新上傳狗狗圖:

在目標沒多久就看到也有新版的狗圖:

以上概念滿容易理解的,接著回到前面建立的Replication的規則:

編輯OK:

接下來來移除源頭的貓貓圖:

然後會看到(目標我大概隔了快一分鐘才同步):

這時候源頭點開版本顯示也會看到:

這時候我可以考慮移除"指定版本的狗狗圖"

這時候可以觀察到就不再有提示產生delete marker了:

移除後到目標Bucket看看,就不會有複製:

因為"移除"只有帶"Delete marker",會複製到目標Bucket!!

所以移除的時候有沒有展開"Show versions"差滿多的

相關參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet