我正在尝试将blob从一个uri复制到另一个uri(都在同一个存储帐户中),两者都有一个用于凭据的SAS令牌。这适用于没有IP限制的SAS令牌,但在源blob SAS令牌受IP限制时失败。
注意:它没有失败,因为我的IP错误,其他blob函数工作,即列表,删除,上传等。
示例代码:
SELECT CASE
WHEN DATALENGTH(IDNumber) > 7 THEN SUBSTRING(IDNumber, 0, 6)
WHEN DATALENGTH(IDNumber) < 7 THEN CONCAT(REPLICATE(0, LEN(IDNumber)), IDNumber)
END AS NID;
有一种猜测是复制请求来自Azure内部,因此IP地址被阻止了?我应该将源SAS令牌配置为接受Azure中的IP范围吗? 是否有另一种方法可以复制允许使用SAS令牌的blob?
答案 0 :(得分:2)
有一种猜测是复制请求来自Azure内部 IP地址被阻止了?我应该将源SAS令牌配置为 接受Azure中的IP范围?
你是绝对正确的。复制操作是服务器端操作,SAS令牌中指定的IP地址是客户端IP地址。由于SAS中包含的IP地址不是Azure IP地址,因此复制操作失败。您可以配置SAS令牌以接受Azure中的IP范围,但我猜测是否正在使用复制某些内部IP地址,因此我不确定这是否可行。
是否有另一种方法可以复制允许使用SAS令牌的blob?
我建议不要在SAS中使用IP ACL进行复制操作,即不要在SAS中指定用于复制操作的IP地址限制。