Transfer berbasis peristiwa dari Azure Blob Storage atau Data Lake Storage Gen2

Dokumen ini menjelaskan cara mengonfigurasi transfer data yang didorong peristiwa dari Azure Blob Storage atau Data Lake Storage Gen2 ke Cloud Storage menggunakan Storage Transfer Service. Transfer berbasis peristiwa secara otomatis mentransfer objek baru dan objek yang diperbarui dari container Azure Anda ke Cloud Storage. Penghapusan objek tidak terdeteksi; menghapus objek di sumber tidak akan menghapus objek terkait di bucket tujuan.

Transfer berbasis peristiwa menggunakan Azure Event Grid dan Azure Storage Queues untuk memberi tahu Storage Transfer Service tentang perubahan dalam container Azure Anda. Saat peristiwa seperti pembuatan blob baru terjadi di kontainer sumber, Azure Event Grid akan mengirimkan notifikasi ke Azure Storage Queue yang dikonfigurasi. Storage Transfer Service terus memantau antrean ini dan memulai transfer berdasarkan peristiwa yang diterima.

Sebelum memulai

Ikuti petunjuk untuk memberikan izin yang diperlukan di bucket Cloud Storage tujuan Anda:

Membuat antrean Azure Storage

Buat antrean Azure Storage yang akan menerima notifikasi dari Azure Event Grid.

  1. Di portal Azure, buka akun Azure Storage Anda.
  2. Di menu navigasi sebelah kiri, di bagian Penyimpanan data, pilih Antrean.
  3. Klik + Queue untuk membuat antrean baru.
  4. Berikan nama untuk antrean Anda (misalnya, transfer-notifications) lalu klik Oke.
  5. Setelah dibuat, ambil alamat untuk Azure Queue. Alamat biasanya dalam format: AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.

Mengaktifkan notifikasi peristiwa Azure Blob Storage untuk Azure Queue

Konfigurasi Azure Event Grid untuk mengirim notifikasi peristiwa penyimpanan blob ke antrean Azure yang Anda buat.

  1. Di portal Azure, buka akun penyimpanan yang berisi container penyimpanan blob yang ingin Anda pantau.
  2. Di menu navigasi kiri, di bagian Blob service, pilih Events.
  3. Klik + Langganan Peristiwa.
  4. Konfigurasi langganan peristiwa:

    • Detail Langganan Acara:
      • Berikan Nama Langganan Peristiwa (misalnya, blob-transfer-events).
      • Berikan Nama Topik Sistem (misalnya, my-blob-events-topic).
    • Jenis Peristiwa:
      • Pilih jenis peristiwa berikut:
        • Blob Dibuat
        • Direktori Dibuat
        • Blob Diganti Namanya
        • Direktori Diganti Namanya
        • Tingkatan Blob Diubah
    • Detail Endpoint:
      • Endpoint Type: Pilih Storage Queue.
      • Klik Select an endpoint, lalu pilih Azure Queue yang Anda buat sebelumnya.
    • Filter:

      • Klik Aktifkan pemfilteran subjek.
      • Tambahkan yang berikut sebagai filter Subjek diawali dengan untuk membatasi notifikasi ke penampung tertentu:

        /blobServices/default/containers/AZURE_CONTAINER_NAME/

        Ganti AZURE_CONTAINER_NAME dengan nama container penyimpanan blob Anda.

      • (Opsional) Untuk memfilter peristiwa untuk blob dengan awalan tertentu dalam container, gunakan:

        /blobServices/default/containers/AZURE_CONTAINER_NAME/blobs/BLOB_PREFIX

  5. Klik Buat.

Menyiapkan akses ke antrean Azure

Storage Transfer Service memerlukan izin untuk mengakses antrean Azure dan membaca pesan-pesannya. Anda dapat melakukan autentikasi menggunakan token Tanda Tangan Akses Bersama (SAS) atau identitas gabungan.

Token SAS

Ikuti petunjuk untuk melakukan autentikasi dengan token SAS dan sertakan item berikut:

  • Layanan yang diizinkan: Blob dan Queue
  • Izin yang diizinkan: Baca, Buat Daftar, dan Proses

Identitas gabungan

Ikuti petunjuk untuk melakukan autentikasi dengan identitas gabungan. Selain memberikan akses aplikasi ke container Azure Storage, Anda juga harus memberikan akses ke antrean Azure. Untuk melakukannya, tambahkan peran Storage Queue Data Message Processor ke aplikasi untuk antrean Azure.

Membuat tugas transfer dengan aliran peristiwa

