😀
別アカウントのS3バケットに転送する手順
概要
- いくつか記事がありますが、ただのデータ移行という前提では簡単にできるので記事として書いておきます。
前提条件
- 転送元
- アカウントA
- 転送先
- アカウントB
手順
アカウントAでの作業
1. アカウント個別の設定を入れます。
S3のアカウント名は、AWS全体でユニークなIDがあります。Account Aにてbucketを適当に作ると、デフォルトではそのユーザのアクセス権限が付与されているので、そこからログイン中のIDがわかります。
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>"
]
}
]
}
例:
アカウントBでの作業
アカウントBの認証を設定している前提で、普通にaws s3コマンドを発行すれば終わりです。
% aws s3 sync s3://minedia-source-bucket/ s3://minedia-destination-bucket/
平均して260MB/sで転送出来ていまいました。
Discussion