読者です 読者をやめる 読者になる 読者になる

S3を使った開発にbaltic-avenueを利用する

AWS S3 GAE

baltic-avenueはGoogle App Engine上で動くAmazon S3のクローン。

これを使って実際のサービスをやるのはどうかと思うが、開発に使うのは便利かもしれないと思って試してみた。ソーシャルゲームでじゃぶじゃぶ儲けていている会社ならばともかく、我々貧民は開発時のS3の料金を払う金もないのである。

オープンソースのS3のクローンとしては他にPark Placeがあるが、こちらはまだ試していない。

使い方はFAQの「自前のインスタンスを立ち上げるにはどうすればよいですか」にある通り、

  • アプリケーションのソースをダウンロードする
  • ユーザーアカウントをprincipals_public.pyに追加
  • GAE SDKの開発サーバーを起動
  • /adminにアクセスして"update principals"を実行
  • app.yamlを修正
  • GAEのプロダクション環境にアップロード

でOK。開発に使うだけならばGAEの開発サーバーで十分かもしれない。

Pythonbotoで利用する例。

from boto.s3.connection import S3Connection, OrdinaryCallingFormat
from boto.s3.key import Key

s3 = S3Connection("key", "secret",
                  host="localhost", port=8080, is_secure=False,
                  calling_format=OrdinaryCallingFormat())

bucket = s3.get_bucket("egg")
key = Key(bucket, "spam")
print len(key.get_contents_as_string())

PHPServices_Amazon_S3で利用する例。

<?php
require_once 'Services/Amazon/S3.php';

$s3 = Services_Amazon_S3::getAccount('key', 'secret');

$bucket = $s3->getBucket('egg');
$bucket->endpoint = 'localhost:8080';
$bucket->requestStyle = Services_Amazon_S3_Resource_Bucket::REQUEST_STYLE_PATH;

$object = $bucket->getObject('spam');
$object->load();
var_dump(strlen($object->data));