使用请求者付款 (original) (raw)
本页面介绍了如何启用和停用请求者付款功能,以及如何检查存储桶是否启用了请求者付款功能。
所需的角色
如需获得设置和管理请求者付款所需的权限,请让您的管理员为您授予包含存储桶的项目的 Storage Admin (roles.storage.Admin) 角色。
此角色可提供设置和管理请求者付款所需的权限。 如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.buckets.getstorage.buckets.updateresourcemanager.projects.createBillingAssignment- 只有在停用请求者付款功能时没有要使用的结算账号的情况下,才需要此权限。如需了解详情,请参阅使用和访问要求。
如需了解如何授予项目的角色,请参阅授予或撤消角色。
设置请求者付款
如要为存储桶启用或停用请求者付款功能,请按如下所述操作:
检查请求者付款功能是否已启用
要检查某个存储桶是否启用了请求者付款功能,请按如下所述操作:
控制台
- 在 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
客户端库
REST API
JSON API
- 安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。 - 使用 cURL,通过 GET Bucket 请求调用 JSON API:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=billing"
其中BUCKET_NAME是相关存储桶的名称,例如my-bucket。
XML API
- 安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。 - 使用 cURL,通过 GET Bucket 请求和
billing查询字符串参数调用 XML API:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://storage.googleapis.com/BUCKET_NAME?billing"
其中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。
客户端库
REST API
JSON API
- 安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。 - 在您的请求中,加入
userProject查询字符串参数(已设为要结算的项目的 ID):
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-o "SAVE_TO_LOCATION" \
"https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media&userProject=PROJECT_IDENTIFIER"
其中: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
- 安装并初始化 gcloud CLI,以便为
Authorization标头生成访问令牌。 - 在您的请求中,加入
x-goog-user-project标头(已设为要结算的项目的 ID):
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "x-goog-user-project: PROJECT_ID" \
-o "SAVE_TO_LOCATION" \
"https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"
其中:PROJECT_ID是要结算的项目的 ID,例如my-project。SAVE_TO_LOCATION是您要保存您的对象的位置。例如Desktop/dog.png。BUCKET_NAME是相关存储桶的名称,例如my-bucket。OBJECT_NAME是您要下载的对象的网址编码名称。例如,pets/dog.png的网址编码为pets%2Fdog.png。