问题描述

需要从 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中。

【Azure API 管理】讨论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+ 容器名称

【Azure API 管理】讨论APIM是否适合直接存储文件到Azure Storage Account呢?_APIM_02

 

 

参考资料

发送请求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​

当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!