Google Compute Engine API:无法从机器映像创建实例

Google Compute Engine API : can't create instance from machine image

我正在尝试使用 Google API NodeJS SDK 从我之前创建的机器映像创建一个新的 GCE 实例。 我正在使用 GCP UI 控制台提供的 JSON 模板。

但是当我调用创建函数时,SDK return 出现关于磁盘资源的错误:
Error: Invalid value for field 'resource.disks': ''. No disks are specified.

JSON 模板确实只包含 disks : [],但磁盘应该是从机器映像创建的,我无法使用“sourceDisk”对象创建新磁盘(已尝试“ SourceImage”,但它无法使用机器映像 url)

我无法从文档中找到有关 SDK 中机器映像的大量信息。我错过了什么吗?

我的config.json

{
   ​"kind": "compute#instance",
   ​"name": "$vmName",
   ​"project": "xxxx",
   ​"zone": "projects/xxx/zones/europe-west4-a",
   ​"minCpuPlatform": "Automatic",
   ​"machineType": "projects/xxxx/zones/europe-west4-a/machineTypes/n1-standard-2",
   ​"displayDevice": {
       ​"enableDisplay": false
   ​},
   ​"metadata": {
       ​"kind": "compute#metadata"
   ​},
   ​"disks": [],
   ​"canIpForward": false,
   ​"description": "",
   ​"labels": {},
   ​"scheduling": {
       ​"preemptible": false,
       ​"onHostMaintenance": "MIGRATE",
       ​"automaticRestart": true,
       ​"nodeAffinities": []
   ​},
   ​"deletionProtection": false,
   ​"reservationAffinity": {
       ​"consumeReservationType": "ANY_RESERVATION"
   ​},
   ​"sourceMachineImage": "projects/xxxx/global/machineImages/vm-snap-test-damien",
   ​"shieldedInstanceConfig": {
       ​"enableSecureBoot": false,
       ​"enableVtpm": true,
       ​"enableIntegrityMonitoring": true
   ​},
   ​"confidentialInstanceConfig": {
       ​"enableConfidentialCompute": false
   ​}
}

我找到了解决方案。

GCE 中的 MachineInstance API 用于某些仍在 beta 中的函数。
Google NodeJS API 默认使用 v1 端点。 要更改它,只需更改 Google 的资源对象中的 baseURL。对于我来说是

var Compute = require('@google-cloud/compute');
const compute = new Compute()
compute.baseUrl = 'https://compute.googleapis.com/compute/beta' //Using Beta commands 

这将启用 beta 命令并允许您无错误地启动这些命令。