Image Azure:从VM创建映像时blob uri为null

Image Azure:从VM创建映像时blob uri为null,image,azure,virtual-machine,Image,Azure,Virtual Machine,我正在使用Azure CLI v2.0,当我尝试从VM创建映像时,blob URI为空: { ... “osDisk”:{ “blobUri”:空, ... } ... } 我遵循了中的步骤,使用了在Azure门户上创建的Ubuntu LTS VM 奇怪的是,我已经从一个VM创建了一个映像,此时,我的映像有一个BlobURI 我需要blob URI来获取SAS,以便在Azure marketplace中发布应用程序 此外,URI也不会出现在Azure门户中,如果我尝试从该映像创建VM,则会成功

我正在使用Azure CLI v2.0,当我尝试从VM创建映像时,blob URI为空: { ... “osDisk”:{ “blobUri”:空, ... } ... }

我遵循了中的步骤,使用了在Azure门户上创建的Ubuntu LTS VM

奇怪的是,我已经从一个VM创建了一个映像,此时,我的映像有一个BlobURI

我需要blob URI来获取SAS,以便在Azure marketplace中发布应用程序

此外,URI也不会出现在Azure门户中,如果我尝试从该映像创建VM,则会成功

有人对为什么会发生这种情况有什么建议吗


谢谢。

默认情况下,我们使用CLI 2.0创建映像,新的创建映像不会存储在Azure存储帐户中,我们可以在
映像中找到它:

=========================================================================
更新
托管的磁盘创建映像,我们在Azure portal中找不到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>`.
更新3:
我们可以使用CLI 2.0将快照复制到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'
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

有关将快照复制到存储帐户的详细信息,请参阅此。

您的意思是找不到新映像的URI吗?是和否:我不知道是否找不到它,或者它是否不是创建的,因为我无法在Azure门户上或使用Azure storage Explorer工具找到它。请使用CLI 2.0创建Azure映像,此映像未存储在存储帐户中,您可以在
映像
中找到它。不,我获得了映像,但不是生成SAS所需的操作系统磁盘的blob uri:@Gabriel目前,我们无法授予对托管映像的访问权。作为一种解决方法,也许我们可以使用快照来完成,我们可以将快照复制到不同的区域,并使用此快照创建新的托管映像,然后使用此映像创建新的VM。我已经更新了我的答案,请检查它。谢谢你,但我遵循了这些步骤,但我认为这无法为Azure Marketplace上的应用程序获取SKU的正确SAS:如文档()中所述。SAS URI必须包含sr=c以表示容器访问级别,sp=rl以表示对blob容器的读取和列表访问。在这里,对于快照,我只得到sr=b,据我所知,快照的SAS是只读的。另外,我在上个月成功地为上一个版本创建了一个带有blob URI的图像version@Gabriel这个虚拟机是新创建的吗?对不起,我不明白你的问题。我创建了一个虚拟机从我现有的形象,这是你问的吗?