LoginSignup
9
9

More than 5 years have passed since last update.

AWSでS3バケットを移行(コピー)する(アカウント間も可能)

Last updated at Posted at 2015-04-30

AWSでS3のファイルを別のバケットにコピーするスクリプトを見つけたけれど、2015/4時点では少し変更する必要があった。

kntmrkm/bucket2bucket

スクリプトの実行は以下のように行う。

ruby bucket2bucket.rb -i [アクセスキー] -k [シークレットキー] -s [コピー元のバケット名] -d [コピー先のバケット名] -v

アクセスキー、シークレットキーはコピー先のアカウントのものを使用する。

コピー元が異なるアカウントの場合

バケットのプロパティから、アクセス許可の設定に「バケットポリシーの追加」という項目があるので、そこにポリシーを追加する。

ポリシー例

{
  "Id": "Policy*************",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt*************",
      "Action": "s3:*",
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucket1/*",
                   ※ バケット名をコピー元のものに変更
      "Principal": {
        "AWS": [
          "arn:aws:iam::111111111111:root"
          ※ アカウントのIDをコピー先のものに変更
        ]
      }
    }
  ]
}

オリジナルのスクリプトと異なるところ

  • AWS-SDKのバージョン違いがあったのでAWS-SDK-V1を使用するように修正
  • ACLのコピーを行うコードの変更 ※ コピー後はpublic_readになるようになってます
    • ここらへんの権限コピーは試してません(色々エラーが出てたのでpublic_readを直接指定しているだけ)
9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9