是否可以使用 Google 云函数和区域托管实例在 GCP 上实例化新虚拟机?
Is it possible to instantiate a new VM on GCP using Google Cloud Function and Regional Managed Instance?
基本上,我想做的是在 Pub/Sub 上创建一条消息,该消息会触发一个 GCF,该 GCF 从区域托管实例组在它当时拥有的任何可用区域中创建一个实例。
我在这里试图解决的问题是区域 MIG 处理的一个相当反复出现的问题 ZONE_RESOURCE_POOL_EXHAUSTED。
这个解决方案可行吗?我试过使用 createInstances method 但日志记录只显示 PRECONDITION_FAILED.
我使用的代码片段如下:
from googleapiclient import discovery
def launch_vm(project, region, igm, body)
service = discovery.build('compute', 'v1')
response = service.regionInstanceGroupManagers()\
.createInstances(
project=project,
region=region,
instanceGroupManager=igm,
body=body)
return response.execute()
request_body = {"instances":[{"name": "testinstance"}]}
launch_vm('project-name', 'us-central1', 'instace-group-name', request_body)
####### 编辑:
我刚刚发现发生了什么,当我尝试使用最近创建的实例组的另一个项目时,我发现实例重新分配已启用,这与 CLI 的响应不同:
ERROR: (gcloud.compute.instance-groups.managed.create-instance) CreateInstances can be used only when instance redistribution is disabled (set to NONE).
我检查了实例再分配检查,现在效果很好:)感谢大家的帮助!
我可以 createInstance
:
import os
from googleapiclient import discovery
PROJECT = os.environ["PROJECT"]
REGION = os.environ["REGION"]
NAME = os.environ["NAME"]
service = discovery.build('compute', 'v1')
def launch_vm(project,region, name, body):
rqst = service.regionInstanceGroupManagers().createInstances(
project=project,
region=region,
instanceGroupManager=name,
body=body)
return rqst.execute()
body = {
"instances": [
{
"name": "testinstance"
}
]
}
launch_vm(PROJECT, REGION, NAME, body)
基本上,我想做的是在 Pub/Sub 上创建一条消息,该消息会触发一个 GCF,该 GCF 从区域托管实例组在它当时拥有的任何可用区域中创建一个实例。
我在这里试图解决的问题是区域 MIG 处理的一个相当反复出现的问题 ZONE_RESOURCE_POOL_EXHAUSTED。
这个解决方案可行吗?我试过使用 createInstances method 但日志记录只显示 PRECONDITION_FAILED.
我使用的代码片段如下:
from googleapiclient import discovery
def launch_vm(project, region, igm, body)
service = discovery.build('compute', 'v1')
response = service.regionInstanceGroupManagers()\
.createInstances(
project=project,
region=region,
instanceGroupManager=igm,
body=body)
return response.execute()
request_body = {"instances":[{"name": "testinstance"}]}
launch_vm('project-name', 'us-central1', 'instace-group-name', request_body)
####### 编辑: 我刚刚发现发生了什么,当我尝试使用最近创建的实例组的另一个项目时,我发现实例重新分配已启用,这与 CLI 的响应不同:
ERROR: (gcloud.compute.instance-groups.managed.create-instance) CreateInstances can be used only when instance redistribution is disabled (set to NONE).
我检查了实例再分配检查,现在效果很好:)感谢大家的帮助!
我可以 createInstance
:
import os
from googleapiclient import discovery
PROJECT = os.environ["PROJECT"]
REGION = os.environ["REGION"]
NAME = os.environ["NAME"]
service = discovery.build('compute', 'v1')
def launch_vm(project,region, name, body):
rqst = service.regionInstanceGroupManagers().createInstances(
project=project,
region=region,
instanceGroupManager=name,
body=body)
return rqst.execute()
body = {
"instances": [
{
"name": "testinstance"
}
]
}
launch_vm(PROJECT, REGION, NAME, body)