使用Python将Azure文件存储文件复制到Blob存储授权报错如何解决
错误说明
你遇到的报错信息如下:
azure.core.exceptions.ResourceNotFoundError: This request is not authorized to perform this operation using this resource type.
该错误核心由账户SAS令牌的资源类型配置不匹配导致:当前SAS仅开放了service级资源权限,而访问文件存储中的单个文件需要object级资源权限。
排查与解决步骤
- 修正SAS令牌生成配置
将generate_account_sas方法的resource_types参数调整为同时开启service和object权限,修改后的代码片段如下:
sas_token = generate_account_sas( account_name=account_name, account_key=account_key, # 新增object级资源权限,满足单个文件访问要求 resource_types=ResourceTypes(service=True, object=True), permission=AccountSasPermissions(read=True), expiry=datetime.utcnow() + timedelta(hours=1) )
修改后生成的SAS令牌参数srt值会变为so,即可支持访问单个文件对象。
- 验证网络访问权限
确认存储账号的防火墙配置已添加本地运行环境的公网IP,同时未配置VNet访问限制阻断本地请求。 - 检查资源与账号权限
确认目标Blob容器event已存在,你使用的存储账户密钥拥有Blob写入权限,同时源文件共享test-share中确实存在对应的待复制文件。 - 验证SAS有效性
可直接将生成的源文件URL复制到浏览器地址栏访问,如果能正常触发文件下载则说明SAS配置正确,若仍报错可根据浏览器返回的错误信息进一步定位问题。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

