AWS S3 へのファイルのアップロードをコマンドラインから行うAWS Command Line Interfaceを試す

photo by jeff_golden *

はじめに

先日S3 経由でGlacier に写真データをアップロードする記事を書きました。

大切な写真をAmazon AWS にバックアップし99.999999999%の堅牢性を得るための方法 - zonomasaの日記

最後にアップロードを開始したところで前回の記事は終了しているのですが、その後ファイルのアップロードが完了しない問題に苦しめられていました。

どうやらファイルサイズが大きすぎてセッションがタイムアウトしてしまうようです。

そこで今回はAWS の公式コマンドラインツールを用いてS3 へのファイルのアップロードに再チャレンジしてみます。

AWS Command Line Interface とは

AWS Command Line Interfaceは、その名の通りAWSコマンドラインから操作するためのツールです。

S3 をはじめEC2 などいくつかのサービスの操作ができます。

AWS Command Line Interface のインストール

Getting Set Up with the AWS Command Line Interface - AWS Command Line Interface

公式のインストール方法を参考に、Mac OSX 10.9.1にAWS Command Line Interfaceをインストールします。

以下のインストール方法では、コマンドのインストール要件であるpython 2.6.3以降がインストールされており、かつAWSのアカウントを持っていることを前提とします。

bundled installer というインストーラ経由でのインストール行います。

$ curl -O https://s3.amazonaws.com/aws-cli/awscli-bundle.zip
$ unzip awscli-bundle.zip
$ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws

AWS Command Line Interface の設定

AWS Command Line Interface でAWS にアクセスするにはキーとシークレットの設定が必要です。

AWS のマイアカウントページを開きます。 アカウント・コンソールから"MyAccount"を選びます。

左のメニューのセキュリティ証明書をクリックします。

f:id:zonomasa:20140109234830p:plain

今後はこのページに変更が入るようです。理解します。

f:id:zonomasa:20140109234827p:plain

"新しいアクセスキーを作成する" を押しましょう。

f:id:zonomasa:20140109234834p:plain

赤枠の部分がキーです。右の"表示"を押すことでシークレットを確認できます。

f:id:zonomasa:20140109234836p:plain

キーとシークレットが確認できたら、AWS Command line Interface にこれらを設定します。

$ /usr/local/bin/aws configure
   AWS Access Key ID [None]: (先ほど確認したのキーを入力します)
   AWS Secret Access Key [None]: (先ほど確認したシークレットを入力します)
   Default region name [None]: Tokyo
   Default output format [None]:

これで最低限の設定が完了しました。

AWS Command Line Interface を使ってみる

まずはS3 に存在するBucket を確認してみましょう。

 $ /usr/local/bin/aws s3 ls
 2014-01-05 21:53:33 photozonomasa    

先日作成したBucket が存在することを確認しました。

では目的であるiphotoのバックアップをアップロードします。

photoディレクトリにtar で固めたファイルが置いてあります。

ディレクトリとS3 のBucket を同期させるコマンド'sync' を使用します。さらに写真データは外部公開しないのでprivate 属性を付与します。

$ /usr/local/bin/aws sync photo s3://photozonomasa --acl private

アップロード完了まで気長に待ちましょう。

まとめ

AWS の公式コマンドラインツールであるAWS Command Line Interface を使用しS3 にファイルをアップロードする方法を紹介しました。

Amazon Web Servicesプログラミング ―APIの基礎からElastic Beanstalkの利用まで

Amazon Web Servicesプログラミング ―APIの基礎からElastic Beanstalkの利用まで