向谷歌云存储业务部提供一个用户项目

2024-10-03 15:27:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Google云存储来存储我的文件。 我有我的bucket,我可以存储我的图像,但是当我把我的图像的url放在a href中时,我会收到以下消息:

<Error>
  <Code>UserProjectMissing</Code>
  <Message>
       Bucket is a requester pays bucket but no user project provided.
  </Message>
</Error>

这是我访问存储桶的代码:

^{pr2}$

所以我想知道如何提供一个用户项目。在


Tags: 文件图像消息urlmessagebucketisgoogle
1条回答
网友
1楼 · 发布于 2024-10-03 15:27:36

这个Python code sample向您展示了如何在Python中为您的请求提供付费项目。在

在代码中,storage.Client(project=PROJECT_ID)与bucket的项目一起调用,client.bucket(BUCKET_NAME)不会告诉bucket哪个项目必须为此请求付费。对于请求者支付的bucket,在获取bucket时还需要提供一个项目。这可以是同一个项目PROJECT_ID,也可以是不同的项目,例如REQUESTERS_PROJECT_ID。在

client = storage.Client(project=PROJECT_ID).from_service_account_json(SERVICE_ACCOUNT_FILE)
bucket = client.bucket(BUCKET_NAME, REQUESTERS_PROJECT_ID)
blob = bucket.blob(filename)
blob.upload_from_string(file_stream, content_type=content_type)
url = blob.public_url

您可以为每个bucket进行配置,这些bucket将为向bucket请求计费(例如,获取图像或上载图像)。在

默认情况下,对bucket的项目进行计费(通过向与此项目关联的计费帐户收费)。我认为这是最常见的设置。在

或者,请求者支付意味着由请求引起的一些成本由请求中包含的计费项目支付。这种设置在多个项目(例如大公司中的不同公司或部门)共享同一个存储桶的用例中可能是有意义的,但是会对一些成本单独计费。(存储费用和早期删除费用总是计入存储桶的项目中)

更多信息请参阅云存储的GCP文档:Requester Pays。在

我假设你无意中打开了请求者支付。您可以在云控制台中打开/关闭请求者支付,如下所示:

  1. 切换到bucket的项目

  2. 导航到云存储>浏览器查看存储桶列表

  3. 在bucket的请求者支付列中,一个按钮告诉您它是打开还是关闭。单击该按钮并确认在两种状态之间切换。

如果您关闭请求者支付,那么您的代码应该按原样工作。在

相关问题 更多 >