Storage Transfer Service 可以将文件从一系列公共网址复制到您的 Cloud Storage 存储分区。
创建转移时,您需要提供指向制表符分隔值 (TSV) 文件的链接,该文件包含要转移的对象的网址和详细信息。TSV 文件可以托管在任何可公开访问的 HTTP 或 HTTPS 位置;也可以存储在 Cloud Storage 存储桶中。
本页介绍了如何创建网址列表并将其传递给作业创建命令。
源文件要求
- 网址必须可公开访问,并使用 HTTP 或 HTTPS 协议。
- 托管每个对象的服务器:
- 不得使用
robots.txt
拒绝对对象的访问。 - 支持
Range
请求。 - 在每个响应中返回一个
Content-Length
标头。
- 不得使用
网址列表格式
网址列表必须符合以下要求:
- 文件必须采用制表符分隔值格式。
- 网址必须采用 UTF-8 字典顺序。
- 第一行必须指定
TsvHttpData-1.0
。 - 在第一行后面,每行指定一个对象。
- 每行都必须包含网址,还可以包含文件大小和对象的 Base64 编码 MD5 校验和。
以下是指定要转移两个对象的 TSV 文件示例。请注意,本页中的制表符会呈现为空格;对于您自己的文件,请务必在字段之间使用制表符。
TsvHttpData-1.0
https://example.com/myfile.pdf 1357 wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png 2468 R9acAaveoPd2y8nniLUYbw==
每行包含:
- 源对象的 HTTP 或 HTTPS 网址。
(可选)对象的大小(以字节为单位)。
确保在获取对象时指定的大小与对象的实际大小相符。如果 Cloud Storage 收到的对象的大小与指定的大小不符,则对象转移会失败。
(可选)对象的 Base64 编码 MD5 校验和。
确保指定的 MD5 校验和与从转移的字节计算得出的 MD5 校验和匹配。如果 Cloud Storage 接收的对象的 MD5 校验和与指定的 MD5 校验和不匹配,则对象转移将失败。
虽然对象大小和 MD5 校验和值是可选的,但我们强烈建议您添加这些值,以确保数据完整性。
托管网址列表
网址列表可以托管在以下两个位置之一:
- 可公开访问的网址。
已向 Storage Transfer Service 的服务代理授予访问权限的 Cloud Storage 存储桶。
可公开访问的网址
将网址列表存储在可公开访问的网址时,需要满足以下要求:
- 网址必须以
http://
或https://
开头。 - 当服务器返回网址列表时,它必须在 HTTP 响应中设置一个强
Etag
标头。
例如,您可以将列表存储在 Cloud Storage 存储桶中,然后公开共享对象以获取指向该对象的链接。
Cloud Storage 存储分区
为避免将列表存储在公共位置,您可以将其存储在 Cloud Storage 存储桶中,并向 Storage Transfer Service 的服务代理授予访问权限。
必须向服务代理授予以下权限:
- 对象的
storage.object.get
权限。您可以通过向存储分区授予roles/storage.legacyObjectReader
角色或使用自定义角色来授予此权限。 - 对存储桶的
storage.buckets.get
权限。您可以通过授予roles/storage.legacyBucketReader
角色或使用自定义角色来授予此权限。
如需向服务代理授予权限,请执行以下操作:
找到服务代理的电子邮件地址
前往
googleServiceAccounts.get
参考页面。系统会打开标题为试用此方法的交互式面板。
在该面板的请求参数下,输入您的项目 ID。您在此处指定的项目必须是您用于管理 Storage Transfer Service 的项目,该项目可能与网址列表存储桶的项目不同。
点击执行。
服务代理的电子邮件地址会作为 accountEmail
的值返回,并采用 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
格式。
复制此值。
授予所需角色
如需向包含网址列表的存储分区中的服务代理授予 roles/storage.objectViewer
角色和 roles/storage.bucketViewer
角色,请按照设置和管理存储分区的 IAM 政策中的说明操作。
您要添加的主账号是服务代理的电子邮件地址。如有需要,主账号标识符为 serviceAccount
。例如 serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
。
创建网址列表转移作业
如需在创建转移作业时指定网址列表,请按照以下说明操作:
Google Cloud 控制台
按照创建转移作业中的说明操作。
选择来源时:
在来源类型下,选择网址列表,然后点击下一步。
在 TSV 文件网址下,提供制表符分隔值 (TSV) 文件的网址。网址可以是 HTTP/HTTPS 地址(例如
https://example.com/urllist.tsv
),也可以是 Cloud Storage 路径(例如gs://my-bucket/urllist.tsv
)。
gcloud CLI
如需创建新的转移作业,请使用 gcloud transfer jobs create
命令。
gcloud transfer jobs create \
SOURCE DESTINATION
对于网址列表传输,SOURCE 的值为 TSV 文件的网址。网址可以是 HTTP/HTTPS 地址(例如 https://example.com/urllist.tsv
),也可以是 Cloud Storage 路径(例如 gs://my-bucket/urllist.tsv
)。
如需详细了解如何使用 gcloud CLI 创建传输,请参阅创建传输作业。
REST
如需使用 REST API 创建网址列表转移作业,请在 listUrl
字段中指定 TSV 文件的网址:
{
"projectId": "PROJECT_ID",
"transferSpec": {
"httpDataSource": {
"listUrl": "URL"
},
"gcsDataSink": {
"bucketName": "DESTINATION_BUCKET"
}
},
"status": "ENABLED"
}
URL 的值是 HTTP/HTTPS 地址(例如 https://example.com/urllist.tsv
)或 Cloud Storage 路径(例如 gs://my-bucket/urllist.tsv
)。
如需详细了解如何使用 REST API 创建转移,请参阅 REST API 参考文档。