從公開網址轉移至 Cloud Storage

Storage 移轉服務可將公開網址清單中的檔案複製到 Cloud Storage bucket。

建立移轉作業時,請提供以定位點分隔值 (TSV) 檔案的連結,其中包含要移轉的物件網址和詳細資料。TSV 檔案可以託管在任何可公開存取的 HTTP 或 HTTPS 位置,也可以儲存在 Cloud Storage bucket。

本頁說明如何建立網址清單,並將清單傳遞至工作建立指令。

來源檔案規定

  • 網址必須可公開存取,且採用 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 收到的物件大小與指定大小不符,物件移轉作業就會失敗。

  • (選用) 物件的 MD5 核對和 (採用 Base64 編碼)。

    確認指定的 MD5 核對和與從傳輸位元組計算出的 MD5 核對和相符。如果 Cloud Storage 收到的物件 MD5 核對和與指定的 MD5 核對和不符,物件移轉作業就會失敗。

雖然物件大小和 MD5 核對和值為選用,但強烈建議您加入這些值,確保資料完整性。

託管網址清單

網址清單可以託管在下列其中一個位置:

  • 可公開存取的網址。
  • Cloud Storage bucket,且 Storage 移轉服務的服務代理已取得存取權。

公開網址

將網址清單儲存在可公開存取的網址時,須符合下列規定:

  • 網址開頭必須為 http:// 或 https://。
  • 伺服器傳回網址清單時,必須在 HTTP 回應中設定強式 Etag 標頭。

舉例來說,您可以將清單儲存在 Cloud Storage bucket,並公開共用物件,取得物件連結。

Cloud Storage bucket

為避免將清單儲存在公開位置,您可以將清單儲存在 Cloud Storage bucket,並將存取權授予 Storage 移轉服務的服務代理。

服務代理必須具備下列權限:

  • 物件的 storage.objects.get 權限。您可以透過授予 bucket 的 roles/storage.objectViewer 角色或自訂角色來授予這項權限。
  • bucket 的 storage.buckets.get 權限。您可以透過授予 roles/storage.legacyBucketReader 角色或自訂角色來授予這項權限。

如要將權限授予服務代理,請按照下列步驟操作:

找出服務代理的電子郵件地址

  1. 前往 googleServiceAccounts.get 參考頁面。

    互動式面板隨即開啟,標題為「試用這個方法」。

  2. 在面板的「Request parameters」(要求參數) 下方,輸入專案 ID。您在此指定的專案必須是用來管理 Storage 移轉服務的專案,可能與網址清單值區的專案不同。

  3. 點選「Execute」。

服務代理的電子郵件會以 accountEmail 的值傳回,並使用 project-PROJECT_NUMBER@storage-transfer-service. 格式。

複製這個值。

授予必要角色

如要將 roles/storage.objectViewer 角色和 roles/storage.legacyBucketReader 角色授予 bucket (包含網址清單) 的服務代理,請按照「設定及管理 bucket 的 IAM 政策」中的操作說明進行。

您要新增的主體是服務代理的電子郵件地址。如有需要,主體 ID 為 serviceAccount。例如:serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.。

建立網址清單移轉工作

如要在建立移轉工作時指定網址清單,請按照下列操作說明進行:

Google Cloud 控制台

按照「建立轉移工作」中的指示操作。

選擇來源時:

  1. 在「來源類型」下方,選取「網址清單」,然後點選「下一步」。

  2. 在「URL of TSV file」(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 參考資料。