【情境說明】
AWS Account-A 的 S3 bucket 資料要複製到 Account-B 的 S3 bucket
【權限設定】
在 Account-A 的 IAM (user 或 role) 增加對 Account-B 的 S3【bucket-b】有存取權限,如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "s3:*",
"Resource": [
"arn:aws:s3:::Account-B bucket-name",
"arn:aws:s3:::Account-B bucket-name/*"
]
}
]
}
在 Account-B 的 S3【bucket】,選擇頁籤permission 內的【Bucket policy】,將 Account-A 的 IAM-ARN 加入,如下:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": “iam-arn"
},
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": [
"s3-bucket-arn/*",
"s3-bucket-arn"
]
}
]
}
【在 Account-A 使用 Cli 指令複製】
recursive 的意思是會對指定目錄或前綴下的所有檔案或物件執行該命令。
aws s3 cp s3://Account-A-s3-bucket/ s3://Account-B-s3-bucket/ –recursive
【排除指令範例】
說明:若目的與來源路徑一致,在指令中給完整路徑,無須在S3先將子目錄建好。
aws s3 cp s3://來源/123/aaa/ s3://目的/123/aaa --exclude “01/" --exclude "02/” --exclude “03/" --exclude "04/” --exclude “05/" --exclude "06/” --exclude “07/" --exclude "08/” --exclude “09/" --exclude "10/” --exclude “11/" --exclude "12/” --exclude “13/" --exclude "14/” --exclude “15/" --exclude "16/” --exclude “17/*” --recursive