ConoHa のサービスにオブジェクトストレージサービスが実装されました。OpenStack Swift ベースとの事です。
https://www.conoha.jp/blog/tech/2642.html
大体の使い方はここに書いてあります。
https://www.conoha.jp/guide/guide.php?g=48
サンプルに書いていない、アップロードしたファイルをクライアントに対して直接参照させる方法について書いてみます。これは画像配信等で有効です。
$ pip install python-keystoneclient python-swiftclient
エラーが出る場合はOS側のライブラリ等が足りません。エラーメッセージを見れば大体何が足りないかはわかると思います。
コンパネから取得できる情報を以下の変数に設定
$ vim openrc_conoha
export OS_AUTH_URL=API Auth URL
export OS_TENANT_ID=テナントID
export OS_USERNAME=ユーザー名
export OS_PASSWORD=自分のパスワード
$ source openrc_conoha
$ swift stat
Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Containers: 0
Objects: 0
Bytes: 0
Meta Quota-Bytes: 110058536960000
X-Timestamp: 1409734987.60990
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
コンテナを作成します。
$ swift post container01
$ swift list
container01
$ swift stat container01
Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Container: container01
Objects: 0
Bytes: 0
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Timestamp: 1409736843.00552
X-Trans-Id: tx2eb6ef4622c34c1a90c62-005406e0a8
Content-Type: text/plain; charset=utf-8
ファイルのアップロードを行います。
$ cat hoge.txt
hogehoge
$ swift upload container01 hoge.txt
hoge.txt
$ swift stat container01
Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Container: container01
Objects: 1
Bytes: 9
Read ACL:
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Timestamp: 1409736843.00709
X-Trans-Id: tx70d3fe1c2c534d2d8f513-005406e148
Content-Type: text/plain; charset=utf-8
コンテナの属性を変更して、誰でも読み取り可能にします。
$ swift post --read-acl ".r:*,.rlistings" container01
$ swift stat container01
Account: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Container: container01
Objects: 1
Bytes: 9
Read ACL: .r:*,.rlistings
Write ACL:
Sync To:
Sync Key:
Accept-Ranges: bytes
X-Trans-Id: txd0161d15696c407cadd5b-005406e2d3
X-Timestamp: 1409736843.00552
Content-Type: text/plain; charset=utf-8
オブジェクトストレージのエンドポイントを取得します。この値はスタティックなので、一度取得してしまえば変更されることはありません。
$ keystone endpoint-get --service object-store
+------------------------+---------------------------------------------------------------------------+
| Property | Value |
+------------------------+---------------------------------------------------------------------------+
| object-store.publicURL | https://objectstore-r1nd1001.cnode.jp/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------------+---------------------------------------------------------------------------+
xxxxxxxxxxxx 部分にはテナントIDが入ります。
このアドレスに、コンテナ名/ファイル名 をつけてアクセスすると、直接ファイルの中身が参照できます。
$ curl https://objectstore-r1nd1001.cnode.jp/v1/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/container01/hoge.txt
hogehoge
上記の例では Swift のCLIを利用していますが、もちろんReST APIを利用してもよいですし、Pythonであれば swiftclient を import して、プログラムの中からストレージを扱うことが可能になります。
プログラムからアップロード等する場合の例はこちらを参考にしてください。
http://aikotobaha.blogspot.jp/2014/08/how-to-use-python-swiftclient.html