Written by TSUYOSHI

AWS CLI でAWS S3にファイルを簡単に移行する方法 【Linuxサーバ間でS3へのアップロード/ダウンロード】

AWS PROGRAMMING SERVER

既存のオンプレミス環境にあるファイル(画像ファイルなど)を、まとめて簡単に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

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でバケット内の画像をすべて公開する方法

ご参考になれば幸いです。

※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています