我使用python将blobs从一个容器复制到另一个容器,下面是代码,
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)它抛出下面的错误,
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
我需要改变连接到帐户的方式吗?
发布于 2022-09-14 04:06:28
在跨存储帐户复制blob时,源blob必须是公开访问的,这样Azure存储服务才能访问源blob。您得到错误是因为您只使用blob的URL。如果blob位于私有blob容器中,则Azure存储服务将无法仅使用其URL访问blob。
要解决此问题,您需要至少使用Read权限在源blob上生成一个SAS令牌,并使用该SAS作为复制源。
所以你的代码应该是这样的:
src_blob_sas_token = generate_sas_token_somehow()
src_blob = '{0}/{1}?{2}'.format(src_url,blob_name, src_blob_sas_token)发布于 2022-09-13 22:55:07
检查您的SAS令牌的特权。
在您的示例中,看起来不像是要传递SAS令牌
https://stackoverflow.com/questions/73709699
复制相似问题