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 i nuovi oggetti e gli oggetti 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 le code di archiviazione di Azure per notificare a Storage Transfer Service le modifiche apportate al container Azure. Quando si verifica un evento, ad esempio 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:

Creare una coda di archiviazione di Azure

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

  1. Nel portale di Azure, vai all'account di archiviazione di Azure.
  2. Nel menu di navigazione a sinistra, in Archiviazione dati, seleziona Code.
  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 di Azure. In genere, l'indirizzo sarà nel formato: AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.

Attivare le notifiche degli eventi di Azure Blob Storage per la coda di Azure

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

  1. Nel portale di 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 + Sottoscrizione di eventi.
  4. Configura la sottoscrizione di eventi:

    • Dettagli della sottoscrizione di eventi:
      • Fornisci un nome della sottoscrizione di 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 eventi:
        • Blob creato
        • Directory creata
        • Blob rinominato
        • Directory rinominata
        • Livello del blob modificato
    • Dettagli dell'endpoint:
      • Tipo di endpoint: seleziona Coda di archiviazione.
      • Fai clic su Seleziona un endpoint, quindi seleziona la coda di Azure che hai creato 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 container 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 di Azure

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

Token SAS

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

  • Servizi consentiti: blob e coda
  • Autorizzazioni consentite: lettura, elenco ed elaborazione

Identità federata

Segui le istruzioni per l'autenticazione con l'identità federata. Oltre a concedere all'applicazione l'accesso al container di archiviazione di Azure, devi anche concederle l'accesso alla coda di Azure. Per farlo, aggiungi il ruolo Elaboratore di messaggi di dati della coda di archiviazione all'applicazione per la coda di Azure.

Creare un job di trasferimento con un flusso di eventi

Una volta configurate la coda di Azure e le notifiche degli eventi, crea il job di 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 all'ora e include i dettagli sui dati trasferiti per ogni job.

Google Cloud Console

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

    Vai a Crea job di trasferimento

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

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

  4. Per Modalità di pianificazione, seleziona Basata su eventi.

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

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

    (Facoltativo) Inserisci un'ora di inizio e di fine per il trasferimento. Se non specifichi un'ora, 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 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 computer contenente il token SAS o la configurazione dell'identità federata.
  • AZURE_QUEUE_NAME: il nome della coda di Azure.
  • EVENT_STREAM_STARTS: quando iniziare ad ascoltare gli eventi utilizzando il formato di 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 gcloud transfer jobs create riferimento.

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 dell'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.