はじめに
Oracle Analytics Cloud(OAC)に対して、REST APIを使用してできることが徐々に増えてきています。
今回は、コンソールメニューのシステム設定の値をWeb UIの代わりにREST APIで取得したり更新したりする方法を紹介します。
1. 機密アプリケーションの作成
OCI管理コンソールでドメインの詳細を開き、「統合アプリケーション」タブを表示します。
「アプリケーションの追加」をクリックします。
「機密アプリケーション」を選択し、「ワークフローの起動」をクリックします。
クライアント構成セクションで、「このアプリケーションをクライアントとして今すぐ構成します」を選択します。
認可タイプとして「リソース所有者」を選択し、さらに下にスクロールします。
トークン発行ポリシーセクションで、「リソースの追加」を選択し「スコープの追加」をクリックします。
対象となるOACインスタンスを選択し「追加」をクリックします。
リソースが追加されたことを確認して、「スコープ」をコピーしておきます。
「アクティブ化」をクリックして、作成した機密アプリケーションをアクティブにします。
「OAuth構成」セクションのクライアントIDとクライアント・シークレットをコピーしておきます。
2. トークンの取得
2.1 資格情報をBase64でエンコードする
コピーしておいたクライアントIDとクライアント・シークレットが次の値の場合
- クライアントID: xxxxxxxxxx
- クライアント・シークレット: zzzzzzzzzz
2つを連結して「xxxxxxxxxx:zzzzzzzzzz」という文字列を作り、これをBase64でエンコードします。
こんな感じになります。これをコピーしておきます。
- eHh4eHh4eHh4eDp6enp6enp6enp6
2.2 OACインスタンスの情報を取得する
OCI管理コンソールで対象のOACインスタンスの詳細画面に移動し、「追加情報」タブを表示します。
ドメインURLとホスト名をコピーしておきます。
2.3 トークンを取得する
コピーしておいた
- ドメインURL
- 資格情報をBase64エンコードしたもの
- 機密アプリケーションのリソースのスコープ
を使用してcurlコマンドを実行します。
今回は、curlの実行環境としてCloud Shellを使用しました。
次のコマンドを実行します。
curl --request POST \
--url https://<ドメインURL>/oauth2/v1/token \
--header 'authorization: Basic <資格情報をBase64エンコードしたもの>' \
--header 'content-type: application/x-www-form-urlencoded;charset=UTF-8' \
-d 'grant_type=password&username=<ユーザー名>&password=<パスワード>&scope=<機密アプリケーションのリソースのスコープ>'
access_tokenとして返ってきた値をコピーしておきます。
3. システム設定の管理
3.1 キャッシュ有効化の設定を取得
システム設定のキャッシュの有効化に関する値を取得してみます。
OACインスタンスの情報を取得した際にコピーしておいた「ホスト名」を使います。
また、先程のアクセストークンもコピーして使用します。
curl -i --header "Authorization: Bearer <access_token>" \
--request GET https://<ホスト名>/api/20210901/system/settings?key=EnableDataQueryCache
戻り値はこんな感じになります。
HTTP/1.1 200 OK
Date: Fri, 12 Jan 2024 00:32:01 GMT
Content-Type: application/json
Content-Length: 102
Connection: keep-alive
X-ORACLE-DMS-ECID: dac20284-1fb2-47e1-b485-578876cc6131-00011e41
X-ORACLE-DMS-RID: 0
Strict-Transport-Security: max-age=31536000;
vary: Accept-Encoding,X-Forwarded-Proto,origin
{"items":[{"key":"EnableDataQueryCache","value":"true","displayName":"Cache Enable","pending":false}]}
3.2 キャッシュ有効化の設定を変更する
jsonファイルを作ります。
{
"items":[
{
"key": "EnableDataQueryCache",
"value": "false"
}
]
}
次のコマンドを実行します。
curl -i --header "Authorization: Bearer <access_token>" \
--header "Content-Type: application/json" \
--request PUT https://<ホスト名>/api/20210901/system/settings \
--data @update_system_settings.json
戻り値です。
HTTP/1.1 202 Accepted
Date: Fri, 12 Jan 2024 00:36:47 GMT
Content-Length: 0
Connection: keep-alive
X-ORACLE-DMS-ECID: b7e414cf-8c5d-4ba8-86fb-7f431e5639a4-0000f080
X-ORACLE-DMS-RID: 0
Strict-Transport-Security: max-age=31536000;
vary: X-Forwarded-Proto,origin
もう一度、Cache Enableの値を取得してみた結果です。
HTTP/1.1 200 OK
Date: Fri, 12 Jan 2024 00:37:05 GMT
Content-Type: application/json
Content-Length: 102
Connection: keep-alive
X-ORACLE-DMS-ECID: dac20284-1fb2-47e1-b485-578876cc6131-00011ef5
X-ORACLE-DMS-RID: 0
Strict-Transport-Security: max-age=31536000;
vary: Accept-Encoding,X-Forwarded-Proto,origin
{"items":[{"key":"EnableDataQueryCache","value":"false","displayName":"Cache Enable","pending":true}]}
公式ドキュメント