先週、IBM BluemixObject Storage サービスがベータを卒業して正式サービスになりました:
2015022101


SoftLayer 上に用意された Swift と呼ばれる標準的なオブジェクトストレージ機能を Bluemix を通じて提供するものです。5GB であれば無料サービスとして利用できます:
2015022102


では、この Bluemix 上の Object Storage サービスをクライアントから使う方法を紹介します。


1. Swift ツールの導入

このサービスを Linux(CentOS) から実際に利用するまでの手順を紹介します。このサービスを使うには swift と呼ばれるツール(swiftclient)が必要です。まずはこのツールを導入しましょう。

swift の導入は pip を使って行います。最初にこの pip を導入する必要がありますが、pip の導入に必要なライブラリをあらかじめまとめて導入しておきます:
# yum install fuse fuse-libs fuse-devel libattr-devel gcc gcc-c++ kernel-devel libxslt-devel

ここで導入した fuse ライブラリを読み込んでおきます:
# modprobe fuse

次に pip の導入に必要な Python 3 を導入します。Python 3 は yum ではインストールできないため、PUIAS から導入します。まずはそのための GPG Key をインストールします:
# cd /etc/pki/rpm-gpg/
# wget -q http://springdale.math.ias.edu/data/puias/6/x86_64/os/RPM-GPG-KEY-puias
# rpm --import RPM-GPG-KEY-puias

次に /etc/yum.repos.d/puias-computational.repo ファイルを以下の内容で作成します:
# vi /etc/yum.repos.d/puias-computational.repo

(以下を作成して保存)
[PUIAS_6_computational] name=PUIAS Computational Base mirrorlist=http://puias.math.ias.edu/data/puias/computational/$releasever/$basearch/mirrorlist gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-puias

作成したリポジトリファイルを使って yum で Python 3 一式をインストールします:
# yum install python3 python3-devel python3-libs python3-setuptools

Python 3 がインストールできていれば pip がインストールできます:
# wget -O - https://bootstrap.pypa.io/get-pip.py | python3

これでやっと pip の導入ができました。ではこの pip を使って keystoneclient と swiftclient をインストールします:
# pip install python-swiftclient
# pip install python-keystoneclient

ここまでの手順で swift コマンドが使えるようになっているはずです。


2. Object Storage サービスの追加と、環境変数の設定

Bluemix 上で Object Storage サービスを追加し、その資格情報を確認します:
2015022103


環境変数 VCAP_SERVICES の内容は以下の様な JSON 形式のテキストになっているはずです。これらのうち、赤字部分をメモしておきます(後で使います):
{
  "Object-Storage": [
    {
      "name": "Object Storage-7d",
      "label": "Object-Storage",
      "plan": "Free",
      "credentials": {
        "auth_url": "https://identity.open.softlayer.com",
        "project": "object_storage_(project)",
        "projectId": "(projectId)",
        "region": "dallas",
        "userId": "(userId)",
        "username": "Admin_(username)",
        "password": "(password)",
        "domainId": "(domainId)",
        "domainName": "(domainName)"
      }
    }
  ]
}

ここで取得した接続情報を Swift クライアント(Linux)の環境変数に(例えば /etc/bashrc などに)設定します:
export OS_USER_ID=(userId)
export OS_PASSWORD=(password)
export OS_PROJECT_ID=(projectId)
export OS_AUTH_URL=https://identity.open.softlayer.com/v3
export OS_REGION_NAME=dallas
export OS_IDENTITY_API_VERSION=3
export OS_AUTH_VERSION=3

↑上の赤字部分は接続情報のものを使い、青字部分は接続情報には含まれていないのですが、上記のように書き足してください。/etc/bashrc に書いた場合は再ログインするなどして、この環境変数が有効になった状態にしてください。これで swift を使う準備が整いました。


3. swift コマンドを実際に使ってみる

Object Storage はコンテナと呼ばれるフォルダ単位で利用します。現在のコンテナ一覧を確認してみましょう。以下のコマンドを実行します:
# swift list

初めて実行した時には(コンテナが存在していないので)何も表示されないはずです。コンテナを作成するにはコンテナ名を指定して post コマンドを実行します。以下の例では dotnsf-container というコンテナを作成しています:
# swift post dotnsf-container

このコマンド実行後に再度コンテナ一覧を確認すると、作成した dotnsf-container が表示されるはずです(緑字が出力結果):
# swift list
dotnsf-container

次にコンテナの中身を確認します:
# swift list dotnsf-container

これもコンテナ作成直後に実行した段階では(中身がないので)何も表示されないはずです。 ではこのコンテナにローカルファイル(以下の例ではカレントディレクトリの abc.txt を指定してアップロードしてみます:
# swift upload dotnsf-container abc.txt

この後に再度コンテナの中身を確認すると、アップロードしたファイルが追加されていることが確認できます:
# swift list dotnsf-container
abc.txt

コンテナ内のファイルは以下のコマンドでカレントディレクトリにダウンロードできます:
# swift download dotnsf-container abc.txt

コンテナ内のファイルが不要になった場合、以下のコマンドでコンテナから削除できます:
# swift delete dotnsf-container abc.txt
abc.txt

一通りのコンテナ/ファイル操作コマンドが利用できそうです。



(参考)
https://www.ng.bluemix.net/docs/services/ObjectStorage/index.html