我正在使用python API在GCE上启动一些实例,我在创建实例时遇到了一些问题。我正在尝试将持久性磁盘附加到我的实例,但是当我尝试创建实例时,它会给我以下错误:
HttpError 400 when requesting https://www.googleapis.com/compute/v1beta16/projects/projectid/zones/us-central1-a/instances?alt=json returned "Invalid value for field 'resource.disks[0].source': 'https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/disks/hm'. Must be a URL to a Compute resource in the same zone."
磁盘的JSON是:
"disks": [
{
"kind": "compute#attachedDisk",
"boot": "true",
"type": "PERSISTENT",
"mode": "READ_WRITE",
"deviceName": "%s" % instance_name,
"zone": "https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/",
"source": "https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/disks/%s" % instance_name,
}
]
变量'instance_name'由python放入。
我不确定为什么会发生这种情况,因为磁盘存在且位于同一区域。
有人有任何建议吗?
谢谢,
乔治
**更新**
我通过更新到v1 API解决了这个问题
答案 0 :(得分:0)
这是因为您尝试将一个区域(us_central1-a)中的永久磁盘附加到不同区域中的实例。永久磁盘是按区域划分的,您无法跨区域连接到实例,只能跨区域访问磁盘快照。
您收到的错误消息的最后一部分表示:
请求https://www.googleapis.com/compute/v1beta16/projects/projectid/zones/us-central1-a/instances?alt=json时的HttpError 400返回“字段'资源的无效值resource.disks [0] .source':'https://www.googleapis.com/compute/v1/projects/projectid/zones/us-central1-a/disks/hm'。必须是指向计算资源的网址同一区域。“
您的磁盘位于 us-central1-a ,您尝试在哪个区域创建实例?
如果您想在其他区域使用该磁盘,例如 europe-west1-a ,则您必须:
1)在同一区域中创建临时实例,附加磁盘,然后使用 gcutil moveinstances 命令将实例移动到所需区域。这将随之移动磁盘,然后您可以从新区域中的该实例中分离磁盘并使用它。
OR
2)创建磁盘快照,然后使用它创建实例永久磁盘:
在us-central1-a中创建持久磁盘(hm)的快照(snapshot1):
gcutil addsnapshot snapshot1 --zone us-central1-a --source_disk hm
从所需区域中的快照(snapshot1)创建新的永久磁盘(disk2):
gcutil adddisk“disk2”--zone =“europe-west1-a”--source_snapshot =“snapshot1”
使用新的永久磁盘(disk2)创建新实例(instance2):
gcutil addinstance“instance2”--zone =“europe-west1 -a”--disk =“disk2,deviceName = disk2,mode = READ_WRITE,boot”
答案 1 :(得分:0)
我通过更新到v1 API解决了这个问题