シンガポール・サンノゼリージョン全プラン 30日間 25%OFF!
ドキュメントご利用ガイドオブジェクトストレージを使う(swiftコマンド編)

オブジェクトストレージを使う(swiftコマンド編)

オブジェクトストレージを使う(swiftコマンド編)

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

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

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

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

接続先と認証情報の確認

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 python-swiftclient
pip install python-keystoneclient

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を使用するより、簡単にオブジェクトストレージを操作することができます。

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

今すぐお申し込み