在向 Storage Transfer Service 发出请求之前,必须确保您的项目启用了 Storage Transfer Service API,并确保使用 OAuth 2.0 协议设置好应用的授权。我们还建议您实现截断指数退避算法,以便在请求失败时处理重试。
启用服务
要通过 Google API 库访问 Storage Transfer Service,或直接使用 Storage Transfer Service API,您需要启用 Google Storage Transfer API。
Enable the Google Storage Transfer API.
身份验证流程
由于所有 Storage Transfer Service 操作的发生都无需人为干预或用户同意,因此 Storage Transfer Service 应用的最佳身份验证流程是使用服务帐号的服务器到服务器模式。App Engine 和 Compute Engine 内置了您可以使用的服务帐号,您也可以在 Google Cloud Console 中创建服务凭据。
使用服务帐号时,Google API 客户端库会在以下场景中处理身份验证和授权流程:
- App Engine 应用
如果您的应用在 App Engine 上运行,它将使用 App Engine 应用的默认服务帐号进行身份验证。
只要您使用的是 Google Cloud CLI (
mvn gcloud:run
),则通过使用服务帐号并设置GOOGLE_APPLICATION_CREDENTIALS
环境变量,该代码也可与 App Engine 本地模拟器搭配使用。如需了解详情,请参阅本地或第三方主机部分。
- Compute Engine 应用
如果您的应用在 Compute Engine 实例上运行,它将使用与项目关联的默认 Compute Engine 服务帐号进行身份验证。
请将实例配置为使用服务帐号,并添加授权范围部分中列出的范围。
如需了解详情,请参阅 Compute Engine 文档中的为实例设置服务帐号的访问权限范围。
- 本地或第三方主机
如果您正在运行本地客户端,或者正在非 Google Cloud 环境中运行程序,请创建新的服务帐号,下载其 JSON 密钥文件,然后将环境变量
GOOGLE_APPLICATION_CREDENTIALS
设置为指向该 JSON 密钥文件。如需了解详情,请参阅以服务帐号身份进行身份验证。
授权范围
使用 OAuth 2.0 访问 Storage Transfer Service 的应用必须指定 cloud-platform
授权范围。
范围 | 含义 |
---|---|
https://www.googleapis.com/auth/cloud-platform |
完整访问权限。 |
创建客户端
您可以使用以下示例代码,在身份验证流程部分讨论的任意环境中创建 Storage Transfer Service 客户端。由于代码使用 Google 应用默认凭据,因此它会选择使用相应服务帐号。
服务帐号必须获得以下角色之一:
- roles/owner
- roles/editor
- roles/storagetransfer.admin
- roles/storagetransfer.user
至少包含 roles/storagetransfer.user 权限的自定义角色。
如需详细了解如何添加和查看项目级权限,请参阅 Storage Transfer Service 方法的 IAM 权限以及 IAM 权限和角色的示例。
您可以转到项目的权限页面进行查看。
Java
本示例使用 Java 版 Google API 客户端库。“重试处理”部分介绍了自定义 RetryHttpInitializerWrapper
类。
Python
本示例使用 Python 版 Google API 客户端库。
重试处理
在远程过程调用 (RPC) 失败的情况下,您应该实现代码,以便使用截断指数退避算法策略处理重试。
Java
本示例使用 Java 版 Google API 客户端库。RetryHttpInitializerWrapper
类可为您处理重试尝试。
Python