從公開網址轉移至 Cloud Storage

Storage 移轉服務可將檔案從公開網址清單複製到 Cloud Storage 值區。

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

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

來源檔案相關規定

  • 網址必須可供公開存取,且使用 HTTP 或 HTTPS 通訊協定。
  • 託管每個物件的伺服器:
    • 不得使用 robots.txt 拒絕存取物件。
    • 支援 Range 要求。
    • 在每個回應中傳回 Content-Length 標頭。

網址清單格式

網址清單必須符合下列規定:

  • 檔案格式必須為以定位點分隔的值。
  • 網址必須按照 UTF-8 字典順序排列。
  • 第一行必須指定 TsvHttpData-1.0
  • 在第一行之後,每行指定一個物件。
  • 每個資料列都必須包含網址,且可能還包含檔案大小和物件的 Base64 編碼 MD5 總和檢查碼。

以下是指定要轉移的兩個物件的 TSV 檔案範例。請注意,這個頁面會將 Tab 轉譯為空格;如果是您自己的檔案,請務必在欄位之間使用 Tab 鍵。

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 移轉服務服務代理存取權的 Cloud Storage 值區。

公開存取的網址

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

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

例如,您可以將清單儲存在 Cloud Storage 值區中,然後公開共用物件,取得該物件的連結。

Cloud Storage 值區

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

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

  • 物件的 storage.object.get 權限。您可以授予值區的 roles/storage.legacyObjectReader 角色,或是自訂角色,藉此授予此權限。
  • 值區的 storage.buckets.get 權限。您可以授予 roles/storage.legacyBucketReader 角色,或使用自訂角色來授予此權限。

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

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

  1. 前往 googleServiceAccounts.get 參考頁面

    系統會開啟名為「試試這個方法」的互動式面板。

  2. 在面板的「Request parameters」下方,輸入專案 ID。您在此處指定的專案必須是用於管理 Storage Transfer Service 的專案,可能與網址清單值區的專案不同。

  3. 按一下 [Execute] (執行)

服務專員的電子郵件地址會傳回為 accountEmail 的值,並使用 project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com 格式。

複製這個值。

授予必要角色

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

您要新增的實體是服務專員的電子郵件地址。如有需要,主體 ID 為 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 參考資料