Symfoware

Symfowareについての考察blog

S3のテストサーバー「fake-s3」をインストールし、Python(boto)から接続する

Amazon S3にファイルを登録するプログラムを開発している時、
テスト中に実行したリクエストの料金が気になります。

そんな時はS3と同じAPIを持つテストサーバー「fake-s3」
https://github.com/jubos/fake-s3

Debian 7にインストールして動かしてみます。


RVM



Ruby製のツールなので、まずはRubyをインストールします。
今回はRVMでRuby 2.2.1をインストールしました。

ざっくり手順です


# apt-get install curl
# gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# \curl -L https://get.rvm.io | bash -s stable
# source /etc/profile.d/rvm.sh
# rvm install 2.2.1



インストール出来ました。


# ruby -v
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]






fakes3



gemでインストールできます。


# gem install fakes3




ファイルを保存するディレクトリを作成。
ディレクトリとポートを指定して起動します。


# mkdir -p /var/lib/fakes3_root
# fakes3 -r /var/lib/fakes3_root -p 4567






boto



接続はbotoを使用し、Ubuntu 14.04から行いました。
easy_installでインストール。


$ sudo easy_install boto




https://github.com/jubos/fake-s3/blob/master/test/botocmd.py
こちらのテストコードとbotoのマニュアル
http://boto.readthedocs.org/en/latest/s3_tut.html
上記を参考にプログラムを書いてみます。


  1. # -*- coding:utf-8 -*-
  2. from boto.s3.connection import S3Connection, OrdinaryCallingFormat
  3. from boto.s3.key import Key
  4. # コネクション作成
  5. s3 = S3Connection(
  6.         is_secure=False,
  7.         aws_access_key_id = 'dummy_key',
  8.         aws_secret_access_key = 'dummy_access_key',
  9.         port = 4567,
  10.         host = '192.168.1.104',
  11.         calling_format=OrdinaryCallingFormat()
  12.     )
  13. # testという名前のバケットを作成
  14. bucket = s3.create_bucket('test')
  15. # test_keyでデータを登録
  16. k = Key(bucket)
  17. k.key = 'test_key'
  18. k.set_contents_from_string('This is a test of fakes3')
  19. # 登録したデータを取得
  20. print k.get_contents_as_string()




ミソはcalling_formatにOrdinaryCallingFormatを指定する点。

S3は通常だと

http://[bucket_name].s3.amazon.com/

のようなURLでアクセスしますが、OrdinaryCallingFormatを指定することで、

http://s3.amazon.com/[bucket_name]

というアクセス形式になるようです。


また、aws_access_key_idやaws_secret_access_keyはチェックしていないようで、
適当な指定でOKです。

実行してみると、ちゃんとデータの登録と取得が行えました。


$ python sample.py
This is a test of fakes3





関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2015/03/30(月) 23:18:05|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<PHP aws-sdkでPathStyleを指定し、fake-s3からデータを取得する | ホーム | Debian 7(wheezy)にJava 8(OracleVM)をインストールする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1707-efa4957e
この記事にトラックバックする(FC2ブログユーザー)