2014-03-16

boto から Apache Libcloud に乗り換えるかも

簡単な管理ツール+管理画面を作ることになり、以前からやってみたかった Python 3 での開発を試みた。AWS の S3 にファイルをアップロードするタスクがあるのだけれど、boto は Python 3 で使えない。

今回は Apache Libcloud を使うことにした。いろんなクラウドサービスを単一のインタフェースで扱おう、というライブラリだ。S3 に特化した操作をするのは難しいかも知れないけれど、今回はシンプルな KVS サービスとして使うので、これでよい。


from libcloud.storage.types import Provider
from libcloud.storage.providers import get_driver
ACCESS_KEY_ID, SECRET_ACCESS_KEY = 'chinko', 'manko'
driver_class = get_driver(Provider.S3_AP_NORTHEAST)
driver = driver_class(ACCESS_KEY_ID, SECRET_ACCESS_KEY)
container = driver.get_container(container_name='my-bucket-name')
with open('tenga.txt', 'rb') as iterator:
driver.upload_object_via_stream(iterator=iterator, container=container, object_name='tenga')
view raw gistfile1.py hosted with ❤ by GitHub
ただ、Fabric が Python 3 に対応していなかったので、結局 2.7 で書くことになっている。