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 命令并允许您无错误地启动这些命令。
我正在尝试使用 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 命令并允许您无错误地启动这些命令。