首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨存储帐户的azure复制块失败,错误代码:CannotVerifyCopySource

跨存储帐户的azure复制块失败,错误代码:CannotVerifyCopySource
EN

Stack Overflow用户
提问于 2022-09-13 22:25:02
回答 2查看 445关注 0票数 0

我使用python将blobs从一个容器复制到另一个容器,下面是代码,

代码语言:javascript
复制
from azure.storage.blob import BlobServiceClient

src_blob = '{0}/{1}'.format(src_url,blob_name)
destination_client = BlobServiceClient.from_connection_string(connectionstring)
copied_blob = destination_client.get_blob_client(dst_container,b_name)
copied_blob.start_copy_from_url(src_blob)

它抛出下面的错误,

代码语言:javascript
复制
 Content: <?xml version="1.0" encoding="utf-8"?><Error><Code>CannotVerifyCopySource</Code><Message>Public access is not permitted on this storage account.

我已经在这里读过这篇文章了,在我的例子中,公共通道被禁用了。

我没有足够的特权允许公众访问存储和测试?在不改变设置的情况下,围绕解决方案是否有工作可以完成复制?

Azcopy 409 Public access is not permitted on this storage account

我需要改变连接到帐户的方式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-14 04:06:28

在跨存储帐户复制blob时,源blob必须是公开访问的,这样Azure存储服务才能访问源blob。您得到错误是因为您只使用blob的URL。如果blob位于私有blob容器中,则Azure存储服务将无法仅使用其URL访问blob。

要解决此问题,您需要至少使用Read权限在源blob上生成一个SAS令牌,并使用该SAS作为复制源。

所以你的代码应该是这样的:

代码语言:javascript
复制
src_blob_sas_token = generate_sas_token_somehow()
src_blob = '{0}/{1}?{2}'.format(src_url,blob_name, src_blob_sas_token)
票数 0
EN

Stack Overflow用户

发布于 2022-09-13 22:55:07

检查您的SAS令牌的特权。

在您的示例中,看起来不像是要传递SAS令牌

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73709699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档