株式会社コーソル

コーソルDatabaseエンジニアのブログ

技術ブログ

REST APIを用いてOracle Database Cloud Serviceインスタンスを作成する

Oracle Database Cloud ServiceにはRESTのAPIが提供されており、情報の取得や操作を実行できます。

Alphabetical Listing of Endpoints in the REST API - Using Oracle Database Cloud - Database as a Service

REST APIとは、端的にいうと、HTTPリクエスト1発でキックできる処理のエンドポイントです。
サービスにREST APIが用意されていると、サービスに関する処理をプログラム可能になります。また、処理を、HTTPリクエストを発行できるコマンド(curlコマンドなど)を用いて簡単に実行でできるようになります。

というわけで、REST APIを用いてOracle Database Cloud Serviceインスタンスをさくっと作成してみましょう。
手順は以下の通りです。

  1. インスタンスに関する設定を記載したJSONファイルを用意する
  2. Oracle Database Cloud Serviceのエンドポイントに対して、curlコマンドでHTTPリクエストを発行する

1. JSONファイルを用意する

Request Body - Create a Service Instanceの記載にしたがって、設定値を記述したJSONファイルを用意します。

JSONファイルは、REST API処理で一般的に使用されるファイル形式です。詳細は JavaScript Object Notation - Wikipediaを参照ください。

以下は、Oracle Database 12.1.0.2のOracle Database Cloud Serviceインスタンスに対応するJSONファイルです。

{
  "serviceName": "DB12c-EE-EP",
  "version": "12.1.0.2",
  "level": "PAAS",
  "edition": "EE_EP",
  "subscriptionType": "HOURLY",
  "description": "created by REST API",
  "shape": "oc3",
  "parameters": [
    {
      "type": "db",
      "usableStorage": "15",
      "adminPassword": "Oracle123_",
      "sid": "PROD",
      "pdb": "PDB1",
      "failoverDatabase": "no",
      "backupDestination": "DISK",
    }
  ],
  "vmPublicKeyText": "ssh-rsa xxxx(snip)xxxx"
} 

各項目の意味については、Request Body - Create a Service Instanceを参照いただきたいのですが、注意すべき項目について触れておきます。

  • "serviceName" : アイデンティティドメインで一意にする必要があるようです。
  • "level" : "PAAS" = Oracle Database Cloud Service Automated です。
  • "pdb" : "version"に12.1.0.2を選択した場合は、指定が必須のようです。
  • "backupDestination" : バックアップの取得先を指定します。"BOTH"を指定すると、ローカルディスクとOracle Storage Cloudにバックアップを取得します。
  • "vmPublicKeyText" : ssh公開鍵を文字列として指定します。作成したインスタンスには、このssh公開鍵に対応するssh秘密鍵を使ってアクセスします。

2. curlコマンドでHTTPリクエストを発行する

Oracle Database Cloud Serviceのエンドポイントに対して、
1.で作成したJSONファイルをcurlコマンドのデータ(--data)に指定して、
HTTPリクエストを発行します。

ORACLECLOUD_USER='ryota.watabe@cosol.jp'
ORACLECLOUD_PWD='password_string'
ORACLECLOUD_IDDOMAIN=jpcosolxxxx
CREATEDB_JSON_FILENAME=createdbcs1.json

ENDPOINT_PATH=/paas/service/dbcs/api/v1.1/instances/${ORACLECLOUD_IDDOMAIN}

curl --include --request POST \
  --user ${ORACLECLOUD_USER}:${ORACLECLOUD_PWD} \
  --header "X-ID-TENANT-NAME:${ORACLECLOUD_IDDOMAIN}" \
  --header "Content-Type:application/json" \
  --data @${CREATEDB_JSON_FILENAME} \
  https://dbaas.oraclecloud.com/${ENDPOINT_PATH}

留意点は以下の通りです。

  • curlの--userオプションで、Oracle Cloudの認証情報(ユーザー名:パスワード)を与えています。
  • curlの--headerオプションで、HTTPヘッダーX-ID-TENANT-NAMEを与えています。これには、Oracle Cloudのアイデンティティドメインを指定します。
  • 同様に、HTTPヘッダー "Content-Type:application/json" を指定しています。
  • curlの--dataオプションで、1.で作成したJSONファイルのコンテンツをHTTPリクエストに含めるデータとして指定しています。

これで(課金のことを心配しなければ :-P)さくさくOracle Database Cloud Serviceインスタンスが作成できます。 🙂

プロフィール

On7tWW6m1Ul4

渡部 亮太

・Oracle ACE
・AWS Certified Solutions Architect - Associate
・ORACLE MASTER Platinum Oracle Database 11g, 12c 他多数

カテゴリー

アーカイブ