目次

ConoHaのオブジェクトストレージを、コマンドラインツールであるswiftクライアントを使って操作する方法をご紹介します。

swiftコマンドを使用してオブジェクトストレージを操作する

ConoHaのオブジェクトストレージは、基盤ソフトウェアにOpenStack Swiftを使用しており、OpenStackのREST APIを使いストレージを操作することができます。OpenStack SwiftのAPIについては、オフィシャルのドキュメントに仕様があります。

OpenStackSwiftに付属するコマンドラインツールであるswiftコマンドは、プログラムを書かなくても簡単にオブジェクトストレージを扱うことができます。

サーバーを作成する際に自動でswiftクライアントのインストール、API情報の/root/keystonercへの書き込みを行うスタートアップスクリプトのテンプレートが公開されました。スタートアップスクリプトの利用方法については以下のガイドをご確認ください。

スタートアップスクリプトを使ってオブジェクトストレージクライアントをインストールする

接続先と認証情報の確認

ConoHaのコントロールパネルから、オブジェクトストレージの接続先や認証に関する情報確認します。左のメニューから「API」を選択します。

STEP1

APIの情報が確認できます。

STEP2
STEP3
STEP4

(初回アクセス時には、「+ユーザー」をクリックして、APIユーザーを作成してください。上記は、作成後の画面です)

以下は、それぞれの用語の解説です。オブジェクトストレージを操作する際に登場します。

テナント名 アカウントには一つのテナントが割り当てられます。テナントの中にコンテナを作成し、コンテナにオブジェクトを格納していきます。
ユーザ名 オブジェクトストレージに接続するときに必要となるユーザ名です
Identity Service オブジェクトストレージに認証するときに接続するURLです

swiftコマンドのインストール

swiftコマンドをインストールします。Linux(CentOSとUbuntu)やMacOSはパッケージマネージャで簡単にインストールできますが、Windowsは少し長い手順が必要になります。必要に応じてオフィシャルのドキュメントも参考にしてください。

Linux(CentOS7)

yumコマンドでPythonをインストールします。その後はeasy_installを使いpipをインストールします。easy_installとpipは、共にPythonパッケージを簡単にインストールするためのパッケージ管理ツールです。続いて、同じようにyumコマンドでswiftクライアントをインストールします。(root権限で実行する必要があります)

yum install python-devel gcc
yum install python-pip
pip install oslo.config==6.11.2 oslo.utils==3.41.5 oslo.serialization==2.29.2
pip install python-keystoneclient==3.21.0 python-swiftclient==3.8.1

Linux(Ubuntu16.04)

Ubuntuでは、aptitudeパッケージマネージャを使用します。(root権限で実行する必要があります)

aptitude update
aptitude install python-pip
pip install python-swiftclient
pip install python-keystoneclient

OS X

OS Xは、Pythonのパッケージマネージャであるeasy_installがインストール済みのため、pipをインストールして、その後swiftクライアントをインストールします。

sudo easy_install pip
sudo pip install python-swiftclient	

Windows

Windowsで使う場合は、まずPythonをインストールします。インストールに関しては、docs.python.jpを ご確認ください。Pythonがインストールされれば、コマンドプロンプトから

sudo pip install python-swiftclient

でインストールできます。

swiftコマンド使う

swiftコマンドを使ってオブジェクトストレージを操作します。

swiftコマンドは、スペースに続けてサブコマンドを追加することで、様々な機能を実現します。例えばstatというサブコマンドがあり、アカウント、コンテナ、オブジェクトなど、オブジェクトストレージに関する様々な状態を表示できます。これを使う場合は以下のようにします。

swift stat

コマンドを実行してみます。

# swift stat
Auth version 1.0 requires ST_AUTH, ST_USER, and ST_KEY environment variables
to be set or overridden with -A, -U, or -K.

Auth version 2.0 requires OS_AUTH_URL, OS_USERNAME, OS_PASSWORD, and
OS_TENANT_NAME OS_TENANT_ID to be set or overridden with --os-auth-url,
--os-username, --os-password, --os-tenant-name or os-tenant-id. Note:
adding "-V 2" is necessary for this.

認証が求められます。オブジェクトストレージにデータの取得や保存を行うには、必ず認証を行う必要があります。

認証

認証を行うには、swiftコマンドに認証情報を渡します。

# export OS_AUTH_URL='[Identity Service]'
# export OS_TENANT_NAME='[テナント名]'
# export OS_USERNAME='[ユーザ名]'
# export OS_PASSWORD='[APIユーザー作成時に設定したパスワード]'

改めてstatサブコマンドを実行します。

swift stat

オブジェクトストレージに関する情報が表示されます。エラーメッセージが表示された場合は、もう一度手順を確認してみてください。

コンテナの作成

次にコンテナを作成します。コンテナとはオブジェクトを格納するための領域です。オブジェクトストレージではオブジェクトを格納する場合に、格納先のコンテナを指定することになります。コンテナを作成するにはpostサブコマンドを使います。

swift post [作成するコンテナ名]

成功した場合はなにも表示されません。次にlistサブコマンドを実行してみます。

swift list

作成したコンテナが表示されます。ここで先ほどのstatサブコマンドに、作成したコンテナ名を渡して実行してみます。

swift stat [作成したコンテナ名]

出力は以下のようになります。(ここではconohaというコンテナを作成しました。)

swift stat conoha
       Account: *****************************
     Container: conoha
       Objects: 0
         Bytes: 0
      Read ACL:
     Write ACL:
       Sync To:
      Sync Key:
 Accept-Ranges: bytes
   X-Timestamp: 1408702588.06714
    X-Trans-Id: txf01dafe9481a461bb5cfe-0053f71880
  Content-Type: text/plain; charset=utf-8

statサブコマンドは、コンテナの詳細情報も表示できます。コンテナ名のあとにオブジェクト名を渡すと、オブジェクトの詳細情報も取得できます。statサブコマンドは利用頻度が高いので、覚えておくと良いかもしれません。

オブジェクトの保存、取得

コンテナを作成したので、実際にオブジェクトストレージへのデータ格納とデータの取得を行ってみます。なお、オブジェクトストレージに格納するデータは「オブジェクト」と表現するのが一般的です。以降は「データ」ではなく「オブジェクト」とします。

オブジェクトストレージへ格納するファイルを用意します。オブジェクトストレージでは、保存するオブジェクトの種類は問いません。一般的なテキストファイル、画像ファイル、動画ファイルはもちろん、システムが出力するログデータ、バックアップファイル、圧縮されたファイルなど、どのようなファイルでも格納できます。

オブジェクトを保存するには、uploadサブコマンドを使います。uploadコマンドに保存先のコンテナ名と、保存するオブジェクトのファイル名を渡します。

swift upload [保存先のコンテナ名] [オブジェクトのファイル名]

保存できたら、listサブコマンドを使って確認してみます。

swift list [保存先のコンテナ名]

保存したオブジェクト名が返ってくれば成功です。
オブジェクトを取得するにはdownloadサブコマンドを使用します。

swift download [保存先のコンテナ名] [オブジェクトのファイル名]

swiftコマンドの使いどころ

swiftコマンドはREST APIを使用するより、簡単にオブジェクトストレージを操作することができます。

コマンドラインツールなので、シェルスクリプトに組み込むのも簡単です。圧縮したログファイルをオブジェクトストレージに保存したり、データベースのダンプファイルをオブジェクトストレージに保存するなど、さまざまな用途でお使いいただけます。

問題は解決できましたか?

お役立ち情報

ConoHaではサポートコンテンツの他にも以下のようなお役立ち情報をご用意しております。ぜひご活用ください。