問題描述
APIM中的內容(API, Policy)等內容,如果有需要更新時候,通常可以在Azure APIM門戶上操作,通過一個介面一個設定的修改,也可以針對一個介面匯入/匯出的方式修改。當APIM中的API成數量級上升後,這樣的操作方式就變得很慢很沒有效率,是否有更高效得方式呢?
以上兩種方式都適合少量修改的情況。如果是APIM中大量API都需要修改呢?
問題解答
有的,因為APIM可以使用 Git 管理服務例項配置,實現批量更改。參考的官方文件為:https://docs.azure.cn/zh-cn/api-management/api-management-configuration-repository-git
實現步驟
步驟一:將APIM服務配置儲存到 Git 儲存庫
克隆儲存庫之前的第一個步驟是將服務配置的當前狀態儲存到儲存庫。 單擊“儲存到儲存庫”。片刻後配置已儲存,並顯示儲存庫的配置狀態,包括上次配置更改和服務配置與儲存庫之間上次同步的日期和時間。
將配置儲存到儲存庫後,可以克隆它。
APIM Repository中的檔案結構為:
- 根資料夾( api-management ) :包含服務例項的頂級配置
- apis 資料夾 : 包含服務例項中的 API 的配置
- groups 資料夾 : 包含服務例項中的組的配置
- policies 資料夾 : 包含服務例項中的策略
- portalStyles 資料夾 : 包含服務例項中的開發人員門戶自定義的配置
- products 資料夾 : 包含服務例項中產品的配置
- templates 資料夾 : 包含服務例項中電子郵件模板的配置
這一步的操作截圖如下:
步驟二:將APIM Repository 克隆到本地環境中
使用Git for Windows工具,在Git Bash 中輸入clone指令: git clone https://{name}.scm.azure-api.cn/, 根據彈出框輸入使用者名稱和密碼, 通過APIM Repository 頁面中的 Acess Credentials方式獲取。
步驟三:本地修改相應的APIM配置檔案
APIM Repository中,每個資料夾都可包含一個或多個檔案,並且在某些情況下可包含一個或多個資料夾,例如,每個 API、產品或組對應一個資料夾。 每個資料夾內的檔案都特定於資料夾名稱所述的實體型別。
- json :關於相應實體的配置資訊
- html :關於實體的說明,通常顯示在開發人員門戶中
- xml :策略語句
- css :用於開發人員門戶自定義的樣式表
可在本地檔案系統中建立、刪除、編輯和管理這些檔案,並將更改部署回 API 管理服務例項。
步驟四:將更改從本地儲存庫推送到APIM伺服器儲存器
要將更改從本地儲存庫推送到伺服器儲存庫,必須提交更改,然後將它們推送到伺服器儲存庫。 要提交更改,請開啟 Git 命令工具、切換到本地儲存庫的目錄,併發出以下命令。
git add --all git commit -m "本次修改的文字描述" #將所有提交推送到伺服器 git push
步驟五:將更改部署到API Management例項中
完成第四步,將本地更改提交併推送到伺服器儲存庫後,可將它們部署到 API 管理服務例項。可以在APIM Repository的頁面中點選“Deploy to API Management”按鈕,或者是通過REST API來執行Deploy操作。
API Management頁面上點選“Deploy to API Management”按鈕
Deploy API: https://docs.microsoft.com/zh-cn/rest/api/apimanagement/current-ga/tenant-configuration/deploy
注:中國區的API為:https://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/deploy?api-version=2021-08-01
參考資料
如何使用 Git 儲存和配置 API 管理服務: https://docs.azure.cn/zh-cn/api-management/api-management-configuration-repository-git