本页面介绍了如何创建和启动从 Amazon S3 到 Cloud Storage 的转移作业。
配置权限
创建转移作业之前,您必须配置对 Amazon S3 存储桶的权限。如需了解详情,请参阅配置对来源的访问权限:Amazon S3。
您还必须为以下 Google Cloud 实体配置权限:
用于创建转移作业的用户帐号。这是已登录 Google Cloud 控制台的帐号,或者在向“gcloud”CLI 进行身份验证时指定的帐号。用户帐号可以是常规用户帐号,也可以是用户代管式服务帐号。 | |
Google 管理的服务帐号(也称为服务代理),供 Storage Transfer Service 使用。此帐号通常由其电子邮件地址(采用 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 格式)标识。 |
如需相关说明,请参阅无代理转移权限。
出站流量选项
Storage Transfer Service 提供了多种将 S3 数据转移到 Cloud Storage 的方式。
出站选项 | 说明 |
---|---|
默认的无代理 | 此选项使用来自 S3 的代管式无代理转移。Amazon 向您收取出站流量费用。 请按照本页上的说明使用此选项。 |
CloudFront 分发 | 将 Amazon CloudFront 分布用作出站路径。与直接从 S3 转移相比,通过 CloudFront 转移数据的 AWS 出站流量费用更低。如需了解详情,请参阅 CloudFront 价格和 S3 出站流量费用。 请按照通过 CloudFront 从 S3 转移中的说明设置您的分发并创建转移作业。 |
代管式专用网络 | 通过 Google 管理的网络转移数据。您无需支付 S3 出站流量费用;只需按 GiB 向 Google Cloud 的费率付费。如需了解详情,请参阅价格页面。AWS(例如LIST 或 GET 调用);请参阅其价格了解详情。通过代管式专用网络传输的所有项目共用相同的带宽。在使用量较高时,传输速度可能会变慢。传输大型文件的影响比传输小文件更大。 请按照此页面上的说明使用此选项。在 Google Cloud 控制台中指定代管式专用网络选项,或在 REST API 中指定 managedPrivateNetwork 字段。gcloud CLI 和客户端库不支持代管式专用网络转移。请参阅支持的区域。 |
代理驱动 | 适用于所有与 S3 兼容的存储,包括 Amazon S3。通过在有权访问 S3 存储分区的机器上安装代理软件,您可以控制网络路径和带宽。此选项需要代理和代理池。 请按照从 S3 兼容的来源转移中的说明使用此选项。 |
支持的区域
Storage Transfer Service 支持以下 Amazon S3 区域:
af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ap-southeast-2 ap-southeast-3 |
ap-southeast-4 ca-central-1 ca-west-1 eu-central-1 eu-central-2 eu-north-1 eu-south-1 eu-south-2 eu-west-1 eu-west-2
|
eu-west-3 il-central-1 me-central-1 me-south-1 sa-east-1 us-east-1 us-east-2 us-west-1 us-west-2
|
us-east-1 us-east-2 us-west-1 us-west-2 ca-west-1 ca-central-1 |
转移选项
以下 Storage Transfer Service 功能适用于从 S3 到 Cloud Storage 的转移作业
- 使用清单传输特定文件
- 您可以传递一系列文件,以供 Storage Transfer Service 进行处理。如需了解详情,请参阅使用清单传输特定文件或对象。
- 指定存储类别
- 您可以指定要用于目标存储桶中的数据的
Cloud Storage 存储类别。如需了解 REST 详细信息,请参阅
StorageClass
选项,或者将--custom-storage-class
标志与 Google Cloud CLI 搭配使用。请注意,如果目标存储桶启用了 Autoclass,则系统将忽略任何存储类别设置。如果启用了 Autoclass,则转移到存储桶的对象最初会设置为 Standard 存储空间。
- 元数据保留
-
从 S3 传输文件时,Storage Transfer Service 可以选择将某些属性保留为自定义元数据。
如需详细了解可以保留哪些元数据以及如何配置转移作业,请参阅 元数据保留的 Amazon S3 到 Cloud Storage 部分。
- 事件驱动型转移
- Storage Transfer Service 可以监听发送到 Amazon SQS 的 Amazon S3 事件通知,以自动转移来源位置中已添加或更新的数据。如需了解详情,请参阅事件驱动型转移。
- 日志记录和监控
- 您可以在 Cloud Logging 和 Cloud Monitoring 中查看来自 S3 的转移作业。如需了解详情,请参阅适用于 Storage Transfer Service 的 Cloud Logging 和监控转移作业。您还可以配置 Pub/Sub 通知。
创建转移作业
Storage Transfer Service 提供了多个接口,通过这些接口来创建传输。
请勿在转移作业名称中包含敏感信息,例如个人身份信息 (PII) 或安全数据。资源名称可能会传播到其他 Google Cloud 资源的名称,并且可能会向您项目之外的 Google 内部系统公开。
Google Cloud 控制台
转到 Google Cloud 控制台中的 Storage Transfer Service 页面。
点击创建转移作业。 系统随即会显示创建转移作业页面。
在来源类型下,选择 Amazon S3。
选择 Google Cloud Storage 作为目标类型。
选择时间安排模式。批量转移是一次性或按计划执行的。事件驱动型转移会持续监控来源,并在添加或修改数据时转移数据。
如需配置事件驱动型转移,请按照事件驱动型转移中的说明操作。
点击下一步。
在存储桶或文件夹名称字段中,输入数据源存储桶名称。
存储桶名称是其在 AWS 管理控制台中显示的名称。
如果您使用 CloudFront 发行版从 S3 进行转移,请在 CloudFront 网域字段中输入分发域名。例如
https://dy1h2n3l4ob56.cloudfront.net
。请参阅通过 CloudFront 从 S3 传输以配置 CloudFront 分发。如需将代管式专用网络用于此转移作业,请选中相应复选框。如需了解详情,请参阅出站流量选项。
选择 Amazon Web Services (AWS) 身份验证方法。如需了解详情,请参阅配置对来源的访问权限:Amazon S3。
访问密钥:在访问密钥 ID 字段中输入访问密钥,在私有访问密钥字段中输入与访问密钥关联的 Secret。
身份联合的 AWS IAM 角色:使用以下语法在 AWS IAM 角色 ARN 字段中输入 ARN:
arn:aws:iam::ACCOUNT:role/ROLE-NAME-WITH-PATH
其中:
ACCOUNT
:无连字符的 AWS 账号 ID。ROLE-NAME-WITH-PATH
:AWS 角色名称,包括路径。
如需详细了解 ARN,请参阅 IAM ARN。
Secret 资源:选择此选项可使用保存在 Secret Manager 中的 Amazon 凭据。从列表中选择一个 Secret,或按照
projects/PROJECT_NUMBER/secrets/SECRET_NAME
格式手动输入一个 Secret。
如果是事件驱动型转移,请输入 Amazon SQS 队列 ARN,格式如下:
arn:aws:sqs:us-east-1:1234567890:event-queue
- (可选)选择按前缀过滤对象或按上次修改日期过滤对象。如果您将某个文件夹指定为源位置,则前缀过滤条件将相对于该文件夹。例如,如果您的来源是
my-test-bucket/path/
,则包含过滤器file
会包含以my-test-bucket/path/file
开头的所有文件。 点击下一步。
在存储桶或文件夹字段中,输入目标存储桶以及(可选)文件夹名称,或点击浏览从当前项目的现有存储桶列表中选择一个存储桶。如需创建新存储桶,请点击
创建新存储桶。
点击下一步。
为转移作业选择设置。
在说明字段中,输入转移作业的说明。最佳做法是输入有意义且唯一的说明,以便区分作业。
在元数据选项下,您可以选择使用默认选项,也可以点击查看和选择选项为所有受支持的元数据指定值。如需了解详情,请参阅元数据保留。
在何时覆盖下,选择以下选项之一:
如果不同:如果同名的源文件具有不同的 ETag 或校验和值,则覆盖目标文件。
始终:当源文件同名时,即使源文件相同,也始终覆盖目标文件。
在何时删除下,选择以下选项之一:
永不:永不从源或目标中删除文件。
在转移文件后从数据源删除文件:将文件转移到目标位置后,从数据源中删除文件。
如果文件不在数据源中则从目标位置删除文件:如果目标 Cloud Storage 存储桶中的文件也不在数据源中,则从 Cloud Storage 存储桶中删除文件。
此选项可确保目标 Cloud Storage 存储桶与您的数据源完全匹配。
在通知选项下,选择 Pub/Sub 主题以及要通知的事件。如需了解详情,请参阅 Pub/Sub 通知。
点击下一步。
选择时间安排选项:
从运行一次下拉列表中,选择以下选项之一:
运行一次:从您选择的时间开始运行一次转移作业。
每天运行:每天从您选择的时间开始,每天运行转移作业。
您可以输入可选的结束日期,或者将结束日期留空以持续运行转移作业。
每周运行:从您选择的时间开始,每周运行一次转移作业。
按自定义频率运行:按您选择的频率运行转移作业。您可以选择按照小时、天或周的固定间隔来重复运行转移作业。
您可以输入可选的结束日期,或者将结束日期留空以持续运行转移作业。
从立即开始下拉列表中,选择以下选项之一:
立即开始:点击创建后开始转移作业。
开始日期:在您选择的日期和时间开始转移作业。点击日历,以显示一个日历来选择开始日期。
要创建转移作业,请点击创建。
gcloud CLI
如需创建新的转移作业,请使用 gcloud transfer jobs create
命令。除非指定了时间表或 --do-not-run
,否则创建新作业时会启动指定的转移作业。
gcloud CLI 不支持通过 CloudFront 或代管式专用网络进行转移。
gcloud transfer jobs create \
s3://S3_BUCKET_NAME gs://STORAGE_BUCKET_NAME \
--source-creds-file="relative_path/to/creds.json"
其中:
S3_BUCKET_NAME 是此转移作业的数据源。您可以选择性地包含路径:
s3://S3_BUCKET_NAME/S3_FOLDER_PATH
STORAGE_BUCKET_NAME 是要转移到的 Cloud Storage 存储桶。如需转移到特定目录,请指定
gs://STORAGE_BUCKET_NAME/STORAGE_FOLDER_PATH/
,包括尾部斜杠。--source-creds-file
指定机器上本地文件(包含传输来源的 AWS 凭据)的相对路径。内容必须采用以下 JSON 格式:{ "accessKeyId": string, "secretAccessKey": string }
其他选项包括:
--do-not-run
可阻止 Storage Transfer Service 在提交命令后运行作业。如需运行作业,请更新作业以添加时间表,或使用jobs run
来手动启动作业。--manifest-file
指定 Cloud Storage 中 CSV 文件的路径,该文件包含要从来源转移的文件的列表。如需了解清单文件的格式,请参阅使用清单转移特定文件或对象。作业信息:您可以指定
--name
和--description
。时间表:您可以指定
--schedule-starts
、--schedule-repeats-every
和--schedule-repeats-until
或--do-not-run
。对象条件:您可以使用条件确定要转移的对象。这些条件包括
--include-prefixes
和--exclude-prefixes
以及--include-modified-[before | after]-[absolute | relative]
中基于时间的条件。 如果您使用来源指定文件夹,则前缀过滤条件相对于该文件夹。如需了解详情,请参阅按前缀过滤源对象。转移选项:指定是否覆盖目标文件(
--overwrite-when=different
或always
),以及是否要在转移过程中或之后删除某些文件(--delete-from=destination-if-unique
或source-after-transfer
);指定要保留的元数据值 (--preserve-metadata
);(可选)为转移的对象设置存储类别 (--custom-storage-class
)。通知:使用
--notification-pubsub-topic
、--notification-event-types
和--notification-payload-format
为转移作业配置 Pub/Sub 通知。Cloud Logging:使用
--log-actions
和--log-action-states
启用 Cloud Logging。如需了解详情,请参阅适用于 Storage Transfer Service 的 Cloud Logging。
如需查看所有选项,请运行 gcloud transfer jobs create --help
或参阅 gcloud
参考文档。
REST
以下示例展示了如何通过 REST API 使用 Storage Transfer Service。
使用 Storage Transfer Service API 配置或修改转移作业时,时间必须采用世界协调时间 (UTC)。如需详细了解如何指定转移作业的时间表,请参阅时间表。
创建转移作业时,请勿在 Amazon S3 存储桶来源名称中为 bucketName
添加 s3://
前缀。
无代理转移
以下示例使用标准无代理配置创建转移作业。如需了解详情,请参阅 transferJobs.create 参考。
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
如需了解其他身份验证选项,请参阅配置对来源:Amazon S3 的访问权限。
CloudFront 分布
如果您要通过 CloudFront 分发从 S3 转移,请将分发域名指定为 transferSpec.awsS3DataSource.cloudfrontDomain
字段的值:
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "cloudfrontDomain": "https://dy1h2n3l4ob56.cloudfront.net", "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
代管式专用网络
如需使用 Google 管理的专用网络从 S3 转移,请指定 transferSpec.awsS3DataSource.managedPrivateNetwork
字段:
POST https://storagetransfer.googleapis.com/v1/transferJobs { "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "AWS_SOURCE_NAME", "managedPrivateNetwork": TRUE, "awsAccessKey": { "accessKeyId": "AWS_ACCESS_KEY_ID", "secretAccessKey": "AWS_SECRET_ACCESS_KEY" } }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } }
客户端库
以下示例展示了如何通过 Go、Java、Node.js 和 Python 以编程方式使用 Storage Transfer Service。
以编程方式配置或修改转移作业时,必须采用世界协调时间 (UTC)。如需详细了解如何指定转移作业的时间表,请参阅时间表。
如需详细了解 Storage Transfer Service 客户端库,请参阅 Storage Transfer Service 客户端库使用入门。
将数据从 Amazon S3 传输到 Cloud Storage
在此示例中,您将学习如何将文件从 Amazon S3 移动到 Cloud Storage 存储桶。
创建转移作业时,请勿在 Amazon S3 存储桶来源名称中为 bucketName
添加 s3://
前缀。
Storage Transfer Service 客户端库不支持通过 CloudFront 或代管式专用网络进行传输。
Go
Java
想要寻找较早的示例?请参阅 Storage Transfer Service 迁移指南。
Node.js
Python
想要寻找较早的示例?请参阅 Storage Transfer Service 迁移指南。