はじめに
ここ何回か、Oracle Analytics Cloud(OAC)に対する管理タスクのREST APIによる実行方法を紹介しています。
今回はREST APIを使用したスナップショットの作成や復元を紹介します。
こちらの記事も参考にしてください。
1. 準備
1.1 機密アプリケーションの作成
機密アプリケーションを作成しておく必要があります。
手順はこちらと共通です。
1.2 オブジェクトストレージの準備
作成したスナップショットの保管先として、任意のバケットを作成してください。
ここでは、例として「mysnapshot-bucket」バケットを作成しました。
1.3 OCIDの取得とAPIキーの作成
同じユーザーの「APIキー」セクションでAPIキーを追加します。
「APIキー・ペアの生成」を選択し、秘密キーをダウンロードします。
「追加」をクリックします。
2. スナップショットの操作
スナップショットは、OACの「コンソール」-「スナップショット」からGUIで操作することができます。
REST APIを使用して作成したスナップショットは、オブジェクトストレージに保存され、こちらには表示されません。
また、ここに表示されているスナップショットをREST APIで操作することもできません。
これ以降、REST APIの実行はCloud Shellでcurlコマンドを使用しました。
2.1 作成
ホームディレクトリにjsonファイルを作成します。
mysnapshot-bucketというバケットのmyfolderというフォルダの中に、myfirstsnapshot.barという名前で保存する例です。
パラメータ | 値 |
---|---|
name | スナップショットの名前 |
bucket | 保存先のバケット |
ociRegion | リージョン |
ociTenancyId | テナンシのOCID |
ociUserID | ユーザーのOCID |
ociKeyFingerprint | 先程コピーしておいたAPIキーのフィンガープリント |
ociPrivateKeyWrapped | 秘密キーをBase64エンコードしたもの |
uri | スナップショットファイル名 |
password | スナップショットのパスワード |
{
"type": "CREATE",
"name": "myfirstsnapshot",
"storage": {
"type": "OCI_NATIVE",
"bucket": "mysnapshot-bucket",
"auth": {
"type": "OSS_AUTH_OCI_USER_ID",
"ociRegion": "ap-tokyo-1",
"ociTenancyId": "ocid1.tenancy.oc1..aa......",
"ociUserId": "ocid1.user.oc1..aa......",
"ociKeyFingerprint": "e1:56:51:......",
"ociPrivateKeyWrapped": "LS0tLS1CRUdJTiBQUklWQV......"
}
},
"bar": {
"uri": "file:///myfolder/myfirstsnapshot.bar",
"password": "snapshotPassword123"
}
}
秘密キーのBase64エンコード方法
cat myprivate-key.pem | base64 -w 0 > mywrapped-private-key.pem
事前にトークンを取得します。
$ curl --request POST \
> --url https://<Domain URL>/oauth2/v1/token \
> --header 'authorization: Basic <base64(Client ID:Client Secret)>' \
> --header 'content-type: application/x-www-form-urlencoded;charset=UTF-8' \
> -d 'grant_type=password&username=<USERNAME>&password=<PASSWORD>&scope=<SCOPE>'
{"access_token":"eyJ4NXQjUzI1NiI6IjBPdFJxUml...","token_type":"Bearer","expires_in":100}
$
取得したトークンを使って、次のコマンドを実行します。
curl -i --header "Authorization: Bearer <access_token>" \
--header "Content-Type: application/json" \
--request POST https://<OAC Hostname>/api/20210901/snapshots -d @new_snapshot.json
すぐに実行結果とともにworkRequestIdが返されます。
workRequestIdを使用して実行状況を確認することができます。
HTTP/1.1 202 Accepted
Date: Mon, 15 Jan 2024 05:22:02 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 35
Connection: keep-alive
X-ORACLE-DMS-ECID: b7e414cf-8c5d-4ba8-86fb-7f431e5639a4-0003530d
ETag: W/"23-Gwua0jJJZhZXdNPo6M75GkFNn/0"
oa-work-request-id: lfc-ci:6-cu:486
X-ORACLE-DMS-RID: 0
Strict-Transport-Security: max-age=31536000;
vary: X-Forwarded-Proto,origin
{"workRequestId":"lfc-ci:6-cu:486"}
statusがSUCCEEDEDになれば完了です。
curl -i --header "Authorization: Bearer <access_token>" \
--request GET https://<OAC Hostname>/api/20210901/workRequests/lfc-ci:6-cu:486
2.2 一覧
次のコマンドを実行します。
curl -i --header "Authorization: Bearer <access_token>" \
--request GET https://<OAC Hostname>/api/20210901/snapshots
これにより、各スナップショットのIDを取得できます。
復元や削除に必要なので、コピーしておきます。
2.3 復元
ホームディレクトリにjsonファイルを作成します。
{
"snapshot": {
"id" : "b35be58e-1851-411f-bfc7-0fa1020866f2",
"password" : "snapshotPassword123"
}
}
次のコマンドを実行します。
curl -i \
--header "Authorization: Bearer <access_token>" \
--header "Content-Type: application/json" \
--request POST https://<OAC Hostname>/api/20210901/system/actions/restoreSnapshot \
-d @restore_mysnapshot.json
復元のステータスもworkRequestsで適宜確認できます。
2.4 削除
次のコマンドで削除できます。
curl -i --header "Authorization: Bearer <access_token>" \
--request DELETE https://<OAC Hostname>/api/20210901/snapshots/b35be58e-1851-411f-bfc7-0fa1020866f2
実行完了すると、スナップショットの一覧に表示されなくなりますが、オブジェクトストレージから自動的に削除されることはありません。
必要に応じて、自分で削除してください。