忘れないように記録しとこ

カバの樹

ConohaのオブジェクトストレージをREST APIで操作する part1 (基本設定+トークン発行)

2017年3月27日

https://identity.tyo1.conoha.io/v2.0

動作環境

PHP: 7.0.2
OS: Centos 7

 

Conohaのおぶじぇくとすとれーじ?

まず利用するにあたって、オブジェクトストレージってなんぞ?というところで、下記URLを参考
https://www.conoha.jp/guide/objectstorage.php

なんとなくふわっと理解した感じですと、オブジェクトストレージは、下記のファイルを保存するのに適していると

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

画像サーバーとか、動画配信サービスとかに向いてるのかな?

早速使ってみます。

 

基本設定

最初にざっと、利用ガイドを流し読みをする。

https://www.conoha.jp/guide/objectstoragerestapi.php

 

Config.phpを作成

まずは、「config.php」を作成する。

<?php
/**
* ConoHaコントロールパネルで表示される情報を設定してください。
*
* @link https://www.conoha.jp/blog/tech/3429.html
*/
// ユーザ名
define('USERNAME', '');
// パスワード
define('PASSWORD', '');
// 認証トークン(token-get.phpで取得する)
define('AUTH_TOKEN', '');
// テナント名
define('TENANT_NAME', '');
// テナントID
define('TENANT_ID', '');
// API Auth URL
define('AUTH_URL', 'https://identity.tyo1.conoha.io/v2.0');
// オブジェクトストレージエンドポイントURL
define('ENDPOINT_URL', 'https://objectstore-r1nd1001.cnode.jp/v1/nc_' . TENANT_ID);
//コンテナ名
define('MAIN_CONTENAR', 'test-conoha');

 

Config.phpの設定値を埋める

「config.php」の設定を入力するために、Conohaのコントローラーパネルにログインする。
サイドメニューの「API」をクリックする。

 

 

 

■ユーザ情報
APIユーザーの「ユーザー名」をconfig.phpの「USERNAME」に設定。
同様に「パスワード」をconfig.phpの「PASSWORD」に設定。

 

 

■テナント情報

ユーザー情報と同様に、APIページの「テナント情報」を設定する。
「テナントID」をconfig.phpの「TENANT_ID」に設定。
「テナント名」をconfig.phpの「TENANT_NAME」に設定。

 

 

トークンを発行する

config.phpにトークンを設定する為の「AUTH_TOKEN」という項目があります。
これは、コントロールパネルから取得ができず、トークンを取得するためのシステムを作る必要があります。

<?php
/**
 * ConoHaオブジェクトストレージに接続する認証トークンを取得するプログラム
 *
 * @link https://www.conoha.jp/blog/tech/3429.html
 */
require_once 'config.php';
// cURLの初期化
$curl = curl_init();
// HTTPヘッダー
$headers = array(
 // Acceptヘッダーでレスポンスの形式を指定できる
 // application/jsonの他にapplication/xmlやtext/xmlなど
 'Content-Type: application/json'
);
// POSTデータの準備
// アカウント名、テナント名、パスワードは環境に合わせて変更する。
$data = array(
 'auth' => array(
 'tenantName' => TENANT_NAME,
 'passwordCredentials' => array(
 'username' => USERNAME,
 'password' => PASSWORD
 )
 )
);
$postdata = json_encode($data);

// URL
$url = AUTH_URL . '/tokens';
// cURLのオプション
$options = array(
 // HTTPヘッダーの設定
 CURLOPT_HTTPHEADER => $headers,
 // URL
 CURLOPT_URL => $url,
 
 // POSTリクエストを実行する
 CURLOPT_POST => true,
 // POSTデータのセット
 CURLOPT_POSTFIELDS => $postdata,
 // curl_exec()の返り値で本文を受け取る
 CURLOPT_RETURNTRANSFER => true,
);
curl_setopt_array($curl, $options);
// HTTPリクエストを実行
// レスポンスはJSON形式の文字列
$body = curl_exec($curl);
if(curl_errno($curl)) {
 $msg = sprintf('cURL error: %s', curl_error($curl));
 throw new RuntimeException($msg);
}
// HTTPステータスコードを取得します。
// 認証に成功すると200、失敗すると401が返ってきます。
$status_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);

if(curl_errno($curl) OR $status_code != 200) {
 $msg = sprintf(
 'Authentication failed. The auth server returned status code(%d).',
 $status_code
 );
 throw new RuntimeException($msg);
}
// json_decode()は、JSON文字列をPHPの汎用オブジェクト(stdClass)に変換する関数
$authinfo = json_decode($body);
// トークンはこれで取得できます。
// $authinfoには、他にもトークンの有効期限、テナントの情報、サービスカタログなどが含まれている
echo "token: " . $authinfo->access->token->id . "\n";
// オブジェクトストレージのエンドポイントURLも取得できる
// これはコントロールパネルのAPI情報から確認できるURLと同じ
foreach($authinfo->access->serviceCatalog as $catalog) {
 if($catalog->type == 'object-store') {
 $endpoint = array_shift($catalog->endpoints);
 echo "endpoint url: " . $endpoint->publicURL . "\n";
 }
}

ファイルをサーバーに設置したら、ブラウザで「token-get.php」にアクセスする。


https://www.kabanoki.net/token-get.php

そうすると、下記のようなページが表示されるので、「token」の部分の値を「config.php」の「AUTH_TOKEN」に設定する

 

設定完了

基本設定は、これで終わりです。
次回は、オブジェクトストレージにファイルを設置したいと思います。

 

 

関連記事

https://www.kabanoki.net/1342

https://www.kabanoki.net/1404

  • B!