我在资源组中的“westus”位置有一个带有托管磁盘和该 OS 磁盘快照的虚拟机。现在,我尝试从快照创建另一个 OS 磁盘,但这次,我为目标资源提供的位置为“westus2”。以下命令在 azure CLI 2.0 上返回“未找到实体”错误。
用户@ubuntu:az 磁盘创建-g myresgrp-n newsnapdisk-l westus2 --source /subscriptions/xxxxxxxxxx/resourceGroups/myresgrp/providers/Microsoft.Compute/snapshots/mysnapshot 未找到实体。
如果将位置更改为“westus”而不是“westus2”,则该命令可以正常工作。我找不到足够的文档来说明此错误的含义,但我已经验证了命令中涉及的资源和资源组确实存在。
是什么原因导致了这个问题?我该如何解决这个问题?
答案1
Azure 不支持从不同位置的快照创建磁盘。
您应该将快照复制到 westus2 存储帐户,然后可以从存储帐户在 westus2 中创建快照。您可以使用以下脚本来执行此操作。
##generate SAS URI for a managed snapsho
sasExpiryDuration=1800
sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)
##create storage account in westus2 and get the storage account key
##copy the snapshot to a storage account using SAS URI.
az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas
##wait for a moment after the copy finished
az snapshot create -g MyResourceGroup -n MySnapshot --source https://vhd1234.blob.core.windows.net/vhds/osdisk1234.vhd
下面只是一个例子,它对我有用。
sasExpiryDuration=1800
sas=$(az snapshot grant-access --resource-group shui2 --name shui --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)
az storage blob copy start --destination-blob shuitest.vhd --destination-container vhds --account-name shui123 --account-key ****** --source-uri $sas
az snapshot create -g shui3 -n shui2 --source https://shui123.blob.core.windows.net/vhds/shuitest.vhd