Azure Rest API 附加现有托管磁盘

Posted

技术标签:

【中文标题】Azure Rest API 附加现有托管磁盘【英文标题】:Azure Rest API attach an existing managed disk 【发布时间】:2021-02-24 21:58:35 【问题描述】:

使用逻辑应用程序,从 HTTP 请求操作调用 Azure Rest API,我尝试创建托管磁盘(从快照),然后将磁盘附加到现有 VM。 我可以从创建的快照中获取磁盘——这很容易。但是,我无法正确地尝试附加磁盘的 Rest API 调用。

我有一个这样的 PUT 请求: https://management.azure.com/subscriptions/xxxxx-xxxx-cxxxxxfxxxx-xxxxxx/resourceGroups/rgname/providers/Microsoft.Compute/virtualMachines/vm-test?api-version=2020-06-30

和一个 JSON 体,如: “数据磁盘”: “缓存”:“无”, "createOption": "附加", “伦”:6, “托管磁盘”: "id": "/subscriptions/xxxxx-xxxx-cxxxxxxfxxxx-xxxxx/resourceGroups/rgname/providers/Microsoft.Compute/disks/disk-12345-november", “storageAccountType”:“标准_LRS”

这是有效的 JSON。 Azure 的错误是“bad reqeust”

“错误”: "code": "ResourceReadFailed", “目标”:“虚拟机测试”, “消息”:“策略需要完整的资源内容来评估请求。获取资源的请求 'https://management.azure.com/subscriptions/xxxxxxx-xxxxxxxx-xxxxxxxx-xxxxxxx/resourceGroups/rg-name/providers/Microsoft .Compute/virtualMachines/vm-test?api-version=2020-06-30' 失败,状态为 'BadRequest'。”

【问题讨论】:

【参考方案1】:

您使用的 REST API 是正确的,但您需要使用更完整的主体,如下所示:


  "properties": 
      "storageProfile": 
        "dataDisks": [
            
                "createOption": "Attach",
                "lun": 1,
                "managedDisk": 
                    "id": "xxxxx"
                
            
        ]
    
  

【讨论】:

非常感谢@charles。我将对此进行测试并尽快标记正确。欣赏它。 仍然不完全存在 - 它不喜欢我用作 json 正文的任何​​格式。当我使用新的存储配置文件更新 VM 时,我是否真的需要将完整的 VM 描述构建到 json 中,包括 OS 磁盘,如示例所示:docs.microsoft.com/en-us/rest/api/compute/virtualmachines/…。此外,在更仔细地查看示例后,我确实将方法从 PUT 更改为 PATCH。我不确定这是否完全重要。 天哪——这很有趣。不同 REST API 示例中的各种 API 日期。所以 PATCH 可能很重要,但 API 版本日期需要是 2020-06-01 而不是 2020-06-30。 @ts488513 我认为 API 版本有所不同。新版本总是有所作为。我使用最新的 API 版本。您只需要添加将在正文中更新的属性。 @ts488513 如果它适合你,请接受它。

以上是关于Azure Rest API 附加现有托管磁盘的主要内容,如果未能解决你的问题,请参考以下文章

将 WCF SOAP 和 WCF REST 服务托管为 Azure 应用服务

Azure:在为 azure 创建新的联合国托管磁盘时无法指定存储帐户。

如何升级现有服务结构 vmss 以使用托管磁盘

Azure运维系列11:Azure托管磁盘转非托管磁盘

如何使用 Powershell 中的快照创建 Azure 托管磁盘

如何将 Azure 托管磁盘克隆到不同的订阅中?