Oracle Database Cloud Serviceでは、RESTを使って、起動停止・パッチ適用・バックアップなどのインスタンス管理操作ができます。マニュアルや他のサイトではcURLを使った方法しか紹介されていないので、Postmanを使った方法を紹介します。
Postmanを使うと良いこと
- GUI派にとっては見やすく、とっつきやすい
- (Windowsの場合)cURLのインストール作業で消耗しない
- REST発行履歴から、簡単に再実行できる
- よく使うRESTクエリを保存できる
- コマンドラインに生でパスワード類を打ち込まなくて良い
Postmanのインストール
公式サイトからダウンロードします。Chromeの場合、Chrome拡張機能として提供されています。
以降の記事では、Chrome拡張機能としてインストールしたPostmanの画面を前提に説明します。
認証プロキシを使ってOracle Cloudにアクセスしなければならない環境では、プロキシを通すための準備も必要です。
Chrome拡張機能では未対応のため、Postman Interceptorという拡張機能も導入します。導入方法は、こちらのQiita記事で紹介されています。
アプリケーションのPostmanの場合は、画面右上のアイコンからプロキシのURLとポートを設定します。プロキシのユーザ名とパスワードが入った認証情報を、後述の
Authorization
を作る要領で作成し、Header
タブでAuthorization
の前にProxy-
を付け、Proxy-Authorization
ヘッダとします。
GETの場合(インスタンス情報表示の例)
URLと認証情報の設定
Authorization
タブが選択されていなければ選択し、Type
プルダウンリストからBasic Auth
を選択します。
以下、埋めるところを順番に見ていきます。
(A) エンドポイントURL
エンドポイントURLは、「RESTサーバー」と「相対パス」を繋げたものです。
RESTサーバー: たいていの場合はhttps://dbaas.oraclecloud.com/
ですが、Oracle Database Cloud Serviceの詳細表示画面で確認できます。
相対パス: マニュアルの各RESTクエリの説明画面で確認できます。例えば、DBaaSのサービス・インスタンスの表示の場合、画面はこのようになっています。
これによると、相対パスは/paas/service/dbcs/api/v1.1/instances/{identityDomainId}/{serviceId}
のようです。さらに、パス・パラメータ
を見てパスの一部を書き換えます。この場合は、{identityDomainId}
をアイデンティティ・ドメイン名、{serviceId}
をDBCSのインスタンス名に書き換えます。
(B) メソッド
先ほどのマニュアルに示されていますので、それと同じものをプルダウンから選択します。Oracle CloudではGET
・PUT
・POST
・DELETE
を選択します。
Database Cloud Serviceでは少ないですが、RESTの常軌を逸するメソッドの使い方をするエンドポイントがOracle Cloudに少なからず存在しますので、初めて使うエンドポイントでは、必ずマニュアルでメソッドの種類を確認するようにしましょう。
(C) ユーザ名とパスワード
Oracle Cloudのユーザ名とパスワードを設定します。
(D) ヘッダに反映
オレンジ色のUpdate Request
ボタンをクリックします。
リクエストヘッダの設定
Headers
タブを選択します。
再びマニュアルを参照します。ヘッダ・パラメータ
を見ます。
これによると、Authorization
とX-ID-TENANT-NAME
をヘッダに設定する必要があることが分かります。Authoriztation
は既に追加されているので、X-ID-TENANT-NAME
だけ追加し、アイデンティティ・ドメイン名を指定します。
結果の表示
青のSend
ボタンをクリックします。
DBaaSのサービス・インスタンスの表示など、GET系のリクエストの場合は、このようにJSONで結果が返ります。レスポンスコードは、レスポンス本文の欄の右上に小さく表示されます。Headers
をクリックすると、レスポンスヘッダを見ることもできます。
マニュアルのレスポンス
タブの中に、レスポンス本文の仕様が書いてあります。
GET以外の場合(インスタンス起動の例)
これまで説明してきた手順とほぼ同じです。差分は、次の3点です。
- メソッドを適切なものに変更
- リクエスト本文と、その種類を定義するためのヘッダを追加
- レスポンス本文は空で、レスポンスコードやレスポンスヘッダで情報を見る
サービス・インスタンスまたは計算ノードの停止、起動または再起動を例にやってみます。
エンドポイントURLは先ほどと全く同じですので、そのままにします。
メソッドを、マニュアルに記載のあるPOST
に変更します。
Body
タブに行きます。
ラジオボタンでraw
を選択し、JSON(application/json)
を選択します。この時点で、自動的にヘッダにContent-Type
が追加され、値にapplication/json
が設定されます。
さて、本文に何を書けば良いかですが、マニュアルを見ると、以下のようになっています。
ルート・スキーマ
という項目の中のものが、ルートレベルになります。つまり、普通にインスタンスを起動したい場合は、以下のように書けば良いことが分かります。
{"lifecycleState":"start"}
青のSend
ボタンをクリックすると、比較的すぐに202 Accepted
が返ってきます。実際のインスタンス起動の完了までには少しかかるため、起動要求を受け付けたらすぐに返答を送るようにしているためです。なお、操作系のRESTでは、レスポンス本文は基本的に空です。
進捗状態の表示
ここで、マニュアルのレスポンス
タブを見てみましょう。
ヘッダー
のLocation
に、進捗を表示できるREST URIが書かれているとのことなので、PostmanのHeaders
タブをクリックして、レスポンスヘッダを見てみます。
Location
には、以下のようなURLが書かれています。
https://dbaas.oraclecloud.com:443/paas/service/dbcs/api/v1.1/instances/アイデンティティ・ドメイン名/status/control/job/数字
このエンドポイントは、マニュアルでは操作のジョブ・ステータスの表示に該当します。
Postmanで新しいタブを開き、そのURLを入力して、ヘッダにAuthorization
とX-ID-TENANT-NAME
を追加してSend
ボタンをクリックすると、進捗情報が返ってきます。以下の例では、ジョブの実行が正常に終了しています。