[ AWS ] 將 S3 複製到不同帳號
29 Nov 2017這次的要求:
Account A bucket sync to Account B bucket
Step 1 - Setup Python, AWS CLI
首先,需要乙台主機安裝AWS CLI
,這是 AWS 以 Python 開發的小工具,所以在安裝 CLI 之前還需要安裝Python
安裝2.7or以上都可以,我選擇的是 EC2 Linux 裝 Python36
輸入aws --version
有東西之後即安裝成功
Step 2 - Account (A) add Bucket Policy
因為要從來源Account A
複製到目的地Account B
,所以要讓 Account A 開放 Bucket 做存取
需要到 AWS -> S3 -> Bucket -> Permission -> Bucket policy 的頁籤
點開後可以看到Bucket policy editor
有個Policy generator
,點進去後如下
唯一要注意的是 ARN(Amazon Resource Name),這是Amazon系統的辨識名稱,需要填上該Bucket的ARN
只要回到Bucket policy editor
的頁面就找的到,全部填好之後按Add statement
就可以得到一串JSON代碼
複製後並貼回 editor save就完成了!
注意:我此篇用的權限是Puclic,你也可以只開放給某個IAM帳號,在Principal欄位中輸入 Ex: arn:aws:iam::778695189650:Joe
Note: 因為這次要把整個S3搬過去,所以每個 Bucket在跑之前都要設定一次 Bucket policy,要搬的時候在設定即可
Step 3 - Account (B) add IAM user
在上面的動作之後,已經可以在外部操作 Account (A) 的 Bucket
現在要新增一個IAM User Permission,讓系統能將資料寫入 Account (B) 的 Bucket
用Account B
到 AWS -> IAM -> User -> Add User -> [Name, Programmatic access, Next]
-> Attach existing policies directly -> [AmazonS3FullAccess , Next] -> Finish
這時候會得到 Access key ID 跟 Secret access key,記錄下來
Step 4 - AWS CLI sync
這時候可以回到安裝好AWS CLI
的主機下指令搬家囉!