Ereignisgesteuerte Übertragungen von Azure Blob Storage oder Data Lake Storage Gen2

In diesem Dokument wird beschrieben, wie Sie ereignisgesteuerte Datenübertragungen von Azure Blob Storage oder Data Lake Storage Gen2 zu Cloud Storage mit Storage Transfer Service konfigurieren. Bei ereignisgesteuerten Übertragungen werden neue und aktualisierte Objekte automatisch aus Ihrem Azure-Container in Cloud Storage übertragen. Das Löschen von Objekten wird nicht erkannt. Wenn Sie ein Objekt in der Quelle löschen, wird das zugehörige Objekt im Ziel-Bucket nicht gelöscht.

Bei ereignisgesteuerten Übertragungen werden Azure Event Grid und Azure Storage-Warteschlangen verwendet, um den Storage Transfer Service über Änderungen in Ihrem Azure-Container zu informieren. Wenn in Ihrem Quellcontainer ein Ereignis wie das Erstellen eines neuen Blobs eintritt, sendet Azure Event Grid eine Benachrichtigung an eine konfigurierte Azure Storage-Warteschlange. Der Storage Transfer Service überwacht diese Warteschlange kontinuierlich und startet eine Übertragung basierend auf den empfangenen Ereignissen.

Hinweis

Folgen Sie der Anleitung, um die erforderlichen Berechtigungen für Ihren Cloud Storage-Ziel-Bucket zu erteilen:

Azure Storage-Warteschlange erstellen

Erstellen Sie eine Azure Storage-Warteschlange, die Benachrichtigungen von Azure Event Grid empfängt.

  1. Rufen Sie im Azure-Portal Ihr Azure Storage-Konto auf.
  2. Wählen Sie im linken Navigationsmenü unter Datenspeicher die Option Warteschlangen aus.
  3. Klicken Sie auf + Warteschlange, um eine neue Warteschlange zu erstellen.
  4. Geben Sie einen Namen für die Warteschlange ein (z.B. transfer-notifications) und klicken Sie auf OK.
  5. Rufen Sie nach der Erstellung die Adresse für die Azure-Warteschlange ab. Die Adresse hat in der Regel das Format AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.

Azure Blob Storage-Ereignisbenachrichtigungen für Azure Queue aktivieren

Konfigurieren Sie Azure Event Grid so, dass Benachrichtigungen zu Blob Storage-Ereignissen an die von Ihnen erstellte Azure-Warteschlange gesendet werden.

  1. Rufen Sie im Azure-Portal das Speicherkonto auf, das den Blob-Speichercontainer enthält, den Sie überwachen möchten.
  2. Wählen Sie im linken Navigationsmenü unter Blob-Dienst die Option Ereignisse aus.
  3. Klicken Sie auf + Event-Abo.
  4. Konfigurieren Sie das Ereignisabo:

    • Details zum Veranstaltungsabo:
      • Geben Sie einen Name des Ereignisabos an, z.B. blob-transfer-events).
      • Geben Sie einen System Topic Name (Systemthemenname) an, z.B. my-blob-events-topic).
    • Ereignistypen:
      • Wählen Sie die folgenden Ereignistypen aus:
        • Blob erstellt
        • Verzeichnis erstellt
        • Blob umbenannt
        • Verzeichnis umbenannt
        • Blob-Tier geändert
    • Endpunktdetails:
      • Endpunkttyp: Wählen Sie Speicherwarteschlange aus.
      • Klicken Sie auf Endpunkt auswählen und wählen Sie dann die Azure-Warteschlange aus, die Sie zuvor erstellt haben.
    • Filters (Filter):

      • Klicken Sie auf Betrefffilterung aktivieren.
      • Fügen Sie Folgendes als Filter Betreff beginnt mit hinzu, um Benachrichtigungen auf einen bestimmten Container zu beschränken:

        /blobServices/default/containers/AZURE_CONTAINER_NAME/

        Ersetzen Sie AZURE_CONTAINER_NAME durch den Namen Ihres Blob Storage-Containers.

      • Optional: Wenn Sie Ereignisse für Blobs mit einem bestimmten Präfix im Container filtern möchten, verwenden Sie:

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

  5. Klicken Sie auf Erstellen.

Zugriff auf die Azure-Warteschlange einrichten

Storage Transfer Service benötigt die Berechtigung, auf die Azure-Warteschlange zuzugreifen und ihre Nachrichten zu lesen. Sie können sich entweder mit einem SAS-Token (Shared Access Signature) oder mit einer Verbundidentität authentifizieren.

SAS-Token

