【Azure API 管理】API Management如何有效且快速更新呢?如對APIs/Policy等設置內容

問題描述

APIM中的內容(API, Policy)等內容,如果有需要更新時候,通常可以在Azure APIM門戶上操作,通過一個介面一個設置的修改,也可以針對一個介面導入/導出的方式修改。當APIM中的API成數量級上升後,這樣的操作方式就變得很慢很沒有效率,是否有更高效得方式呢?

以上兩種方式都適合少量修改的情況。如果是APIM中大量API都需要修改呢?

問題解答

有的,因為APIM可以使用 Git 管理服務實例配置,實現批量更改。參考的官方文檔為://docs.azure.cn/zh-cn/api-management/api-management-configuration-repository-git

實現步驟

步驟一:將APIM服務配置保存到 Git 存儲庫

克隆存儲庫之前的第一個步驟是將服務配置的當前狀態保存到存儲庫。 單擊「保存到存儲庫」。片刻後配置已保存,並顯示存儲庫的配置狀態,包括上次配置更改和服務配置與存儲庫之間上次同步的日期和時間。

將配置保存到存儲庫後,可以克隆它。

APIM Repository中的文件結構為:

  1. 根文件夾( api-management ) :包含服務實例的頂級配置
  2. apis 文件夾 : 包含服務實例中的 API 的配置
  3. groups 文件夾 : 包含服務實例中的組的配置
  4. policies 文件夾 : 包含服務實例中的策略
  5. portalStyles 文件夾 : 包含服務實例中的開發人員門戶自定義的配置
  6. products 文件夾 : 包含服務實例中產品的配置
  7. templates 文件夾 : 包含服務實例中電子郵件模板的配置

這一步的操作截圖如下:

步驟二:將APIM Repository 克隆到本地環境中

使用Git for Windows工具,在Git Bash 中輸入clone指令: git clone //{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: //docs.microsoft.com/zh-cn/rest/api/apimanagement/current-ga/tenant-configuration/deploy

註:中國區的API為://management.chinacloudapi.cn/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/tenant/configuration/deploy?api-version=2021-08-01

 

 

參考資料

如何使用 Git 保存和配置 API 管理服務: //docs.azure.cn/zh-cn/api-management/api-management-configuration-repository-git