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

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

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

ConoHaにはOpenStack Swiftベースのオブジェクトストレージが用意されています。これはその名のとおりストレージサービスの一種で,単独でもVPSと組み合わせてでも使うことができます。今回はそのしくみや使い方を解説し,応用的な使い方もいくつか紹介します。

オブジェクトストレージとは

オブジェクトストレージは,大容量のデータを低価格で格納するのに適したストレージです。容量無制限で上限を気にせずデータを追加できるため,増え続けるデータをスケーラブルに格納できます。また,内部でデータのコピーを保持するため(ConoHaの場合は三重にコピーされます)⁠高い耐障害性,信頼性が実現されています。

オブジェクトストレージの特徴は,データを「オブジェクト」という単位で扱うこと,およびそのオブジェクトをAPI経由で操作することです。オブジェクトとは,一般的な「ファイル」にメタデータ(オブジェクトに関連したデータ)が追加されたものと理解してもらえば良いでしょう。たとえば画像データの場合,撮影日,撮影者,撮影場所などがメタデータになります。そして,オブジェクトは「コンテナ」に格納されます。コンテナはオブジェクトの入れ物のようなもので,複数のオブジェクトを格納できます。

オブジェクトストレージは,RESTful APIを通じてコンテナやオブジェクトにアクセスします。RESTについての詳細は割愛しますが,コンテナ/オブジェクトに対して一意なURLがあり,HTTPの各メソッドを使用してオブジェクトを操作することになります。これにより,OSやファイルシステムに依存せずにアクセスできます。

一方で,アクセスの単位が「オブジェクト」になることとHTTPによるオーバーヘッドがあるため,一般的なストレージに比べると低速になります。また,データに対するシーク操作や,部分的なリード/ライト操作は行えません。そして,WindowsエクスプローラーやMac OS XのFinderといった従来のファイル操作ツールは,そのままでは使用できません注1)⁠

まとめると,オブジェクトストレージとは

  • 大容量のデータを,低価格で容量無制限に格納可能
  • 「ファイル」ではなく「オブジェクト」という単位でデータを管理
  • データ本体とメタデータをまとめて管理可能
  • RESTful APIによるOSやファイルシステムに非依存なアクセス

といった特徴を持つストレージサービスです。

注1)
オブジェクトストレージを既存のファイルシステムにマウントするプラグインなども開発されています。

使いどころ

オブジェクトストレージの特性を考えると,あまり書き換えが発生しない情報の管理や,容量の増加が見積もりづらいケースに向いていそうです。逆に,データに対してランダムアクセスが必要なケースや,頻繁に更新が発生する情報の管理には向かないでしょう。具体的には,次のようなデータには適しているといえそうです。

  • 画像ファイル,動画ファイル
  • バックアップファイル
  • ログファイルのアーカイブ
  • 仮想マシンイメージ

ConoHaオブジェクトストレージの基本的な使い方

実際にAPIを使ってオブジェクトストレージを操作してみましょう。ConoHaのコントロールパネルのメニューから「オブジェクトストレージ」を選択し,利用開始の手続きをしてください図1)⁠

図1 オブジェクトストレージの利用

図1 オブジェクトストレージの利用

APIへの接続にはcurlコマンドを使用します。APIの仕様については,ConoHa APIドキュメントを一緒にご覧ください。

認証

まず,オブジェクトストレージにアクセスするために認証を行う必要があります。

コントロールパネルの「API」のページを開き,ここにあるIdentity ServiceのエンドポイントURLに接続します。そして,APIユーザ名,パスワード,テナント名で認証を行うと,接続トークンが発行されます。このトークンを使用してオブジェクトストレージにアクセスします。

では認証を試してみましょう(APIドキュメントの「トークン発行」のページもご覧ください)⁠接続先はIdentity Service Endpointに/tokensをつけたURLで,メソッドはPOST,認証情報はJSON形式リスト1でPOSTデータとして送信します。curlコマンドを使った例を図2に示します。curlの-dオプションはPOST/PUTリクエストのBodyを指定するもので,先頭に@をつけるとファイルから読み込んだ内容をBodyとして使用します。

リスト1 認証情報(auth.json)

{
  "auth": {
    "tenantName": "[テナント名]",
    "passwordCredentials": {
      "username": "[APIユーザ名]",
      "password": "[APIパスワード]"
    }
  }
}

図2 トークンを取得するcurlコマンド

# curl -i -X POST \
-H "Accept: application/json" \
-d @auth.json \
https://identity.tyo1.conoha.io/v2.0/tokens

認証に成功するとトークンを含んだレスポンスが返ります。レスポンス自体とても長いですが,トークンを取るだけならレスポンスの冒頭部分図3にのみ注目すれば良いです。access.token.idがトークンとなります。

図3 レスポンス(トークン部分のみ)

{
  "access": {
    "token": {
      "issued_at": "2015-07-31T08:29:03.761520",
      "expires": "2015-08-01T08:29:03Z",
      "id": "*****************************", ← トークン

著者プロフィール

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

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

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

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

Twitter:@hironobu_s

コメント

コメントの記入