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