我正在尝试使用python客户端创建VM。我打的电话是
import googleapiclient.discovery
compute = googleapiclient.discovery.build('compute', 'v1')
compute.instances().insert(
project='my-project',
zone='us-central1-c',
body=config).execute()
(配置是json字符串,available here)
响应是
<HttpError 400 when requesting https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-c/instances?alt=json
returned "Required field 'resource' not specified">
从this forum post和this stackexchange question看来,问题出在REST API标头。但是据我所知,标头并未公开python客户端。
这是一个错误还是我可能在做其他错误的事情?
编辑
将错误返回到googleapiclient.http.HttpRequest
之后,看起来HttpRequest
生成的build()
对象具有标题
{ 'accept': 'application/json',
'accept-encoding': 'gzip, deflate',
'content-length': '2299',
'content-type': 'application/json',
'user-agent': 'google-api-python-client/1.7.7 (gzip)' }
我尝试将'resource': 'none'
添加到标题中,并收到相同的响应。
看了一段时间后,我怀疑REST API期望指定Compute Engine资源。但是,在the official docs上搜索单词“ resource”会产生546个结果。
EDIT2
创建了GitHub Issue。
答案 0 :(得分:0)
使用请求正文(requestBody)”代替资源。