運営者プロフィール

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

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

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

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

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

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

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を使った方が良いように思います。

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

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