Amazon S3 のファイルをまるっと別のバケットにコピーする
画像関係でいろいろテストしたいって場合に便利。
AWS CLIでオーケー。
状況
画像はAmazon S3に保存してある。
本番環境の画像でやるわけにはいかないから、テスト環境を本番環境に近づけたい。
AWS CLIをインストール
IAM
まずはIAMにいって、1人ユーザーをつくる。
Security Credentialsがもらえるので、ダウンロード。
Attach Policy でS3に関する権限を与えておく。
AWS CLIをインストール
Pythonあるかな。なかったらインストールしてください。
1
$ python --version
ダウンロード
1
$ curl -O https://bootstrap.pypa.io/get-pip.py
実行
1
$ sudo python get-pip.py
インストール
1
$ sudo pip install awscli
AWS CLIの設定
1
2
3
4
5
6
$ aws configure
AWS Access Key ID [None]: xxxxxxx
AWS Secret Access Key [None]: xxxxxxxxxx
Default region name [None]: ap-northeast-1
Default output format [None]: json
ここでIAMで取得した情報を入力すれば完了。
Tokyo リージョンはap-northeast-1です。
複数アカウントを使いたい場合
1
2
3
4
5
6
aws configure --profile YOURNAME
=>
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
すきな名前を付けて、上と同じことをする。
実行の際には
aws --profile PROFILE_NAME s3 sync
のようにオプションで名前を渡してあげればOK。
コピーする
実際にコピーするのはコレでOK。
syncなんてあるんだ。便利ですね。
1
$ aws s3 sync s3://bucket-name/uploads s3://bucket-name-dev/uploads
bucket-name から bucket-name-dev にコピーしています。
すでにあるファイルは無視されるようなので、
最新の状態にしたい場合は、いつもこのコマンドで良いようです。
参考
Installing the AWS Command Line Interface - AWS Command Line Interface
Configuring the AWS Command Line Interface - AWS Command Line Interface
amazon s3 - AWS S3 copy files and folders between two buckets - Stack Overflow