Mentransfer dari URL publik ke Cloud Storage

Storage Transfer Service dapat menyalin file dari daftar URL publik ke bucket Cloud Storage Anda.

Saat membuat transfer, Anda memberikan link ke file nilai yang dipisahkan tab (TSV) yang berisi URL dan detail objek yang akan ditransfer. File TSV dapat dihosting di lokasi HTTP atau HTTPS yang dapat diakses publik; atau dapat disimpan di bucket Cloud Storage.

Halaman ini menjelaskan cara membuat daftar URL dan meneruskannya ke perintah pembuatan tugas.

Persyaratan file sumber

  • URL harus dapat diakses secara publik dan menggunakan protokol HTTP atau HTTPS.
  • Server yang menghosting setiap objek:
    • Tidak boleh menolak akses ke objek dengan robots.txt.
    • Mendukung permintaan Range.
    • Menampilkan header Content-Length di setiap respons.

Format daftar URL

Daftar URL harus mematuhi persyaratan berikut:

  • File harus diformat sebagai nilai yang dipisahkan tab.
  • URL harus dalam urutan leksikografis UTF-8.
  • Baris pertama harus menentukan TsvHttpData-1.0.
  • Setelah baris pertama, tentukan satu objek per baris.
  • Setiap baris harus berisi URL, dan juga dapat berisi ukuran file dan checksum MD5 berenkode base64 dari objek.

Berikut adalah contoh file TSV yang menentukan dua objek yang akan ditransfer. Perhatikan bahwa di halaman ini, tab dirender sebagai spasi; untuk file Anda sendiri, pastikan untuk menggunakan tab di antara kolom.

TsvHttpData-1.0
https://example.com/myfile.pdf    1357    wHENa08V36iPYAsOa2JAdw==
https://example2.com/images/dataset1/flower.png    2468    R9acAaveoPd2y8nniLUYbw==

Setiap baris berisi:

  • URL HTTP atau HTTPS objek sumber.
  • (Opsional) Ukuran objek dalam byte.

    Pastikan ukuran yang ditentukan cocok dengan ukuran sebenarnya dari objek saat diambil. Jika ukuran objek yang diterima oleh Cloud Storage tidak cocok dengan ukuran yang ditentukan, transfer objek akan gagal.

  • (Opsional) Checksum MD5 objek yang dienkode base64.

    Pastikan checksum MD5 yang ditentukan cocok dengan checksum MD5 yang dihitung dari byte yang ditransfer. Jika checksum MD5 objek yang diterima oleh Cloud Storage tidak cocok dengan checksum MD5 yang ditentukan, transfer objek akan gagal.

Meskipun ukuran objek dan nilai checksum MD5 bersifat opsional, sebaiknya sertakan nilai tersebut untuk membantu memastikan integritas data.

Menghosting daftar URL

Daftar URL dapat dihosting di salah satu dari dua lokasi:

  • URL yang dapat diakses secara publik.
  • Bucket Cloud Storage, yang telah memberikan akses kepada agen layanan untuk Storage Transfer Service.

URL yang dapat diakses secara publik

Saat menyimpan daftar URL di URL yang dapat diakses secara publik, persyaratan berikut berlaku:

  • URL harus diawali dengan http:// atau https://.
  • Server harus menetapkan header Etag yang kuat dalam respons HTTP saat menampilkan daftar URL.

Misalnya, Anda dapat menyimpan daftar di bucket Cloud Storage dan membagikan objek secara publik untuk mendapatkan link ke objek tersebut.

Bucket Cloud Storage

Untuk menghindari penyimpanan daftar di lokasi publik, Anda dapat menyimpannya di bucket Cloud Storage, dan memberikan akses ke agen layanan untuk Storage Transfer Service.

Agen layanan harus diberi izin berikut:

  • Izin storage.object.get pada objek. Izin ini dapat diberikan dengan memberikan peran roles/storage.legacyObjectReader di bucket, atau dengan peran khusus.
  • Izin storage.buckets.get di bucket. Izin ini dapat diberikan dengan memberikan peran roles/storage.legacyBucketReader, atau dengan peran khusus.

Untuk memberikan izin ke agen layanan:

Menemukan email agen layanan

  1. Buka halaman referensi googleServiceAccounts.get.

    Panel interaktif akan terbuka, berjudul Coba metode ini.

  2. Di panel, pada bagian Request parameters, masukkan ID project Anda. Project yang Anda tentukan di sini harus berupa project yang Anda gunakan untuk mengelola Storage Transfer Service, yang mungkin berbeda dengan project bucket daftar URL.

  3. Klik Jalankan.

Email agen layanan Anda ditampilkan sebagai nilai accountEmail dan menggunakan format project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

Salin nilai ini.

Memberikan peran yang diperlukan

Untuk memberikan peran roles/storage.objectViewer dan peran roles/storage.bucketViewer kepada agen layanan di bucket yang berisi daftar URL, ikuti petunjuk di bagian Menetapkan dan mengelola kebijakan IAM di bucket.

Akun utama yang Anda tambahkan adalah alamat email agen layanan. Jika diperlukan, ID utama adalah serviceAccount. Contoh, serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

Membuat tugas transfer daftar URL

Untuk menentukan daftar URL saat membuat tugas transfer, ikuti petunjuk berikut:

Konsol Google Cloud

Ikuti petunjuk di Membuat tugas transfer.

Saat memilih sumber:

  1. Di bagian Jenis sumber, pilih Daftar URL, lalu klik Langkah berikutnya.

  2. Di bagian URL file TSV, berikan URL ke file nilai yang dipisahkan tab (TSV). URL adalah alamat HTTP/HTTPS (misalnya, https://example.com/urllist.tsv) atau jalur Cloud Storage (misalnya, gs://my-bucket/urllist.tsv).

gcloud CLI

Untuk membuat tugas transfer baru, gunakan perintah gcloud transfer jobs create.

gcloud transfer jobs create \
  SOURCE DESTINATION

Untuk transfer daftar URL, nilai SOURCE adalah URL file TSV. URL adalah alamat HTTP/HTTPS (misalnya, https://example.com/urllist.tsv) atau jalur Cloud Storage (misalnya, gs://my-bucket/urllist.tsv).

Untuk mengetahui informasi selengkapnya tentang cara membuat transfer menggunakan gcloud CLI, lihat Membuat tugas transfer.

REST

Untuk membuat tugas transfer daftar URL menggunakan REST API, tentukan URL file TSV di kolom listUrl:

{
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "httpDataSource": {
      "listUrl": "URL"
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

Nilai URL adalah alamat HTTP/HTTPS (misalnya, https://example.com/urllist.tsv) atau jalur Cloud Storage (misalnya, gs://my-bucket/urllist.tsv).

Untuk mengetahui detail selengkapnya tentang cara membuat transfer menggunakan REST API, lihat referensi REST API.