ガチャつくブログ

IT系のお勉強のために、やってみたことをアウトプットしていきます。

MENU

Amazon Web Services で遊ぶ - AWS間でS3をコピーする -

f:id:tmt-tty:20190213231200p:plain

 はじめに

たまたま、別アカウントのAWSのS3の中身を本アカウントに移行する必要があったので、やってみた。

 

 やり方

基本的には、下記に記載のやり方を順番にやっていく。

aws.amazon.com

 

コピー元、コピー先のAWSアカウントの権限が無いとできない。

  1. コピー先アカウントの AWS アカウント ID 番号を取得します。

    docs.aws.amazon.com

  2. 次のようにして、コピー元アカウントから、コピー先アカウントがオブジェクトを取得できるようにするポリシーをコピー元バケットにアタッチします。
    重要: [プリンシパル] の値には、コピー先アカウントの AWS アカウント ID 番号を入力します。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "DelegateS3Access",
                "Effect": "Allow",
                "Principal": {"AWS": "222222222222"},
                "Action": ["s3:ListBucket","s3:GetObject"],
                "Resource": [
                    "arn:aws:s3:::sourcebucket/*",
                    "arn:aws:s3:::sourcebucket"
                ]
            }
        ]
    }

    バケットポリシーの追加は下記。
    docs.aws.amazon.com

  3. コピー先アカウントのユーザーまたはグループにポリシーをアタッチする。
    ユーザーがコピー元バケットからコピー先バケットにオブジェクトをコピーできるようにするポリシーを、コピー先アカウントの IAM ユーザーまたはグループにアタッチします。このポリシーは次の例のようになります。
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetObject"
                ],
                "Resource": [
                    "arn:aws:s3:::sourcebucket",
                    "arn:aws:s3:::sourcebucket/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:PutObject",
                    "s3:PutObjectAcl"
                ],
                "Resource": [
                    "arn:aws:s3:::destinationbucket",
                    "arn:aws:s3:::destinationbucket/*"
                ]
            }
        ]
    }
    ポリシーをユーザーにアタッチするやり方は下記

    docs.aws.amazon.com

  4. コピー元バケットからコピー先バケットにオブジェクトをコピーする。

    コマンド実行にはAWS CLIが必要です。

    docs.aws.amazon.com
    同期するコマンドを実行します。

    aws s3 sync s3://sourcebucket s3://destinationbucket

 

こんな感じで同期が進んでいきます。

f:id:tmt-tty:20190213230158p:plain