存储桶是请求者支付存储桶但未提供用户项目

Bucket is requester pays bucket but no user project provided

我正在尝试使用他们的 JSON API 通过多部分请求 POST 图像到 google 云存储,但我收到错误消息:
"code": 400, "message": "Bucket is requester pays bucket but no user project provided."
这是我的请求:

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

我试着转到我的存储桶,那里指定了项目。唯一看起来比较奇怪的是Lifecycle部分,也就是None,点击更改的时候,打开一个页面Failed to open。这太奇怪了。

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

Google 云存储的 "requester pays" 功能允许存储桶的所有者支付存储对象的费用,但存储桶的用户支付使用存储桶的费用.

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

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

否则,您将需要 explicitly specify a project 通过包含 URL 参数 userProject=myProjectId 来计费。因此,在您的情况下,对您正在调用的 URL 进行此更改:

POST /upload/storage/v1/b/o?userProject=你的项目&uploadType=multipart&name=testPostman