我正在使用 Python Azure SDK,但遇到了以下问题。
我想要做的是生成仅在给定容器上使用的容器 SAS 令牌,为此我使用 Azure SDKgenerate_container_sas
def get_temporary_access_token(self):
sas_token = generate_container_sas(
self.account_name,
self.container_name,
self.storage_token,
permission=ContainerSasPermissions(read=True, write=True, delete=True, list=True),
expiry=datetime.utcnow() + self.sas_token_expiry_time
)
return sas_token
这会返回一个看起来像的字符串se=<end_datetime>&sp=<Permission>&sv=2019-07-07&sr=c&sig=<token>
现在使用这个令牌我可以做各种各样的事情,但我遇到的麻烦是使用这个链接来临时下载某个 blob 的链接。
我试图用这种方法来做到这一点:
def get_temporary_download_link(self, blob_full_path, expires_time):
base_temp_url = f'{self._get_base_resource_url()}/{self.container_name}/{blob_full_path}'
token = generate_blob_sas(
account_name=self.account_name,
account_key=self.sas_token,
container_name=self.container_name,
blob_name=blob_full_path,
permission=BlobSasPermissions(read=True),
expiry=datetime.utcnow() + timedelta(seconds=expires_time)
)
return f'{base_temp_url}?{token}'
现在,当我尝试使用在上述方法中构建的链接时,我在以下方法中失败了b64decode
。
从中我可以理解,我不打算将 SAS 令牌用于临时下载链接,我只能通过使用资源令牌或用户委托对象来做到这一点?我还尝试通过对 SAS 令牌进行编码来“愚弄”该方法,但导致 URL 出错Signature did not match
我没有找到任何关于我可以使用资源 SAS 令牌与 UserDelegationKey 做什么或不能做什么的文档,有人知道是否可以使用资源 SAS 令牌进行临时下载?
提前致谢