从公共网址转移到 Cloud Storage

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 角色或使用自定义角色来授予此权限。

如需向服务代理授予权限,请执行以下操作:

找到服务代理的电子邮件地址

  1. 前往 googleServiceAccounts.get 参考页面

    系统会打开标题为试用此方法的交互式面板。

  2. 在该面板的请求参数下,输入您的项目 ID。您在此处指定的项目必须是您用于管理 Storage Transfer Service 的项目,该项目可能与网址列表存储桶的项目不同。

  3. 点击执行

服务代理的电子邮件地址会作为 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 控制台

按照创建转移作业中的说明操作。

选择来源时:

  1. 来源类型下,选择网址列表,然后点击下一步

  2. 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 参考文档