【问题标题】:Delete Azure storage blob given a URI删除给定 URI 的 Azure 存储 Blob
【发布时间】:2021-06-10 07:34:59
【问题描述】:

我正在编写一个删除 Azure 映像及其底层存储 blob 的清理脚本。我可以使用以下命令找到我的图像的存储 blob:

az image list --query "[?name=='$IMAGE_NAME'] | [].storageProfile.osDisk.blobUri"

(这是 bash,所以 $IMAGE_NAME 被替换为实际的图像名称)。上述命令的输出是一个 URI 的 JSON 列表,每个看起来像这样:

https://storage_account.blob.core.windows.net/container_name/blob_name.vhd

查看az storage blob delete 的文档,我可以看出可以使用如下命令删除此 blob:

az storage blob delete --account-name storage_account --container container_name --name blob_name.vhd

所以,显然我可以解析 URI,然后生成这个命令。然而,这似乎很奇怪:如果你不能使用 blob,那么给它们一个 URI 又有什么意义呢?

所以我的问题是:

  1. 是否有直接的 az cli 命令使用其 URI 删除 blob?
  2. 更好的是,有没有办法删除与给定 Azure 映像关联的 blob?

【问题讨论】:

    标签: azure azure-blob-storage azure-cli


    【解决方案1】:

    没有内置的 CLI 命令可以直接使用 blob url 删除。有一种解决方法是使用az rest 调用Delete Blob REST API。

    access_token = $(az account get-access-token --resource https://storage.azure.com/ --query accessToken -o tsv)
    now = $(env LANG=en_US TZ=GMT date '+%a, %d %b %Y %T %Z')
    headers = "Authorization=Bearer "+$access_token+" x-ms-date="+$now+" x-ms-version=2020-08-04"
    az rest --method delete --uri $blob_url --headers $headers 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-23
      • 2016-06-13
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2021-08-31
      • 2018-06-05
      • 2017-05-20
      相关资源
      最近更新 更多