2014年9月3日水曜日

ConoHaのオブジェクトストレージサービスについて。


このエントリーをはてなブックマークに追加


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

0 件のコメント:

コメントを投稿