我正在编写一个清除脚本,该脚本删除Azure映像及其底层存储blob。我可以用以下命令找到我的图像的存储blob:
az image list --query "[?name=='$IMAGE_NAME'] | [].storageProfile.osDisk.blobUri"
(这是bash,所以$IMAGE_NAME
被替换为实际的图像名称(。上面命令的输出是URI的JSON列表,每个URI看起来像这样:
https://storage_account.blob.core.windows.net/container_name/blob_name.vhd
查看az存储blob删除的文档,我可以看出这个blob可以通过以下命令删除:
az storage blob delete --account-name storage_account --container container_name --name blob_name.vhd
因此,很明显,我可以解析URI,然后生成这个命令。然而,这似乎很奇怪:如果你不能使用Blob,那么给它们一个URI有什么意义?
所以我的问题是:
- 是否有直接的az-cli命令可以使用blob的URI删除blob
- 更好的是,有没有办法删除与给定Azure映像关联的blob
没有内置的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