跨帳號存取 Amazon S3

跨帳號存取 Amazon S3

【情境說明】

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

發佈留言