あいしんくいっと

ありきたりだけど、少しだけ役に立つことをありのままに書こうと思う。

【AWS】みんな大好きS3のアップロードツールを試してみた!

time 2015/03/30

朝晩はまだ少し寒いものの、桜もチラホラ咲き始めて来て、春の到来を感じる今日この頃です。

さて、今回はAWSを利用する上で外す事の出来ないS3へのデータアップロードツールを試してみたいと思います。
S3へデータアップロードを行う手段として、パッと思いつくだけでも下記があると思います。

  • AWSコンソール
  • Cyberduck、Cloudberry、S3Browser
  • awscli
  • s3cmd
  • s3fs
  • AWS SDK(JAVA、Ruby、PHP等々)

まだまだありそうですが、私が思いつくのは上に挙げたもの達ですね。
データを一つ、二つS3にアップロードするならAWSコンソールを使えば良いとは思うのですが、データが増えるとCLIを使った方が便利であると思います。

ですので、CLIで使えるものを幾つか試してみたいと思います。

sponsored link

S3のアップロードツールを試してみた!

awscli

まず、私が普段愛用しているawscliを使ったS3アップロードを試してみたいと思います。
awscliのインストールについては下記のエントリを参照してください。

参考 【AWS】awscliを入れてみた(CentOS7)

では、実際に試してみたいと思います。
・1GBのデータファイル作成

# dd if=/dev/zero of=1GB.dat bs=1024 count=1000000
1000000+0 records in
1000000+0 records out
1024000000 bytes (1.0 GB) copied, 20.4377 s, 50.1 MB/s

・S3へデータアップロード(s3 cp)

# time aws s3 cp /root/work/1GB.dat s3://i-think-it.net
upload: ./1GB.dat to s3://i-think-it.net/1GB.dat

real 0m16.268s
user 0m5.050s
sys 0m1.435s

1GBファイルが30秒程度でアップロードする事が出来ました。

・S3へデータアップロード(s3 sync)
このsyncオプションは更新があったデータのみをアップロードしてくれるので、複数のデータをS3にアップロードするのに便利です。
ただし、タイムスタンプしか見ていないっぽく、純粋な差分コピーでは無いのがたまにキズですが・・・。

# time aws s3 sync /root/work s3://i-think-it.net

real 0m0.542s
user 0m0.215s
sys 0m0.046s

・ファイルを削除して再度実行

# aws s3 rm s3://i-think-it.net/1GB.dat
delete: s3://i-think-it.net/1GB.dat
[root@hinemos work]# time aws s3 sync /root/work s3://i-think-it.net
upload: ./1GB.dat to s3://i-think-it.net/1GB.dat

real 0m15.890s
user 0m4.575s
sys 0m1.286s

s3cmd

次にs3cmdを試してみたいと思います。
s3cmdは別途インストールが必要になりますので、適当なディレクトリにwgetして簡単にインストールします。

# wget http://sourceforge.net/projects/s3tools/files/s3cmd/1.5.2/s3cmd-1.5.2.tar.gz
# tar zxvf s3cmd-1.5.2.tar.gz
# cd s3cmd-1.5.2 && python setup.py install
# s3cmd --configure

Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.

Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: <span style="color: #ff0000;"><アクセスキー></span>
Secret Key: <span style="color: #ff0000;"><シークレットキー></span>
Default Region [US]: <span style="color: #ff0000;">ap-northeast-1</span>

Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3
Encryption password:
Path to GPG program [/bin/gpg]:

When using secure HTTPS protocol all communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [No]:

On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name:

New settings:
Access Key: <span style="color: #ff0000;"><アクセスキー></span>
Secret Key: <span style="color: #ff0000;"><シークレットキー></span>
Default Region: ap-northeast-1
Encryption password:
Path to GPG program: /bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0

Test access with supplied credentials? [Y/n]
Please wait, attempting to list all buckets...
Success. Your access key and secret key worked fine :-)

Now verifying that encryption works...
Not configured. Never mind.

Save settings? [y/N] <span style="color: #ff0000;">y</span>
Configuration saved to '/root/.s3cfg'

・S3へデータアップロード

# time s3cmd put -r 1GB.dat s3://i-think-it.net
1GB.dat -> s3://i-think-it.net/1GB.dat [part 1 of 66, 15MB]
15728640 of 15728640 100% in 0s 21.83 MB/s done
1GB.dat -> s3://i-think-it.net/1GB.dat [part 2 of 66, 15MB]
15728640 of 15728640 100% in 0s 17.01 MB/s done
~以下、略~
real 1m5.880s
user 0m12.950s
sys 0m2.287s

 結果

今回はawscliとs3cmdを試しましたが、両者であればawscliの方が早いという結果でした。

  • awscli ・・・ 0m16.268s
  • s3cmd・・・ 1m5.880s

※1GBのデータをアップロードした場合

awscliはマルチアップロードが効いているのでアップロード速度が速いのだと推測されます。
しかも、AWSが出しているCLIツールなので安定感もあります。
なので、CLIコマンドを使う場合はawscliを使った方が良いように思います。

以上、あいしんくいっとでした。

sponsored link

down

コメントする





*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

Author

あいしんくいっと

あいしんくいっと

あいしんくいっとの中の人。

ありきたりだけど、自分なりの視点で少しでも人の役に立つ記事をありのままに書くをモットーに。 たまには役立つことが書けると良いかな。

サイトポリシーはこちら

聞きたいことがあれば、気軽にツイートください♪可能な範囲でお答えします。
follow us in feedly

Twitter

オススメ記事

アーカイブ