默认情况下,我们使用 CLI 2.0 创建镜像,新创建的镜像不存储在 Azure 存储帐户中,我们可以在 images 找到它:
================================================ =========
更新:
从 托管 磁盘创建映像,我们在 Azure 门户中找不到 URI:
目前,我们无法为托管映像创建 SAS。
在您的场景中,我认为我们应该使用快照。快照是磁盘在拍摄时的副本,它仅适用于一个磁盘。如果您的虚拟机只有一个磁盘(操作系统),我们可以对其进行快照(我们应该先对其进行概括)。
创建快照后,我们可以授予对该快照的访问权限,也可以将该快照复制到目标 Azure 订阅。然后我们可以使用这个快照创建一个镜像,并使用这个镜像创建一个新的vm。(快照可以复制到不同的区域。)
关于创建这个快照的SAS,我们可以使用CLI 2.0来做。
C:\Users\jason>az snapshot grant-access --help
Command
az snapshot grant-access: Grant read access to a snapshot.
Arguments
--duration-in-seconds [Required]: Time duration in seconds until the SAS access expires.
Resource Id Arguments
--ids : One or more resource IDs (space delimited). If provided, no
other 'Resource Id' arguments should be specified.
--name -n : The name of the snapshot.
--resource-group -g : Name of resource group. You can configure the default group
using `az configure --defaults group=<name>`.
更多关于使用快照创建新虚拟机的信息,请参考link。
如何从快照创建托管镜像,请参考link。
更新2:
我们可以使用 powershell 将托管磁盘复制到 Azure 存储帐户:
##create $SAS
$sas = Grant-AzureRmDiskAccess -ResourceGroupName shui -DiskName test -DurationInSecond 3600 -Access Read
$destContext = New-AzureStorageContext –StorageAccountName contosostorageav1 -StorageAccountKey 'YourStorageAccountKey'
Start-AzureStorageBlobCopy -AbsoluteUri $sas.AccessSAS -DestContainer 'vhds' -DestContext $destContext -DestBlob 'MyDestinationBlobName.vhd'
更新3:
我们可以使用 CLI 2.0 将快照复制到 Azure 存储帐户:
az account set --subscription $subscriptionId
sas=$(az snapshot grant-access --resource-group $resourceGroupName --name $snapshotName --duration-in-seconds $sasExpiryDuration --query [accessSas] -o tsv)
az storage blob copy start --destination-blob $destinationVHDFileName --destination-container $storageContainerName --account-name $storageAccountName --account-key $storageAccountKey --source-uri $sas
有关将快照复制到存储帐户的更多信息,请参阅link。