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

Dokumen ini menjelaskan cara mengonfigurasi transfer data berbasis 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 di container Azure Anda. Saat peristiwa seperti pembuatan blob baru terjadi di container sumber Anda, 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 kiri, di bagian Data storage, pilih Queues.
  3. Klik + Queue untuk membuat antrean baru.
  4. Berikan nama untuk antrean Anda (misalnya, transfer-notifications) dan klik OK.
  5. Setelah dibuat, ambil alamat untuk Antrean Azure. Alamat biasanya dalam format: AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.

Mengaktifkan notifikasi peristiwa Azure Blob Storage untuk Antrean Azure

Konfigurasi Azure Event Grid untuk mengirimkan 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 + Event Subscription.
  4. Konfigurasi langganan peristiwa:

    • Event Subscription Details:
      • Berikan Event Subscription Name (misalnya, blob-transfer-events).
      • Berikan System Topic Name (misalnya, my-blob-events-topic).
    • Event Types:
      • Pilih jenis peristiwa berikut:
        • Blob Created
        • Directory Created
        • Blob Renamed
        • Directory Renamed
        • Blob Tier Changed
    • Endpoint Details:
      • Jenis Titik Akhir: Pilih Antrean Penyimpanan.
      • Klik Select an endpoint, lalu pilih Antrean Azure yang Anda buat sebelumnya.
    • Filters:

      • Klik Enable subject filtering.
      • Tambahkan yang berikut sebagai filter Subject begins with untuk membatasi notifikasi ke container 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 Create.

Menyiapkan akses ke antrean Azure

Storage Transfer Service memerlukan izin untuk mengakses antrean Azure dan membaca pesannya. Anda dapat melakukan autentikasi menggunakan token Shared Access Signature (SAS) atau identitas gabungan.

Token SAS

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

  • Allowed services: Blob dan Queue
  • Allowed permissions: Read, List, dan Process

Identitas gabungan

Ikuti petunjuk untuk melakukan autentikasi dengan identitas gabungan. Selain memberikan akses aplikasi ke container Azure Storage Anda, 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 akan mulai berjalan dan pemroses peristiwa akan menunggu notifikasi di antrean Azure. Halaman detail tugas menampilkan satu operasi setiap jam, dan menyertakan detail data yang ditransfer untuk setiap tugas.

Google Cloud Konsol

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

    Buka Create transfer job

  2. Untuk Source type, pilih Azure Blob Storage or Data Lake Storage Gen2.

  3. Untuk Destination type, pilih Google Cloud Storage.

  4. Untuk Scheduling mode, pilih Event-driven.

  5. Di kolom Event stream name, 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 berbasis 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 container 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 Antrean Azure Anda (misalnya, my-queue).
  • EVENT_STREAM_STARTS: Kapan harus mulai memproses peristiwa menggunakan format tanggalwaktu %Y-%m-%dT%H:%M:%S%z (misalnya, 2020-04-12T06:42:12+04:00). Jika tidak ditetapkan, tugas akan mulai berjalan dan memproses peristiwa setelah pengiriman perintah pembuatan tugas berhasil.
  • EVENT_STREAM_EXPIRES: Kapan harus berhenti memproses peristiwa. Jika tidak ditetapkan, tugas akan terus berjalan 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 TransferJob proto:

{
  "description": "Event-driven Azure to Cloud Storage transfer",
  "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 habis masa berlaku bersifat opsional:

  • event_stream_start_time: Waktu untuk mulai memproses 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, pemroses akan terus berjalan hingga tugas transfer dinonaktifkan atau dihapus.