Amazon S3 のファイルをまるっと別のバケットにコピーする

画像関係でいろいろテストしたいって場合に便利。
AWS CLIでオーケー。

状況
画像はAmazon S3に保存してある。
本番環境の画像でやるわけにはいかないから、テスト環境を本番環境に近づけたい。

AWS CLIをインストール

IAM

まずはIAMにいって、1人ユーザーをつくる。
Security Credentialsがもらえるので、ダウンロード。

Attach Policy でS3に関する権限を与えておく。

AWS CLIをインストール

Pythonあるかな。なかったらインストールしてください。

$ python --version

ダウンロード

$ curl -O https://bootstrap.pypa.io/get-pip.py

実行

$ sudo python get-pip.py

インストール

$ sudo pip install awscli

AWS CLIの設定

$ 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です。

  
複数アカウントを使いたい場合

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なんてあるんだ。便利ですね。

$ 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

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた