通过API创建带互联网连接的GCE VM时如何配置获取外部IP
解决方案
你需要在createVM方法的配置参数中显式添加networkInterfaces配置,指定为实例分配临时外部IP,修改后的代码参考如下:
var vmName = 'testvm1'; const [vm, operation] = await zone.createVM(vmName, { os: 'ubuntu', // 新增网络配置 networkInterfaces: [{ network: 'global/networks/default', // 替换为你实际使用的VPC名称,默认值为default subnetwork: 'regions/us-central1/subnetworks/default', // 替换为对应区域的子网名称 accessConfigs: [{ name: 'External NAT', type: 'ONE_TO_ONE_NAT' }] }] }); // 第二个创建实例的代码同理添加配置即可 zone.createVM('debian-http', { disks: [{ boot: true, source: 'https://www.googleapis.com/compute/v1/projects/[project-id]/zones/us-central1-f/disks/debian-http' }], http: true, machineType: 'f1-micro', // 新增网络配置 networkInterfaces: [{ network: 'global/networks/default', subnetwork: 'regions/us-central1/subnetworks/default', accessConfigs: [{ name: 'External NAT', type: 'ONE_TO_ONE_NAT' }] }] })
配置说明
networkInterfaces用于指定实例绑定的VPC网络和子网信息accessConfigs下配置type: 'ONE_TO_ONE_NAT'即通知GCP为该实例分配临时公网IP,和云控制台默认创建实例的行为一致
注意事项
- 如果你使用的不是默认VPC和子网,需要将
network和subnetwork的值替换为你实际使用的资源路径 - 请确认调用API的服务账号有分配公网IP的权限,且对应VPC子网的配置允许分配公网IP
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

