Google App EngineとGoogle Cloud Storageが連携できるようにAPIが用意されつつあるので試してみた。
まず、AppEngineからCloudStorageにデータを保存するのは簡単。
files.gs.createしてopenしてwriteするだけ。
こんな感じ:
write_path = files.gs.create(
filename,
mime_type='application/octet-stream',
acl='public-read',
cache_control='max-age=31536000',
)
with files.open(write_path, 'a') as fp:
fp.write(data)
finalizeするまでは追記可能なので、ログをどんどん書き込むといった用途にも使える。
次にImages APIのget_serving_urlで使おうとしたところ、出来なかった。
まず、GSのファイル名からBlobKeyを作成するところまでは出来る。
gs_key = blobstore.create_gs_key(filename)次に、このBlobKeyをget_serving_urlに渡す。
images.get_serving_url(gs_key)
開発環境だと、get_serving_urlは成功するが、スタブにバグがあって、そのURLへアクセスすると500になる。
プロダクションだとget_serving_urlがInvalidBlobKeyErrorになる。
というわけで今のところPicasa経由での表示は出来ない。
これが使い方の問題なのか、まだget_serving_urlが未対応なのか、どちらかは分からない。
なお、CloudStorage上のオブジェクトに直接アクセスする分には問題ない。
追記:
現時点では、get_serving_urlはGoogle Cloud Storageをサポートしていないそうです。
http://code.google.com/p/googleappengine/issues/detail?id=7441#c2
0 件のコメント:
コメントを投稿