AWS CLI でAWS S3にファイルを簡単に移行する方法 【Linuxサーバ間でS3へのアップロード/ダウンロード】
既存のオンプレミス環境にあるファイル(画像ファイルなど)を、まとめて簡単にAWS S3環境へ移行する方法をお伝えします。
いろいろな方法がありますが、「AWS CLI」をインストールして操作するのが簡単です。
AWS CLIのインストール&設定 (事前準備)
1. Python3のインストール
AWS CLIを動かすにはPythonが必要になるため、インストールします。
※CentOSの場合
$ sudo yum install python3
Python3を入れるとpipも自動でインストールされます。
2. Python & pipがそれぞれインストールされたことをバージョン表示をして確認します
▼python3 -V
でpythonのバージョンを確認
$ python3 -V
Python 3.6.8
▼pip3 --version
でpipのバージョンを確認
$ pip3 --version
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)
3. pipを使用して、AWS CLIをインストールします。
$ sudo pip3 install awscli
4. AWS CLIがインストールされたことを、バージョン表示をして確認します。
$ aws --version
aws-cli/1.18.124 Python/3.6.8 Linux/3.10.0-1127.8.2.el7.x86_64 botocore/1.17.47
5. 「aws configure」で、AWS CLIに作成したIAMユーザーを紐づけします
$ aws configure
AWS Access Key ID [None]: アクセスキーID
AWS Secret Access Key [None]: シークレットアクセスキー
Default region name [None]: リージョン(東京の場合はap-northeast-1)
Default output format [None]: json
- アクセスキーはIAMより使いたい権限のものを入力します。
- リージョンは以下を参考にします
https://docs.aws.amazon.com/ja_jp/general/latest/gr/rande.html#regional-endpoints
6. AWS CLIにIAMユーザーが紐づいたことを確認します。
$ aws sts get-caller-identity
{
"UserId": "xxxxxxxxxxxxxxxxxxxxx",
"Account": "xxxxxxxxxxxx",
"Arn": "arn:aws:iam::xxxxxxxxxxxx:user/xxxxxxx"
}
これでAWS CLIによりAWSのリソースを操作できるようになりました。
Amazon CLI からファイルをアップロード(ダウンロード)する
- 「aws s3 cp [ファイル名] [バケット名]」でS3にアップロードができます。
- 逆に「aws s3 cp [バケット名] [ファイル名]」とすると、S3からローカルにダウンロードをすることができます。
- ディレクトリごとコピーする場合は、“–recursive”オプションを追加します。
以下は実際の操作例です。
1. 作成したAWS S3のバケットを表示する。(事前にS3でバケット名を作成している前提)
$ aws s3 ls
2. ローカルのファイルを作成したバケットにコピーします。
「aws s3 cp 【コピー元ファイル名】 s3://【バケット名】
」
例1: ファイルのコピー
「test.txt」をS3で作成したバケット「test-backets」直下にコピーする例
aws s3 cp コピー元ファイルPath s3://バケット名
$ aws s3 cp ./test.txt s3://test-backets/
upload: ./test.txt to s3://test-backets/test.txt
例2: ディレクトリのコピー
「test_directory」というディレクトリの中身をS3で作成したバケット「test-backets」の「test_directory」直下へコピーする例
aws s3 cp コピー元ディレクトリPath s3://バケット名/ディレクトリPath --recursive
$ aws s3 cp ./test_directory s3://test-backets/test_directory --recursive
※特定のファイルのみ移動したければ「--exclude
」と「--include
」オプションをさらに組み合わせて使います
3. バケットにファイルがコピーされたことを確認します。
$ aws s3 ls s3://バケット名
以上となります。
大量の画像データなどをS3へ移行する場合などは、Linux間でデータの移行をすると簡単でスムーズに対応できるのでオススメです。
S3へファイルコピー後に大量のファイルを一気に公開設定したい場合は別記事を参考にしてみてください。
» Amazon S3でバケット内の画像をすべて公開する方法
ご参考になれば幸いです。
※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています