Compute Engine的Python客户端返回“未指定必填字段'resource'”

时间:2018-12-24 19:43:33

标签: python google-cloud-platform google-compute-engine google-api-client

我正在尝试使用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 postthis 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

1 个答案:

答案 0 :(得分:0)

使用请求正文(requestBody)”代替资源。