Setelah antrean Azure dan notifikasi peristiwa dikonfigurasi, buat tugas Storage Transfer Service dengan aliran peristiwa.

Setelah dibuat, tugas transfer mulai berjalan dan pemroses peristiwa menunggu notifikasi di antrean Azure. Halaman detail tugas menampilkan satu operasi setiap jam, dan menyertakan detail data yang ditransfer untuk setiap tugas.

Konsol Google Cloud

  1. Buka halaman Create transfer job di konsol Google Cloud .

    Buka Buat tugas transfer

  2. Untuk Jenis sumber, pilih Azure Blob Storage atau Data Lake Storage Gen2.

  3. Untuk Destination type, pilih Google Cloud Storage.

  4. Untuk Scheduling mode, pilih Event-driven.

  5. Di kolom Nama aliran peristiwa, masukkan alamat antrean Azure Anda.

  6. Selesaikan langkah-langkah yang tersisa seperti biasa untuk membuat tugas transfer, termasuk detail sumber dan tujuan, serta autentikasi.

    Secara opsional, masukkan waktu mulai dan berakhir untuk transfer. Jika Anda tidak menentukan waktu, transfer akan segera dimulai dan akan berjalan hingga dihentikan secara manual.

Google Cloud CLI

Untuk membuat tugas transfer yang didorong peristiwa menggunakan gcloud CLI, gunakan perintah gcloud transfer jobs create dengan flag --event-stream-name:

gcloud transfer jobs create \
  https://AZURE_STORAGE_ACCOUNT_NAME.blob.core.windows.net/AZURE_CONTAINER_NAME \
  gs://DESTINATION_BUCKET \
  --source-creds-file=SOURCE_CREDS_FILE \
  --event-stream-name=AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME \
  --event-stream-starts=EVENT_STREAM_STARTS \
  --event-stream-expires=EVENT_STREAM_EXPIRES

Ganti placeholder dengan nilai sebenarnya:

  • AZURE_STORAGE_ACCOUNT_NAME dan AZURE_CONTAINER_NAME: Nama akun dan nama kontainer Azure Blob Storage Anda.
  • DESTINATION_BUCKET: Bucket Cloud Storage tujuan Anda.
  • SOURCE_CREDS_FILE: Jalur relatif ke file lokal di komputer Anda yang berisi token SAS atau konfigurasi identitas gabungan.
  • AZURE_QUEUE_NAME: Nama Azure Queue Anda.
  • EVENT_STREAM_STARTS: Kapan mulai memproses peristiwa menggunakan format tanggal dan waktu %Y-%m-%dT%H:%M:%S%z (misalnya, 2020-04-12T06:42:12+04:00). Jika tidak disetel, tugas akan mulai berjalan dan memproses peristiwa setelah perintah buat tugas berhasil dikirimkan.
  • EVENT_STREAM_EXPIRES: Kapan berhenti memproses peristiwa. Jika tidak ditetapkan, tugas akan berlanjut hingga dihentikan secara manual.

Untuk mengetahui daftar lengkap kolom yang didukung, lihat referensi gcloud transfer jobs create.

REST API

Tentukan tugas transfer berbasis peristiwa menggunakan proto TransferJob:

{
  "description": "Test Azure to GCS transfer via event stream.",
  "project_id": "PROJECT_ID",
  "transfer_spec": {
    "azure_blob_storage_data_source": {
      "storage_account": "AZURE_STORAGE_ACCOUNT_NAME",
      "container": "AZURE_CONTAINER_NAME",
      "federated_identity_config": {
        "client_id": "CLIENT_ID",
        "tenant_id": "TENANT_ID"
      }
    },
    "gcs_data_sink": {
      "bucket_name": "DESTINATION_BUCKET"
    },
    "object_conditions": {
      // optional object conditions (include_prefixes, etc)
    },
    "transfer_options": {}
  },
  "event_stream": {
    "name": "AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME",
    "event_stream_start_time": EVENT_STREAM_START_TIME,
    "event_stream_expiration_time": EVENT_STREAM_EXPIRATION_TIME
  },
  "status": "ENABLED"
}

Kolom waktu mulai dan waktu berakhir bersifat opsional:

  • event_stream_start_time: Waktu mulai mendengarkan peristiwa dalam format YYYY-MM-DDTHH:MM:SSZ. Jika tidak ditentukan, pemroses akan segera dimulai.
  • event_stream_expiration_time: Waktu saat pemroses aliran peristiwa berakhir dalam format YYYY-MM-DDTHH:MM:SSZ. Jika tidak ditentukan, pendengar akan terus berjalan hingga tugas transfer dinonaktifkan atau dihapus.