AWS CSAA-Amazon S3 7
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 permission給S3來讀寫特定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:
- 例如Bucket1做Replication複製到Bucket2,接著又從Bucket2複製到Bucket3
- 則Bucket1建立Object並不會同步複製到Bucket3
Replication Hands On:
首先建立新的Bucket:
同理再建立一個目標的Bucket:
這時候針對剛剛建立的"superpig-demo-s3-origin-v2"上傳一張狗狗圖
所以沒有設置replication的現況是:
所以先來到源頭Bucket的Management →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"差滿多的