Azure SDK C# - 计划虚拟机自动关机

Azure SDK C# - Plan Virtual Machine Auto Shutdown

我正在寻找有关如何从 Azure C# SDK 计划关闭 Azure 虚拟机的文档/示例。

我的想法是,在从 SDK 创建 VM 时,我想设置 VM 自动关闭的时间。我似乎无法在 API 中找到任何功能来以明显的方式做到这一点。

门户中虚拟机的自动关闭选项使用 Microsoft.DevTestLab 提供程序。这对微软来说有点 hack,将来可能会改变。

不幸的是,SDK 的 Microsoft.Azure.Management.DevTestLabs 命名空间仅包含为与真正的开发测试实验室交互而构建的方法,这意味着对管理 API 的所有调用都将“/labs/”附加到URI 因此使 API 请求无效;实际资源为:

https://management.azure.com/subscriptions/{Subsciption-Id}/resourceGroups/{Resource-Group}/providers/Microsoft.DevTestLab/schedules/shutdown-computevm-{VM-Name}?api-version=2018-09-15

(注意 URI 不包含“/labs/”)

可以使用ARM进行部署,可以deployed/updated使用正确的URI调用管理API

这是一个例子:

PUT https://management.azure.com/subscriptions/{SUBSCRIPTION-ID}/resourceGroups/{RESOURCE-GROUP-NAME}/providers/Microsoft.DevTestLab/schedules/shutdown-computevm-{VMNAME}?api-version=2018-09-15 HTTP/1.1
User-Agent: Fiddler
Authorization: Bearer {BEARER-TOKEN-HERE}
Host: management.azure.com
Content-Type: application/json
Content-Length: 1048

{
  "id": "/subscriptions/{SUBSCRIPTION-ID}/resourcegroups/{RESOURCE-GROUP-NAME}/providers/microsoft.devtestlab/schedules/shutdown-computevm-{VMNAME}",
  "identity": null,
  "kind": null,
  "location": "{VM-LOCATION}",
  "managedBy": null,
  "name": "shutdown-computevm-{VM-NAME}",
  "plan": null,
  "properties": {
    "createdDate": "2019-10-29T19:45:57.0033318+00:00",
    "dailyRecurrence": {
      "time": "{4-DIGIT-24HOUR-TIME-HHmm}"
    },
    "notificationSettings": {
      "notificationLocale": "en",
      "status": "Disabled",
      "timeInMinutes": 30
    },
    "provisioningState": "Succeeded",
    "status": "Enabled",
    "targetResourceId": "/subscriptions/{SUBSCIPTION-ID}/resourceGroups/{RESOURCE-GROUP}/providers/Microsoft.Compute/virtualMachines/{VMNAME}",
    "taskType": "ComputeVmShutdownTask",
    "timeZoneId": "GMT Standard Time",
    "uniqueIdentifier": "7c394xxx-3fdd-4xxa-8cdc-7c7e6xxxxxxc"
  },
  "resourceGroup": "{RESOURCE-GROUP-NAME}",
  "sku": null,
  "tags": null,
  "type": "microsoft.devtestlab/schedules"
}

您可以使用此 JSON,替换用大括号括起来的值,并根据需要创建或更新资源。如果资源已经存在,它将被覆盖。