個人利用から大規模開発までConoHaで始めるクラウド開発入門

第3回 ConoHaオブジェクトストレージを使ってみよう

この記事を読むのに必要な時間:およそ 4 分

オブジェクトストレージにアクセスする

さてトークンが取得できたので,オブジェクトストレージにアクセスできるようになりました。オブジェクトストレージのエンドポイントURLも,コントロールパネルの「API」のページから確認できます。

コンテナの作成

まずはオブジェクトを格納するコンテナを作成してみましょう。URLで作成するコンテナ名を明示してPUTリクエストを送信します。また,HTTPリクエストヘッダ(X-Auth-Token)でトークンを指定します図4)⁠ここでは「sample-container」という名前でコンテナを作成しています。成功するとHTTPステータスコード201 Createdが返ってきます。

図4 コンテナを作成するcurlコマンド

# curl -i -X PUT \
-H "Accept: application/json" \
-H "X-Auth-Token: [トークン]" \
https://object-storage.tyo1.conoha.io/v1/nc_[TenantID]/sample-container

次にコンテナが作成されたことを確認しましょう。これにはエンドポイントURLにGETリクエストを送信します図5)⁠JSON形式でコンテナの情報が返ってきます。countはコンテナ内のオブジェクト数,bytesはコンテナに格納されているオブジェクトの合計サイズを表します。まだオブジェクトを格納していないので両方0ですね。

図5 コンテナ一覧を取得するcurlコマンドとレスポンス

# curl -i -X GET \
-H "Accept: application/json" \
-H "X-Auth-Token: [トークン]" \
https://object-storage.tyo1.conoha.io/v1/nc_[TenantID]/
HTTP/1.1 200 OK
Content-Length: 44
(中略)
[{"count": 0, "bytes": 0, "name": "sample-container"}]

オブジェクトのアップロードとダウンロード

次にオブジェクトをコンテナにアップロードしてみましょう。先ほどのsample-containerにsample.txt(適当なテキストファイルを用意してください)をアップロードします。コンテナを作成したときと同じようにPUTリクエストを送信しますが,URLはオブジェクトのURLで,リクエストボディにオブジェクトのデータを指定しているところが異なる部分です図6)⁠ダウンロードする場合は,オブジェクトのURLにGETリクエストを送信します図7)⁠

図6 オブジェクトをアップロードする

# curl -i -X PUT \
-H "Accept: application/json" \
-H "X-Auth-Token: [トークン]" \
-d @sample.txt \
https://object-storage.tyo1.conoha.io/v1/nc_[TenantID]/sample-container/sample.txt

図7 オブジェクトをダウンロードする

# curl -i -X GET \
-H "Accept: application/json" \
-H "X-Auth-Token: [トークン]" \
https://object-storage.tyo1.conoha.io/v1/nc_[TenantID]/sample-container/sample.txt

ここまでで,オブジェクトストレージの基本的な部分である,コンテナの扱いとオブジェクトのアップロード/ダウンロードを解説しました。RESTfulなAPIの利用により,コンテナやオブジェクトをURLで特定し,処理に応じたHTTPメソッドを選択するという,直感的に扱いやすいしくみになっています。前述の例ではHTTPメソッドとしてGETとPUTの2種類を使用しましたが,実際は次のようにもっと多くのメソッドが利用されます。

  • HEAD:リソース(コンテナやオブジェクト)のメタデータのみの取得
  • GET:コンテナ内のオブジェクト一覧の取得,リソースとメタデータの取得
  • PUT:リソースの作成
  • POST:メタデータの作成/変更/削除
  • DELETE:リソースの削除
  • COPY:オブジェクトの複製

応用的な使い方

オブジェクトストレージには,オブジェクトの単純な出し入れだけでなく,ほかにもいろいろな機能があります。いくつか簡単に紹介しましょう。

メタデータ

メタデータを使うとオブジェクトにさまざまな情報を付加できます。メタデータの操作はPOSTリクエストで行い,コンテナの場合は「X-Container-Meta-」⁠オブジェクトの場合は「X-Object-Meta-」で始まるHTTPリクエストヘッダで指定します。

# curl -i -X POST \
-H "X-Auth-Token: [トークン]" \
-H "X-Object-Meta-Author: Mikumo ConoHa \
[コンテナまたはオブジェクトのURL]

コンテナの公開(ACL)

コンテナやオブジェクトへのアクセス許可はACLAccess Control Listによって管理されています。デフォルトでは認証を通っている必要がありますが,それを不要にするとコンテナを公開できます。これによりオブジェクトストレージを一般的なWebサーバのように使い,オブジェクトを配信できます。ACLの設定はHTTPヘッダの「X-Container-Read」「X-Container-Write」を使います。⁠.r:*」はコンテナ内のオブジェクトに対して公開アクセスを許可し,⁠.rlistings:*」はオブジェクト一覧の取得を許可します。

# curl -i -X POST \
-H "X-Auth-Token: [トークン]" \
-H "X-Container-Read: .r:*,rlistings:*" \
[コンテナのURL]

有効期限つきオブジェクト

オブジェクトに有効期限を設定できる機能です。有効期限が過ぎたオブジェクトは自動的に削除され,一時的なファイルを作るときに便利です。指定方法は2とおりあり,⁠X-Delete-At」はUNIX Epoch形式で有効期限の時刻を指定します。⁠X-Delete-After」は有効期限を指定秒数の経過後に指定します。

# curl -i -X POST \
-H "X-Auth-Token: [トークン]" \
-H "X-Container-Read: .r:*,rlistings:*" \
-H "X-Delete-At: 1440029320" \
[オブジェクトのURL]

オブジェクトのバージョン管理

オブジェクトを更新したときに自動的に別のコンテナに履歴を残す機能です。容量無制限であるオブジェクトストレージの特徴を活かした機能といえます。PUTでオブジェクトを更新するたびに,自動的に既存のオブジェクトが別のコンテナにコピーされます。また,DELETEで現行バージョンのオブジェクトを削除すると,自動的に前のバージョンが復元されます。これは「X-Versions-Location」で設定します。値は履歴を残すコンテナ名です。詳しくはOpenStackのドキュメントをご覧ください。

# curl -i -X POST \
-H "X-Auth-Token: [トークン]" \
-H "X-Versions-Location: versions" \
[コンテナのURL]  ↑ 履歴を保存するコンテナを指定

まとめ

オブジェクトストレージについての説明と,その特徴をいろいろ見てきました。ConoHaのオブジェクトストレージは単独で使用可能で,VPSと組み合わせてシステムを作ることもできます。また,ここで紹介した機能は一部です。ConoHa APIドキュメントのObject StorageServiceの項にはすべての機能が載っていますので,ぜひ試してみてください。

著者プロフィール

斉藤弘信(さいとうひろのぶ)

GMOインターネット株式会社 テクニカルエバンジェリスト

2000年に同社に入社。ユーザーサポートやデータセンターでのオペレーション業務等を担当し,その後社長室などのゼネラル部門を経て,2014年9月よりホスティング事業のテクニカルエバンジェリストを担当。

得意分野はWebアプリケーションの設計/開発,Linuxサーバー構築/運用。

Twitter:@hironobu_s

コメント

コメントの記入