😀

別アカウントのS3バケットに転送する手順

に公開

概要

前提条件

  • 転送元
    • アカウント A
  • 転送先
    • アカウント B

手順

アカウントAでの作業

1. アカウント個別の設定を入れます。

S3 のアカウント名は、AWS 全体でユニークな ID があります。Account A にて bucket を適当に作ると、デフォルトではそのユーザのアクセス権限が付与されているので、そこからログイン中の ID がわかります。

image.png

2. 移行元のbucketにbucket policyを入れます。


{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::<AWS ID of Account B>:user/<IAM account name on Account B>"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::<minedia-source-bucket>/*",
                "arn:aws:s3:::<minedia-source-bucket>"
            ]
        }
    ]
}

例:
image.png

アカウントBでの作業

アカウントBの認証を設定している前提で、普通にaws s3コマンドを発行すれば終わりです。

% aws s3 sync s3://minedia-source-bucket/ s3://minedia-destination-bucket/

平均して 260MB/s で転送出来ていまいました。

株式会社マインディア テックブログ

Discussion