本页面介绍如何设置请求者付款功能,并通过相关示例说明如何对启用了请求者付款功能的存储桶发起请求。
设置请求者付款
以下部分介绍如何启用和停用请求者付款功能,以及如何检查存储桶是否启用了请求者付款功能。
前提条件
您应具有
storage.buckets.get
权限,以便获取存储桶的请求者付款状态。另外,使用 Google Cloud 控制台或 Google Cloud CLI 启用和停用请求者付款功能时也需要该权限。启用或停用请求者付款功能时,您必须拥有
storage.buckets.update
权限。停用请求者付款功能时,您必须在请求中加入结算项目,或者拥有
resourcemanager.projects.createBillingAssignment
权限。如需了解详情,请参阅请求者付款功能的使用和访问要求。
您可以通过角色向用户授予权限。例如,用户授予 Storage Admin 角色具有以上所有 storage.buckets
权限。您可以针对包含该存储桶的项目授予角色。
设置请求者付款
如要为存储桶启用或停用请求者付款功能,请按如下所述操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,找到要设置的存储桶,找到请求者付款列。
该列中的值表示该存储桶的请求者付款功能的当前状态。
点击所需存储桶对应的请求者付款的当前状态。
在随即显示的窗口中,点击开启或关闭,具体取决于您要为请求者付款设置的状态。
此功能启用后,该存储桶对应的请求者付款列中会显示一个绿色气泡和一个开启按钮。此功能停用后,列中会显示一个灰色气泡和一个关闭按钮。
如需了解如何在 Google Cloud 控制台中获取有关失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
使用带有相应标志的 gcloud storage buckets update
命令:
gcloud storage buckets update gs://BUCKET_NAME FLAG
其中:
BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。FLAG
可以为--requester-pays
(用于启用请求者付款功能)或“--no-requester-pays”以停用该功能。
如果成功,响应类似于以下示例:
Updating gs://my-bucket/... Completed 1
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
以下示例在存储桶上启用请求者付款功能:
以下示例在存储桶上停用请求者付款功能:
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 JSON 文件:
{ "billing": { "requesterPays": STATE } }
其中 STATE 为
true
或false
。使用
cURL
,通过PATCH
Bucket 请求调用 JSON API:curl -X PATCH --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=billing"
其中:
JSON_FILE_NAME
是您在第 2 步中创建的 JSON 文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌的名称。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
创建一个包含以下信息的 XML 文件:
<BillingConfiguration> <RequesterPays>STATE</RequesterPays> </BillingConfiguration>
其中 STATE 为
Enabled
或Disabled
。使用
cURL
,通过PUT
Bucket 请求和billing
查询字符串参数调用 XML API:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?billing"
其中:
XML_FILE_NAME
是您在第 2 步中创建的 XML 文件的路径。OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌的名称。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
检查请求者付款功能是否已启用
要检查某个存储桶是否启用了请求者付款功能,请按如下所述操作:
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,可在请求者付款列中查看每个存储桶的请求者付款功能状态。
如果已启用,则状态为绿色且显示有文字开启。
命令行
使用带有 --format
标志的 gcloud storage buckets describe
命令:
gcloud storage buckets describe gs://BUCKET_NAME --format="default(requester_pays)"
其中,BUCKET_NAME
是您要查看其状态的存储桶的名称,例如 my-bucket
。
如果成功,响应类似于以下示例:
requester_pays: true
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET
Bucket 请求调用 JSON API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=billing"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌的名称。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
使用
cURL
,通过GET
Bucket 请求和billing
查询字符串参数调用 XML API:curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ "https://storage.googleapis.com/BUCKET_NAME?billing"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌的名称。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。
访问启用了请求者付款功能的存储桶
以下示例显示了如何包含结算项目,以便从启用了请求者付款功能的存储桶中下载对象。若要对启用了请求者付款功能的存储桶或该存储桶中的对象执行其他请求,可以按照与此类似的过程进行操作。请参阅请求者付款功能访问要求,了解前提条件注意事项。
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,找到包含要下载的对象的存储桶,并点击其名称。
在随即出现的窗口中,使用下拉菜单选择结算项目。
选中相应复选框以确认您有权使用所选项目进行结算。
点击保存。
按照正常方式下载对象。
如需了解如何在 Google Cloud 控制台中获取有关失败的 Cloud Storage 操作的详细错误信息,请参阅问题排查。
命令行
在您的请求中使用 --billing-project
标志:
gcloud storage cp gs://BUCKET_NAME/OBJECT_NAME SAVE_TO_LOCATION --billing-project=PROJECT_IDENTIFIER
其中:
BUCKET_NAME
是包含要下载的对象的存储桶名称,例如my-bucket
。OBJECT_NAME
是要下载的对象的名称,例如pets/dog.png
。SAVE_TO_LOCATION
是保存对象的本地路径,例如Desktop/Images
。PROJECT_IDENTIFIER
是要结算的项目的 ID 或编号,例如my-project
。
客户端库
C++
如需了解详情,请参阅 Cloud Storage C++ API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
C#
如需了解详情,请参阅 Cloud Storage C# API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解详情,请参阅 Cloud Storage Go API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解详情,请参阅 Cloud Storage Java API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Node.js
如需了解详情,请参阅 Cloud Storage Node.js API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
PHP
如需了解详情,请参阅 Cloud Storage PHP API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Python
如需了解详情,请参阅 Cloud Storage Python API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Ruby
如需了解详情,请参阅 Cloud Storage Ruby API 参考文档。
如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
REST API
JSON API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
在您的请求中,加入
userProject
查询字符串参数(已设为要结算的项目的 ID):curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media&userProject=PROJECT_IDENTIFIER"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。SAVE_TO_LOCATION
是您要保存您的对象的位置。例如Desktop/dog.png
。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。OBJECT_NAME
是您要下载的对象的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。PROJECT_IDENTIFIER
是要结算的项目的 ID 或编号,例如my-project
。
XML API
- 从 OAuth 2.0 Playground 获取授权访问令牌。将 Playground 配置为使用您自己的 OAuth 凭据。如需了解相关说明,请参阅 API 身份验证。
在您的请求中,加入
x-goog-user-project
标头(已设为要结算的项目的 ID):curl -X GET \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "x-goog-user-project: PROJECT_ID" \ -o "SAVE_TO_LOCATION" \ "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:
OAUTH2_TOKEN
是您在第 1 步中生成的访问令牌。PROJECT_ID
是要结算的项目的 ID,例如my-project
。SAVE_TO_LOCATION
是您要保存您的对象的位置。例如Desktop/dog.png
。BUCKET_NAME
是相关存储桶的名称,例如my-bucket
。OBJECT_NAME
是您要下载的对象的网址编码名称。例如,pets/dog.png
的网址编码为pets%2Fdog.png
。