我在使用 azure stprage blob sdk 取消删除已删除的容器时遇到错误。
这些是我正在使用的软件包版本:
azure-storage-blob =“=12.18.3” 天蓝色管理存储 =“=21.1.0”
我已经创建了 blobserviceclient 并调用 undelete_container 函数来恢复已删除的容器。
blob_service_client = BlobServiceClient(storage_account_url, credential=default_credential)
recovered_containers = blob_service_client.undelete_container(container_name, deleted_container_version = '')
我面临的问题是“deleted_container_version”是 undelete_container 的强制参数。但我不知道要提供的价值是什么。这被定义为字符串参数。
我需要传递的值应该是多少?
请指导我解决这个问题。先谢谢你了
我确实尝试将deleted_container_version作为空字符串,最新值,但没有通过。
在不传递deleted_container_version时收到错误,指出deleted_container_version是强制参数,需要传递。
在将它们作为空字符串或最新字符串传递时,收到错误消息,指出标头版本是无效值或类似的内容,
我在使用 Azure 存储 blob sdk 取消删除已删除的容器时遇到错误。
我同意 KKI 的评论,即获取已删除的容器首先列出带有
include_deleted=True
的容器,从中您可以获取容器的版本。
对于 Azure Blob 存储中的
undelete
特定容器 test
,您可以使用以下 Python 代码。
代码:
from azure.storage.blob import BlobServiceClient
from azure.identity import DefaultAzureCredential
storage_account_url="https://xxxx.blob.core.windows.net/"
default_credential=DefaultAzureCredential()
blob_service_client = BlobServiceClient(storage_account_url, credential=default_credential)
for container in blob_service_client.list_containers(include_metadata=True, include_deleted=True):
if container.name == "<container name>":
version_id = container.version
break
blob_service_client.undelete_container("test", deleted_container_version=version_id)
输出:
如果您需要
undelete all
容器,您可以使用以下代码。
代码:
from azure.storage.blob import BlobServiceClient
from azure.identity import DefaultAzureCredential
storage_account_url="https://venkat901.blob.core.windows.net/"
default_credential=DefaultAzureCredential()
blob_service_client = BlobServiceClient(storage_account_url, credential=default_credential)
for container in blob_service_client.list_containers(include_metadata=True, include_deleted=True):
if container.deleted:
version_id = container.version
container_name = container.name
blob_service_client.undelete_container(container_name, deleted_container_version=version_id)
输出:
参考:
这段代码有效。
def recover_soft_deleted_containers_on_storage_account(storage_account: str, container_name: str):
"""
recover soft deleted containers.
Operation will only be successful if used within the specified number of days set in the delete retention policy.
Args:
storage_account:
container_name:
Returns:
"""
blob_service_client = create_blob_service_client(storage_account=storage_account)
container_list = list(blob_service_client.list_containers(include_deleted=True))
assert len(container_list) >= 1
for container in container_list:
# Find the deleted container and restore it
if container.deleted and container.name == container_name:
restored_container_client = blob_service_client.undelete_container(
deleted_container_name=container.name, deleted_container_version=container.version)
print(f"Container {container_name} recovered from {storage_account}")