Trasferimenti basati su eventi da Azure Blob Storage o Data Lake Storage Gen2

Questo documento descrive come configurare i trasferimenti di dati basati su eventi da Azure Blob Storage o Data Lake Storage Gen2 a Cloud Storage utilizzando Storage Transfer Service. I trasferimenti basati su eventi trasferiscono automaticamente gli oggetti nuovi e aggiornati dal container Azure a Cloud Storage. Le eliminazioni di oggetti non vengono rilevate; l'eliminazione di un oggetto nell'origine non elimina l'oggetto associato nel bucket di destinazione.

I trasferimenti basati su eventi utilizzano Azure Event Grid e Azure Storage Queues per comunicare a Storage Transfer Service le modifiche apportate al tuo container Azure. Quando si verifica un evento come la creazione di un nuovo blob nel container di origine, Azure Event Grid invia una notifica a una coda di archiviazione di Azure configurata. Storage Transfer Service monitora continuamente questa coda e avvia un trasferimento in base agli eventi ricevuti.

Prima di iniziare

Segui le istruzioni per concedere le autorizzazioni richieste sul bucket Cloud Storage di destinazione:

Crea una coda di archiviazione Azure

Crea una coda di archiviazione Azure che riceverà le notifiche da Azure Event Grid.

  1. Nel portale Azure, vai al tuo account Azure Storage.
  2. Nel menu di navigazione a sinistra, seleziona Code nella sezione Archiviazione dati.
  3. Fai clic su + Coda per creare una nuova coda.
  4. Fornisci un nome per la coda (ad es. transfer-notifications) e fai clic su Ok.
  5. Una volta creata, recupera l'indirizzo della coda Azure. L'indirizzo in genere è nel formato: AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.

Abilitare le notifiche degli eventi di Azure Blob Storage per Azure Queue

Configura Azure Event Grid per inviare notifiche degli eventi di archiviazione BLOB alla coda Azure che hai creato.

  1. Nel portale Azure, vai all'account di archiviazione che contiene il container di archiviazione blob che vuoi monitorare.
  2. Nel menu di navigazione a sinistra, in Servizio BLOB, seleziona Eventi.
  3. Fai clic su + Event Subscription (Abbonamento a eventi).
  4. Configura l'abbonamento agli eventi:

    • Dettagli dell'abbonamento all'evento:
      • Fornisci un nome della sottoscrizione agli eventi (ad es. blob-transfer-events).
      • Fornisci un nome dell'argomento di sistema (ad es. my-blob-events-topic).
    • Tipi di eventi:
      • Seleziona i seguenti tipi di evento:
        • Blob creato
        • Directory creata
        • Blob rinominato
        • Directory rinominata
        • Livello blob modificato
    • Dettagli endpoint:
      • Endpoint Type (Tipo di endpoint): seleziona Storage Queue (Coda di archiviazione).
      • Fai clic su Seleziona un endpoint, quindi seleziona la coda Azure creata in precedenza.
    • Filtri:

      • Fai clic su Attiva il filtro per oggetto.
      • Aggiungi quanto segue come filtro L'oggetto inizia con per limitare le notifiche a un container specifico:

        /blobServices/default/containers/AZURE_CONTAINER_NAME/

        Sostituisci AZURE_CONTAINER_NAME con il nome del tuo contenitore di archiviazione blob.

      • (Facoltativo) Per filtrare gli eventi per i blob con un prefisso specifico all'interno del container, utilizza:

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

  5. Fai clic su Crea.

Configurare l'accesso alla coda Azure

Storage Transfer Service ha bisogno dell'autorizzazione per accedere alla coda Azure e leggere i relativi messaggi. Puoi eseguire l'autenticazione utilizzando un token di firma di accesso condiviso (SAS) o l'identità federata.

Token SAS

Segui le istruzioni per l'autenticazione con un token SAS e includi i seguenti elementi:

  • Servizi consentiti: Blob e Queue
  • Autorizzazioni consentite: lettura, elenco ed elaborazione

Identità federata

Segui le istruzioni per l'autenticazione con identità federata. Oltre a concedere all'applicazione l'accesso al container di Archiviazione di Azure, devi concederle anche l'accesso alla coda Azure. A tale scopo, aggiungi il ruolo Storage Queue Data Message Processor all'applicazione per la coda Azure.

Creare un job di trasferimento con un flusso di eventi

Una volta configurate le notifiche di eventi e le code Azure, crea il job Storage Transfer Service con un flusso di eventi.

Una volta creato, il job di trasferimento inizia a essere eseguito e un listener di eventi attende le notifiche nella coda di Azure. La pagina dei dettagli del job mostra un'operazione ogni ora e include i dettagli sui dati trasferiti per ogni job.

Console Google Cloud

  1. Vai alla pagina Crea job di trasferimento nella console Google Cloud .

    Vai a Crea job di trasferimento

  2. Per Tipo di origine, seleziona Archiviazione BLOB di Azure o Data Lake Storage Gen2.

  3. Per Tipo di destinazione, seleziona Google Cloud Storage.

  4. Per la Modalità di pianificazione, seleziona Basata sugli eventi.

  5. Nel campo Nome stream di eventi, inserisci l'indirizzo della tua coda Azure.

  6. Completa i passaggi rimanenti come di consueto per creare un job di trasferimento, inclusi i dettagli di origine e destinazione e l'autenticazione.

    (Facoltativo) Inserisci un orario di inizio e di fine per il trasferimento. Se non specifichi un orario, il trasferimento inizierà immediatamente e verrà eseguito fino all'interruzione manuale.

Google Cloud CLI

Per creare un job di trasferimento basato su eventi utilizzando gcloud CLI, utilizza il comando gcloud transfer jobs create con il 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

Sostituisci i segnaposto con i tuoi valori effettivi:

  • AZURE_STORAGE_ACCOUNT_NAME e AZURE_CONTAINER_NAME: Il nome dell'account Azure Blob Storage e il nome del container.
  • DESTINATION_BUCKET: Il bucket Cloud Storage di destinazione.
  • SOURCE_CREDS_FILE: il percorso relativo a un file locale sul tuo computer contenente il token SAS o la configurazione dell'identità federata.
  • AZURE_QUEUE_NAME: il nome della coda Azure.
  • EVENT_STREAM_STARTS: quando iniziare ad ascoltare gli eventi utilizzando il formato data e ora %Y-%m-%dT%H:%M:%S%z (ad es. 2020-04-12T06:42:12+04:00). Se non impostato, il job inizia a essere eseguito e a rimanere in ascolto degli eventi dopo l'invio riuscito del comando di creazione del job.
  • EVENT_STREAM_EXPIRES: quando interrompere l'ascolto degli eventi. Se non impostato, il job continua fino all'interruzione manuale.

Per un elenco completo dei campi supportati, consulta il riferimento gcloud transfer jobs create.

API REST

Definisci un job di trasferimento basato su eventi utilizzando il 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"
}

I campi relativi all'ora di inizio e di scadenza sono facoltativi:

  • event_stream_start_time: l'ora da cui iniziare ad ascoltare gli eventi nel formato YYYY-MM-DDTHH:MM:SSZ. Se non specificato, il listener inizia immediatamente.
  • event_stream_expiration_time: l'ora in cui il listener del flusso di eventi scade nel formato YYYY-MM-DDTHH:MM:SSZ. Se non specificato, il listener continua finché il job di trasferimento non viene disattivato o eliminato.