問題描述
需要從 APIM 直接将大檔案存入Azure Storage,沒看到這方面的官方文檔,是以是否有這方面的實踐案例,或者APIM是否支援引用SDK (如Azure Storage SDK)?
問題分析
API Management (APIM) 是一種為API 網關的實作,不适合通過APIM來直接操作存儲大檔案到Azure Storage中。同時,APIM作為網關,是不支援引入SDK進行代碼操作的。是以也是無法使用Azure Storage SDK。
但是,Azure Storage 是支援REST API的方式來存入檔案,是以可以把Storage的API作為APIM的後端服務,間接實作調用APIM服務存儲檔案到Azure Storage Account中。
(Source: https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob)
而在APIM中配置可以通過SAS URL 來實作驗權并上傳檔案。配置示例如下
- Frontend 的URL是 /{file name} + SAS 令牌
- Backend 的 Web Service URL是Storage URL+ 容器名稱
參考資料
發送請求Policy請參考:https://docs.azure.cn/zh-cn/api-management/api-management-sample-send-request
APIM Policy表達式中允許使用的.net framework類型請參考:https://docs.azure.cn/zh-cn/api-management/api-management-policy-expressions#net-framework-types-allowed-in-policy-expressions
Azure Storage - Put Blob: https://docs.microsoft.com/en-us/rest/api/storageservices/put-blob#request-body
當在複雜的環境中面臨問題,格物之道需:濁而靜之徐清,安以動之徐生。 雲中,恰是如此!