使用NetApp Backup and RecoveryREST API 實現自動化
可透過 Web UI 使用的NetApp Backup and Recovery功能也可透過備份和還原 REST API 使用。
NetApp Backup and Recovery中定義了十類端點:
-
backup- 管理雲端和本地資源的備份操作,並檢索備份資料的詳細信息 -
catalog- 根據查詢管理文件的索引目錄搜尋(搜尋和復原) -
cloud- 從NetApp Console檢索有關各種雲端提供者資源的信息 -
job- 管理NetApp Console資料庫上的作業詳細資料條目 -
license- 從NetApp Console擷取系統的許可證有效性 -
ransomware scan- 對特定備份檔案啟動勒索軟體掃描 -
restore- 使您能夠執行磁碟區、檔案和資料夾層級的還原作業 -
sfr- 從備份檔案中擷取檔案以進行單一檔案層級復原作業(瀏覽和還原) -
storagegrid- 檢索有關StorageGRID伺服器的詳細信息,並使您能夠發現StorageGRID伺服器 -
system- 管理備份策略,並配置與系統關聯的目標物件存儲
API 參考
每個NetApp Backup and RecoveryAPI 的文件均可從以下位置取得 "NetApp Console自動化,用於NetApp Backup and Recovery"。
入門
要開始使用NetApp Backup and RecoveryAPI,您需要取得使用者令牌、 NetApp Console帳戶 ID 和控制台代理 ID。
進行 API 呼叫時,您將在授權標頭中新增使用者令牌,並在 x-agent-id 標頭中新增控制台代理 ID。您應該在 API 中使用NetApp Console帳戶 ID。
|
|
如果您使用服務帳戶,則應使用服務存取令牌而不是使用者令牌。「client_id」的值(「Mu0V1ywgYteI6w1MbD15fKfVIUrNXGWC」)是固定值,無法變更。在這種情況下,請按照此處的說明進行操作: "建立服務存取權令牌" 。 |
-
從NetApp NetApp Console網站取得使用者令牌。
curl --location --request POST 'https://netapp-cloud-account.auth0.com/oauth/token?=' \ --header 'Content-Type: application/json' \ -d '{ "grant_type": "refresh_token", "refresh_token": "JxaVHn9cGkX92aPVCkhat3zxxxxxwsC9qMl_pLHkZtsVA", "client_id": "Mu0V1ywgYteI6w1MbD15fKfVIUrNXGWC" }'NetApp Console網站上的使用者令牌有一個到期日期。API 回應包含一個「expires_in」字段,用於說明令牌何時過期。若要刷新令牌,您需要再次呼叫此 API。 -
取得您的NetApp Console帳戶 ID。
GET 'https://api.bluexp.netapp.com/tenancy/account' -H 'authority: api.bluexp.netapp.com' Header: -H 'accept: application/json' -H 'accept-language: en-GB,en;q=0.9' -H 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR此 API 將傳回以下回應。您可以透過解析 [0].[ accountPublicId] 的輸出來擷取帳戶 ID。
{ "accountPublicId": "account-i6vJXvZW", "accountName": "rashidn", "isSaas": true, "isGov": false, "isPrivatePreviewEnabled": false, "is3rdPartyServicesEnabled": false, "accountSerial": "96064469711530003565", "userRole": "Role-1" } -
取得包含控制台代理 ID 的 x-agent-id。
GET 'https://api.services.cloud.netapp.com/occm/list-occms/account-OOnAR4ZS?excludeStandalone=true&source=saas' \ Header: -H 'authority: api.services.cloud.netapp.com' \ -H 'accept: application/json' \ -H 'accept-language: en-GB,en;q=0.9' \ -H 'authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5…………您可以透過解析 occm.[0].[agent].[agentId] 的輸出來從回應中擷取代理 ID。
使用 API 的範例
以下範例顯示了在 Azure 雲端中的 East-US-2 區域中,在具有新策略的系統上啟動NetApp Backup and Recovery 的API 調用,該策略設定了每日、每小時和每週標籤,並將存檔天數設定為 180 天。請注意,這僅啟用系統上的備份,但不會備份任何磁碟區。
您會看到我們使用NetApp Console帳號 ID account-DpTFcxN3 、控制台代理 ID `iZwFFeVCZjWnzGlw8RgD0QQNANZvpP7Iclients`和用戶令牌 `Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5rSXlPVFUzUWpZek1E…y6nyhBjwkeMwHc4ValobjUmju2x0xUH48g`在此命令中。
curl --location --request POST 'https://api.bluexp.netapp.com/account/account-DpTFcxN3/providers/cloudmanager_cbs/api/v3/backup/working-environment/VsaWorkingEnvironment-99hPYEgk' \
--header 'x-agent-id: iZwFFeVCZjWnzGlw8RgD0QQNANZvpP7Iclients' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5rSXlPVFUzUWpZek1E…y6nyhBjwkeMwHc4ValobjUmju2x0xUH48g' \
--data-raw '{
"provider":"AZURE",
"backup-policy": {
"archive-after-days": 180,
"rule": [
{
"label": "hourly",
"retention": "2"
},
{
"label": "daily",
"retention": "30"
},
{
"label": "weekly",
"retention": "52"
}
]
},
"ip-space": "Default",
"region": "eastus2",
"azure": {
"resource-group": "rn-test-backup-rg",
"subscription": "3beb4dd0-25d4-464f-9bb0-303d7cf5c0c2"
}
}
{
"job-id": "1b34b6f6-8f43-40fb-9a52-485b0dfe893a"
}
curl --location --request GET 'https://api.bluexp.netapp.com/account/account-DpTFcxN3/providers/cloudmanager_cbs/api/v1/job/1b34b6f6-8f43-40fb-9a52-485b0dfe893a' \
--header 'x-agent-id: iZwFFeVCZjWnzGlw8RgD0QQNANZvpP7Iclients' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ik5rSXlPVFUzUWpZek1E…hE9ss2NubK6wZRHUdSaORI7JvcOorUhJ8srqdiUiW6MvuGIFAQIh668of2M3dLbhVDBe8BBMtsa939UGnJx7Qz6Eg'
{
"job": [
{
"id": "1b34b6f6-8f43-40fb-9a52-485b0dfe893a",
"type": "backup-working-environment",
"status": "PENDING",
"error": "",
"time": 1651852160000
}
]
}
{
"job": [
{
"id": "1b34b6f6-8f43-40fb-9a52-485b0dfe893a",
"type": "backup-working-environment",
"status": "COMPLETED",
"error": "",
"time": 1651852160000
}
]
}