本页面介绍了如何通过 REST API 直接使用 Storage Transfer Service,以及如何利用 Java 和 Python 以编程方式在两种常见场景中使用该组件。要使用 Google Cloud Console 创建转移作业,请参阅使用 Console 创建和管理传输。
使用 Storage Transfer API 以编程方式配置或编辑传输作业时,必须采用世界协调时间 (UTC)。如需详细了解如何指定传输作业的时间表,请参阅时间表。
前期准备
在创建传输作业之前,请执行以下操作:
检查您是否拥有以下角色之一,以验证您是否拥有 Storage Transfer Service 访问权限:
- roles/owner
- roles/editor
- roles/storagetransfer.admin
- roles/storagetransfer.user
至少包含 roles/storagetransfer.user 权限的自定义角色。
如需详细了解如何添加和查看项目级权限,请参阅使用 IAM 权限处理项目。
如需了解详情,请参阅排查访问权限问题。
如需详细了解 Storage Transfer Service 中的 IAM 角色和权限,请参阅使用 IAM 角色和权限进行访问权限控制。
将数据从 Amazon S3 传输到 Cloud Storage
本示例演示了如何将文件从 Amazon S3 传输到 Cloud Storage 存储分区。请务必查看配置访问权限和价格信息,以了解将数据从 Amazon S3 转移到 Cloud Storage 的影响。
创建转移作业
创建转移作业时,请勿在 Amazon S3 存储分区来源名称中为 bucketName
添加 s3://
前缀。
REST
使用 transferJobs create 发出请求:POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "scheduleEndDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }响应:
200 OK { "transferJob": [ { "creationTime": "2015-01-01T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2015-01-01T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "scheduleEndDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" }, "objectConditions": {}, "transferOptions": {} } } ] }
Java
如需了解如何创建 Storage Transfer Service 客户端,请参阅为 Google API 库创建客户端。
Python
如需了解如何创建 Storage Transfer Service 客户端,请参阅为 Google API 库创建客户端。
在 Microsoft Azure Blob Storage 和 Cloud Storage 之间转移
本示例演示了如何将文件从 Microsoft Azure Storage 移至 Cloud Storage 存储分区。请务必查看配置访问权限和价格信息,以了解将数据从 Microsoft Azure Storage 转移到 Cloud Storage 的影响。
REST
使用 transferJobs create 发出请求:POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 14, "month": 2, "year": 2020 }, "scheduleEndDate": { "day": 14 "month": 2, "year": 2020 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "azureBlobStorageDataSource": { "storageAccount": "AZURE_SOURCE_NAME", "azureCredentials": { "sasToken": "AZURE_SAS_TOKEN", }, "container": "AZURE_CONTAINER", }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }响应:
200 OK { "transferJob": [ { "creationTime": "2020-02-14T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2020-02-14T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 14 "month": 2, "year": 2020 }, "scheduleEndDate": { "day": 14, "month": 2, "year": 2020 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "azureBlobStorageDataSource": { "storageAccount": "AZURE_SOURCE_NAME", "azureCredentials": { "sasToken": "AZURE_SAS_TOKEN", }, "container": "AZURE_CONTAINER", }, "objectConditions": {}, "transferOptions": {} } } ] }
在 Cloud Storage 存储分区之间传输数据
本示例演示了如何将文件从一个 Cloud Storage 存储分区传输到另一个 Cloud Storage 存储分区。例如,您可以将数据复制到位于另一个位置的存储分区。
创建转移作业
REST
使用 transferJobs create 发出请求:POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "gcsDataSource": { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME" }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } }响应:
200 OK { "transferJob": [ { "creationTime": "2015-01-01T01:01:00.000000000Z", "description": "YOUR DESCRIPTION", "name": "transferJobs/JOB_ID", "status": "ENABLED", "lastModificationTime": "2015-01-01T01:01:00.000000000Z", "projectId": "PROJECT_ID", "schedule": { "scheduleStartDate": { "day": 1, "month": 1, "year": 2015 }, "startTimeOfDay": { "hours": 1, "minutes": 1 } }, "transferSpec": { "gcsDataSource": { "bucketName": "GCS_SOURCE_NAME", }, "gcsDataSink": { "bucketName": "GCS_NEARLINE_SINK_NAME" }, "objectConditions": { "minTimeElapsedSinceLastModification": "2592000.000s" }, "transferOptions": { "deleteObjectsFromSourceAfterTransfer": true } } } ] }
Java
如需了解如何创建 Storage Transfer Service 客户端,请参阅为 Google API 库创建客户端。
Python
如需了解如何创建 Storage Transfer Service 客户端,请参阅为 Google API 库创建客户端。
检查转移操作状态
当您使用 transferJobs.create
时,将返回 TransferJob
资源。
您可以在使用 transferJobs.get
创建作业后检查转移状态。如果转移作业的操作已开始,则会返回包含已填充的 latestOperationName
字段的 TransferJob
。相反,如果转移作业的操作尚未启动,则 latestOperationName
字段为空。
查看转移作业的状态
REST
使用 transferJobs get 发出请求:GET https://storagetransfer.googleapis.com/v1/{jobName="name"}
取消传输操作
如要取消单个转移操作,请使用 transferOperations cancel
方法。如要删除整个转移作业(包括已安排的未来转移操作),请使用transferJobs patch
方法将转移作业的状态设置为 DELETED
。更新作业的转移状态不会影响正在进行的转移操作。如要取消正在进行的转移操作,请使用 transferOperations cancel
方法。