NEWSニュース&ブログ

AWSCLIで運用検討中の人必見!AWSCLIを使用したS3へのファイルコピー

この記事は最終更新から10年以上経過しています。内容が古くなっている可能性があります。

投稿日:2014/12/2

今回はAmazon Elastic Compute Cloud (以降EC2)で、Amazon Web Services (以降AWS)環境をコマンド操作可能なツールであるAWSCLIを使用して、Amazon Simple Storage Service (以降S3)へのファイルコピーの検証を行います。

AWSCLIとは

AWS コマンドラインインターフェイス(CLI)は、AWSサービスを管理する統合ツールです。
手動で管理していた作業を、コマンドラインからAWSサービスを制御し、スクリプトで自動化することができるツールです。
AWSCLIコマンドラインについてはAWSが提供しているマニュアルを参照して下さい。
http://aws.amazon.com/jp/cli/

AWSCLIコマンドライン リリースノート
https://aws.amazon.com/releasenotes/CLI?browse=1
制御可能なAWSサービスのリストは、各リリースノートの「Supported API Versions」に記載があります。

AWSCLI ユーザガイド
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html

AWSCLI ユーザガイド Installing the AWS Command Line Interface
http://docs.aws.amazon.com/cli/latest/userguide/installing.html

AWSCLI ユーザガイド Configuring the AWS Command Line Interface
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

AWSCLI コマンドライン リファレンス
http://docs.aws.amazon.com/cli/latest/reference/

検証で使用する環境と実施する内容

検証で使用する環境を紹介します。AWS上にEC2インスタンスを一つ作成し、S3にファイルをコピーします。EC2インスタンスにはAWSCLIに必要なパッケージをインストールします。
作業は検証環境上のクライアント端末から接続します。

図1:検証環境の構成 ・実施する内容
EC2インスタンスとS3バケットが作成されているものとします。

① Python環境確認
② python-pip インストール
③ AWSCLIインストール
④ AWSCLI設定
⑤ S3へファイルコピー

では検証結果を見ていきます。

① Python環境確認

(1)インストール済みPythonのバージョン確認
今回はPipというツールを使用しawscliをインストールします。PipはPythonベースのツールになり、Python 2.6.3以降がPipを使用したawscliのインストール要件となります。
[root@ip-10-0-0-XX ~]# python --version
Python 2.6.6

 

(2)Pythonインストール
インストール済みの場合、Pythonのアップデートと依存性のあるパッケージのアップデートが実施されます。
「Is this ok [y/N]:」と表示されたら「y」を入力しエンターを押します。
[root@ip-10-0-0-XX ~]# yum install python
Loaded plugins: amazon-id, refresh-packagekit, rhui-lb, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package python.x86_64 0:2.6.6-37.el6_4 will be updated
(中略)
Dependencies Resolved
=============================================================================
 Package     Arch   Version              Repository                        Size
=============================================================================
Updating:
 python      x86_64 2.6.6-52.el6         rhui-REGION-rhel-server-releases  74 k
Updating for dependencies:
 openssl     x86_64 1.0.1e-30.el6_6.4    rhui-REGION-rhel-server-releases 1.5 M
 python-libs x86_64 2.6.6-52.el6         rhui-REGION-rhel-server-releases 5.3 M

Transaction Summary
=============================================================================
Upgrade       3 Package(s)

Total download size: 6.9 M
Is this ok [y/N]: y
Downloading Packages:
(中略)
Updated:
  python.x86_64 0:2.6.6-52.el6

Dependency Updated:
  openssl.x86_64 0:1.0.1e-30.el6_6.4      python-libs.x86_64 0:2.6.6-52.el6

Complete!
[root@ip-10-0-0-XX ~]#

 

② Python-Pipインストール

(1)Pipインストール
Pythonアップデート後、Pipをインストールします。
[root@ip-10-0-0-XX ~]# easy_install pip
Searching for pip
Reading http://pypi.python.org/simple/pip/
Best match: pip 1.5.6
Downloading https://pypi.python.org/packages/source/p/pip/pip-1.5.6.tar.gz#md5=01026f87978932060cc86c1dc527903e
Processing pip-1.5.6.tar.gz
Running pip-1.5.6/setup.py -q bdist_egg --dist-dir /tmp/easy_install-vuBjAo/pip-1.5.6/egg-dist-tmp-asn64K
warning: no files found matching 'pip/cacert.pem'
warning: no files found matching '*.html' under directory 'docs'
warning: no previously-included files matching '*.rst' found under directory 'docs/_build'
no previously-included directories found matching 'docs/_build/_sources'
Adding pip 1.5.6 to easy-install.pth file
Installing pip script to /usr/bin
Installing pip2.6 script to /usr/bin
Installing pip2 script to /usr/bin