Folgen Sie der Anleitung zur Authentifizierung mit einem SAS-Token und fügen Sie die folgenden Elemente ein:

  • Zulässige Dienste: Blob und Queue
  • Zulässige Berechtigungen: Lesen, Liste und Verarbeitung

Föderierte Identität

Folgen Sie der Anleitung zur Authentifizierung mit einer föderierten Identität. Sie müssen der Anwendung nicht nur Zugriff auf Ihren Azure Storage-Container, sondern auch auf die Azure-Warteschlange gewähren. Fügen Sie dazu der Anwendung die Rolle Storage Queue Data Message Processor für die Azure-Warteschlange hinzu.

Übertragungsjob mit einem Ereignisstream erstellen

Nachdem Sie Ihre Azure-Warteschlange und Ereignisbenachrichtigungen konfiguriert haben, erstellen Sie Ihren Storage Transfer Service-Job mit einem Ereignisstream.

Nachdem der Übertragungsjob erstellt wurde, wird er ausgeführt und ein Event-Listener wartet auf Benachrichtigungen in der Azure-Warteschlange. Auf der Seite mit den Jobdetails wird für jede Stunde ein Vorgang angezeigt. Außerdem sind Details zu den für jeden Job übertragenen Daten enthalten.

Google Cloud Console

  1. Rufen Sie in der Google Cloud -Console die Seite Übertragungsauftrag erstellen auf.

    Übertragungsjob erstellen

  2. Wählen Sie unter Quelltyp die Option Azure Blob Storage oder Data Lake Storage Gen2 aus.

  3. Wählen Sie als Zieltyp die Option Google Cloud Storage aus.

  4. Wählen Sie für Planungsmodus die Option Ereignisgesteuert aus.

  5. Geben Sie im Feld Name des Ereignisstreams die Adresse Ihrer Azure-Warteschlange ein.

  6. Führen Sie die verbleibenden Schritte wie gewohnt aus, um einen Übertragungsjob zu erstellen, einschließlich der Quell- und Zieldetails sowie der Authentifizierung.

    Optional: Geben Sie eine Start- und Endzeit für die Übertragung ein. Wenn Sie keine Zeit angeben, beginnt die Übertragung sofort und wird fortgesetzt, bis sie manuell beendet wird.

Google Cloud CLI

Verwenden Sie den Befehl gcloud transfer jobs create mit dem Flag --event-stream-name, um einen ereignisgesteuerten Übertragungsjob mit der gcloud CLI zu erstellen:

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

Ersetzen Sie die Platzhalter durch Ihre tatsächlichen Werte:

  • AZURE_STORAGE_ACCOUNT_NAME und AZURE_CONTAINER_NAME: Der Name Ihres Azure Blob Storage-Kontos und -Containers.
  • DESTINATION_BUCKET: Ihr Cloud Storage-Ziel-Bucket.
  • SOURCE_CREDS_FILE: Der relative Pfad zu einer lokalen Datei auf Ihrem Rechner, die Ihr SAS-Token oder Ihre Konfiguration für die Verbundidentität enthält.
  • AZURE_QUEUE_NAME: Der Name Ihrer Azure-Warteschlange.
  • EVENT_STREAM_STARTS: Der Zeitpunkt, ab dem auf Ereignisse gewartet werden soll, im Datums-/Zeitformat %Y-%m-%dT%H:%M:%S%z (z.B. 2020-04-12T06:42:12+04:00). Wenn nicht festgelegt, wird der Job nach erfolgreicher Übermittlung des Befehls „create job“ ausgeführt und wartet auf Ereignisse.
  • EVENT_STREAM_EXPIRES: Wann das Abhören von Ereignissen beendet werden soll. Wenn nicht festgelegt, wird der Job fortgesetzt, bis er manuell beendet wird.

Eine vollständige Liste der unterstützten Felder finden Sie in der Referenz zu gcloud transfer jobs create.

REST API

Definieren Sie einen ereignisgesteuerten Übertragungsjob mit dem TransferJob-Proto:

{
  "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"
}

Die Felder für Start- und Ablaufzeit sind optional:

  • event_stream_start_time: Die Zeit, ab der auf Ereignisse gewartet werden soll, im Format YYYY-MM-DDTHH:MM:SSZ. Wenn nichts angegeben ist, wird der Listener sofort gestartet.
  • event_stream_expiration_time: Die Zeit, zu der der Eventstream-Listener abläuft, im Format YYYY-MM-DDTHH:MM:SSZ. Wenn nichts angegeben ist, wird der Listener fortgesetzt, bis der Übertragungsjob deaktiviert oder gelöscht wird.