2013-01-24

S3バケットをアカウントを跨いでコピーしてみた

この方法は同じアカウント内でも利用できるので
バケット名の変更、リージョンの変更っていうことも別のバケットを作成してコピーすることで実現可能

利用したツールはDragonDiskというS3に対応したクライアントツール
まずは、コピー先となるアカウントのAWS Management ConsoleのS3の項目で、コピー元のアカウントに対してアクセス権限を付与
  1. 設定するバケット名をクリック
  2. Permissionsのところをクリックして開く
  3. Edit bucket policyをクリック
  4. bucket policyを入力してSaveをクリック
  5. PermissionsのところのSAveをクリック
bucket policyはこんな感じ
{
 "Version": "2008-10-17",
 "Id": "2c08cdf1-ddfc-4765-ac19-26b03a8e8b5e",
 "Statement": [
  {
   "Sid": "AllowUser",
   "Effect": "Allow",
   "Principal": {
    "AWS": "arn:aws:iam::<12桁の数字からなるAWSのユーザID>:root"
   },
   "Action": "s3:*",
   "Resource": [
    "arn:aws:s3:::[S3 bucket name]/*",
    "arn:aws:s3:::[S3 bucket name]"
   ]
  }
 ]
}
今回は、コピー先のS3バケットとその中のオブジェクトに対する全権限を付与しました
そして、いよいよDragonDiskの出番
DragonDiskにはコピー元のアカウントだけ登録されていればOK
  1. Rootのプルダウンからコピー元のアカウントを選択
  2. アクティブになったAdd external bucketをクリック
  3. コピー先になるS3バケット名を入力してOKをクリック
  4. 右ペインでもRootのプルダウンからコピー元のアカウントを選択
  5. ∞みたいなアイコンで追加されたコピー先のS3バケットを選択
  6. 左ペインでコピー元のS3バケットを選択
  7. コピー元のバケットのオブジェクトを選択し右ペインへドラッグアンドドロップ
以上で完了
約119.59GB
6,176ファイル
2,274フォルダ
のコピーが約1分で行えましたよヾ(*・ω・)シ
ちなみに、1ファイルで1GBぐらいあるとそれだけで1分ぐらい
52MBぐらいのファイルを東京→us-eastへのコピーだと70秒ぐらいを要しました

その際、Tools -> Options -> OperationsでMaximum number of concurrent operationsの値を256に
InterfaceのところでMaximum number of concurrent operationsの値を10に
変更して同時に行える処理量を増やしています

0 件のコメント:

コメントを投稿