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

时间:2017-07-04 09:07:52

标签: image azure virtual-machine

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

我按照Microsoft doc中的步骤操作,并使用了在Azure门户上创建的Ubuntu LTS VM。

奇怪的是我已经从VM创建了一个图像,此时,我的图像有一个blob URI。

我需要使用blob URI来获取SAS才能在Azure市场中发布应用程序。

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

有没有人对为什么会这样做有任何建议?

谢谢。

1 个答案:

答案 0 :(得分:1)

默认情况下,我们使用CLI 2.0创建图像,新的创建图像存储在Azure存储帐户中,我们可以在images中找到它:
enter image description here

=============================================== =========
更新
托管磁盘创建图像,我们无法在Azure门户中找到URI: enter image description here

目前,我们无法为托管图片创建SAS 在您的方案中,我认为我们应该使用快照。快照是磁盘的一个副本,它只适用于一个磁盘。如果您的VM只有一个磁盘(操作系统),我们可以对其进行快照(我们应该先对其进行概括)。

创建快照后,我们可以授予对此快照的访问权限,我们也可以将此快照复制到目标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>`.

有关使用快照创建新VM的详细信息,请参阅此link

如何从快照创建托管图像,请参阅此link

Update2

我们可以使用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'

UPDATE3:
我们可以使用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