使用 REST API 创建 OS Azure 托管磁盘

Create OS Azure Managed Disk using REST API

我正在尝试按照 this document 创建 OS 托管磁盘 (Ubuntu 18.04)。但是我找不到合适的正文示例来创建这样的磁盘。我试着发送这个:

PUT https://management.azure.com/subscriptions/mysubscription/resourceGroups/myresourcegroup/providers/Microsoft.Compute/disks/mydisk?api-version=2018-09-30
{
    "name": "mydisk",
    "location": "westus2",
    "properties": {
        "osType": "Linux",
         "diskSizeGB": 32,
         "creationData": {
            "createOption": "FromImage",
            "imageReference": {
                "id": "/subscriptions/mysubscription/Providers/Microsoft.Compute/Locations/westus2/Publishers/Microsoft/ArtifactTypes/VMImage/Offers/UbuntuServer"
            }
        }
    }
}

但我得到回复:

{
    "error": {
        "code": "InvalidParameter",
        "message": "The value of parameter imageReference is invalid.",
        "target": "imageReference"
    }
}

有没有办法创建这样的磁盘?在我的示例中编辑了订阅 ID 和资源组名称。

我正在尝试以这种方式创建这样的磁盘,因为如果我在 VM 创建期间指定它,它将为 OS 托管磁盘生成一些名称。然后当我需要删除 VM 时,将很难确定要删除哪个 OS 托管磁盘。所以我希望这个磁盘有指定的名称,而不是随机的。

如错误所示,参数imageReference的值无效。一张特殊图片会有很多版本。比如UbuntuServer在Azure镜像中有很多SKU。

创建虚拟机时,可以使用 CLI 命令查看 OS 磁盘:

az disk show -g yourgroup -n yourdisk

您将看到 imageReference,对于 UbuntuLTS 图像,id 将如下所示:

/Subscriptions/yoursubscription/Providers/Microsoft.Compute/Locations/eastus/Publishers/Canonical/ArtifactTypes/VMImage/Offers/UbuntuServer/Skus/18.04-LTS/Versions/18.04.201903200

所以你应该提供一张特殊的图片。不是 UbuntuServer。