桶是请求者支付桶,但没有提供用户项目

Kar*_*ova 6 google-cloud-storage google-cloud-endpoints

我正在尝试使用他们的 JSON API 通过多部分请求将图像发布到谷歌云存储,但我收到一个错误:
“代码”:400,“消息”:“存储桶是请求者支付存储桶,但没有提供用户项目。”
这是我的要求:

POST /upload/storage/v1/b<my_bucket_here>/o?
uploadType=multipart&amp;name=testPostman HTTP/1.1
Host: www.googleapis.com
Content-Length: 2139
Authorization: Bearer ya29.<my_token_here>
Cache-Control: no-cache
Postman-Token: 6fb40df7-3a0d-fda6-a94e-63365f594c9d
Content-Type: multipart/form-data; boundary=----
WebKitFormBoundary7MA4YWxkTrZu0gW

------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="data"; filename="profilephotos-
960x640.jpg"
Content-Type: image/jpeg
Run Code Online (Sandbox Code Playgroud)

我尝试去我的存储桶,并在那里指定了项目。唯一看起来奇怪的是Lifecycle部分,它是None,当我点击更改它时,它打开一个页面Failed to open。这太奇怪了。

可能是因为我不是项目的所有者,而是项目的管理员?已为存储桶启用计费。请帮忙!为此已经花了 3 天时间。

Bra*_*ugh 6

Google Cloud Storage 的“请求者付费”功能允许存储桶的所有者支付存储对象的费用,但存储桶的用户支付使用存储桶的费用。

启用请求者付款后,每个请求都需要指定要为该请求计费的项目。该唯一的例外是:

  • 调用者是存储桶的所有者,或
  • 调用者拥有resourcemanager.projects.createBillingAssignment存储桶项目的权限。

否则,您需要通过包含 URL 参数来明确指定要计费的项目userProject=myProjectId。因此,在您的情况下,对您正在调用的 URL 进行此更改:

POST /upload/storage/v1/b/o? userProject=YOUR-PROJECT &uploadType=multipart&name=testPostman