Installed /usr/lib/python2.6/site-packages/pip-1.5.6-py2.6.egg
Processing dependencies for pip
Finished processing dependencies for pip
[root@ip-10-0-0-XX ~]#

 

③ AWSCLIインストール

引き続きAWSCLIをインストールします。

(1)Pipツールを使用したAWSCLIインストール
[root@ip-10-0-0-XX ~]# pip install awscli
Downloading/unpacking awscli
Downloading awscli-1.5.6.tar.gz (255kB):   
Downloading awscli-1.5.6.tar.gz (255kB):   1%  4.1kB  
Downloading awscli-1.5.6.tar.gz (255kB):   3%  8.2kB
(中略)
Running setup.py install for awscli
  changing mode of build/scripts-2.6/aws from 644 to 755
  changing mode of build/scripts-2.6/aws.cmd from 644 to 755
(中略)
  Running setup.py install for pyasn1
Successfully installed awscli botocore bcdoc six colorama docutils rsa jmespath python-dateutil ordereddict simplejson pyasn1
Cleaning up...
[root@ip-10-0-0-XX ~]# echo $?
0
[root@ip-10-0-0-XX ~]#

 

(2)AWSCLI確認
AWSCLIが正しくインストールされたことを確認します。
[root@ip-10-0-0-XX ~]# which aws
/usr/bin/aws

[root@ip-10-0-0-XX ~]# aws --version
aws-cli/1.5.6 Python/2.6.6 Linux/2.6.32-358.14.1.el6.x86_64

 

④ AWSCLI設定

AWSサービスに接続するためにはクレデンシャル情報を設定する必要があります。
AWSCLI設定により、セキュリティクレデンシャル・デフォルトリージョン・出力フォーマットを設定します。
クレデンシャルの確認方法については、以下を参照してください。
RDS for Oracleのバックアップ検討中の人注目! CLIを使用した手動バックアップ

(1)AWSCLI設定
以下のコマンドを実行し、AWSCLI設定を行います。
(AWSCLIを使用するユーザ毎に実施するか、設定ファイルに記載します。)

AWSCLI ユーザガイド Configuring the AWS Command Line Interface
http://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html

設定項目
 ・AWS Access Key ID [None]: (クレデンシャルを確認し入力)
 ・AWS Secret Access Key [None]: (クレデンシャルを確認し入力)
 ・Default region name [None]: ap-northeast-1 (東京リージョン)
 ・Default output format [None]: text(出力フォーマット:テキスト)
[root@ip-10-0-0-XX ~]# aws configure
AWS Access Key ID [None]: ********************
AWS Secret Access Key [None]: ******************************
Default region name [None]: ap-northeast-1
Default output format [None]: text
[root@ip-10-0-0-XX ~]#

 

(2)AWSCLIコマンド確認
以下のコマンドを実行し、AWSCLIコマンドが正しく動作することを確認します。

aws ec2 describe-instances:EC2インスタンスの情報取得コマンド
[root@ip-10-0-0-XX ~]# aws ec2 describe-instances
(出力結果省略)

 

⑤ S3へファイルコピー

それでは、EC2からS3へファイルコピーをしてみます。

(1)S3バケットのディレクトリ参照
S3 バケットのディレクトリを確認します。

aws s3 ls s3://<bucket_name>/<directory_name>/

例として、以下のように出力されます。
(下記はディレクトリにファイルがない場合の表示です。)
[root@ip-10-0-0-XX ~]# aws s3 ls s3://mybucket/mydirectory/
2014-10-24 00:02:46          0 

 

(2)S3へファイルコピー
以下のコマンドを実行し、指定ディレクトリの全てのファイルをコピーします。

aws s3 cp <directory>/*.* s3://<bucket_name>/<directory_name>/

例として、以下のように出力されます。
[root@ip-10-0-0-XX ~]# aws s3 cp /test/directory/*.* s3://mybucket/mydirectory/
upload: ./201410221630.txt to s3://mybucket/mydirectory/201410221630.txt

 

(3)S3バケットのディレクトリ参照
S3 バケットのディレクトリを確認します。

aws s3 ls s3://<bucket_name>/<directory_name>/

例として、以下のように出力されます。
[root@ip-10-0-0-XX ~]# aws s3 ls s3://mybucket/mydirectory/
2014-10-24 00:02:46          0 
2014-10-24 00:32:34     139527  201410221630.txt
(以下省略)

 

AWSコンソールでS3バケットを確認しますと、例として以下のように表示されます。

図2:AWSマネジメントコンソールS3バケット 以上で、AWSCLIを使用したS3へのファイルコピーが確認できました。

                                                           以上