Transferts déclenchés par des événements depuis Azure Blob Storage ou Data Lake Storage Gen2

Ce document explique comment configurer des transferts de données basés sur des événements depuis Azure Blob Storage ou Data Lake Storage Gen2 vers Cloud Storage à l'aide du service de transfert de stockage. Les transferts déclenchés par des événements transfèrent automatiquement les nouveaux objets et les objets mis à jour de votre conteneur Azure vers Cloud Storage. Les suppressions d'objets ne sont pas détectées. Si vous supprimez un objet à la source, l'objet associé n'est pas supprimé dans le bucket de destination.

Les transferts basés sur des événements utilisent Azure Event Grid et Azure Storage Queues pour informer le service de transfert de stockage des modifications apportées à votre conteneur Azure. Lorsqu'un événement tel que la création d'un blob se produit dans votre conteneur source, Azure Event Grid envoie une notification à une file d'attente Azure Storage configurée. Le service de transfert de stockage surveille en permanence cette file d'attente et lance un transfert en fonction des événements reçus.

Avant de commencer

Suivez les instructions pour accorder les autorisations requises sur votre bucket Cloud Storage de destination :

Créer une file d'attente Azure Storage

Créez une file d'attente Azure Storage qui recevra les notifications d'Azure Event Grid.

  1. Dans le portail Azure, accédez à votre compte Azure Storage.
  2. Dans le menu de navigation de gauche, sous Stockage de données, sélectionnez Files d'attente.
  3. Cliquez sur + Queue (+ File d'attente) pour créer une file d'attente.
  4. Attribuez un nom à votre file d'attente (par exemple, transfer-notifications), puis cliquez sur OK.
  5. Une fois la file d'attente Azure créée, récupérez son adresse. L'adresse est généralement au format suivant : AZURE_STORAGE_ACCOUNT_NAME.queue.core.windows.net/AZURE_QUEUE_NAME.

Activer les notifications d'événements Azure Blob Storage pour Azure Queue

Configurez Azure Event Grid pour envoyer des notifications d'événements de stockage d'objets blob à la file d'attente Azure que vous avez créée.

  1. Dans le portail Azure, accédez au compte de stockage contenant le conteneur Blob Storage que vous souhaitez surveiller.
  2. Dans le menu de navigation de gauche, sous Service Blob, sélectionnez Événements.
  3. Cliquez sur + Abonnement aux événements.
  4. Configurez l'abonnement aux événements :

    • Détails de l'abonnement à l'événement :
      • Indiquez un Nom de l'abonnement aux événements (par exemple, blob-transfer-events).
      • Indiquez un nom de thème système (par exemple, my-blob-events-topic).
    • Types d'événements :
      • Sélectionnez les types d'événements suivants :
        • Blob créé
        • Annuaire créé
        • Blob renommé
        • Annuaire renommé
        • Niveau de blob modifié
    • Informations sur le point de terminaison :
      • Type de point de terminaison : sélectionnez File d'attente de stockage.
      • Cliquez sur Sélectionner un point de terminaison, puis sélectionnez la file d'attente Azure que vous avez créée précédemment.
    • Filters (Filtres) :

      • Cliquez sur Activer le filtrage des sujets.
      • Ajoutez ce qui suit comme filtre L'objet commence par pour limiter les notifications à un conteneur spécifique :

        /blobServices/default/containers/AZURE_CONTAINER_NAME/

        Remplacez AZURE_CONTAINER_NAME par le nom de votre conteneur Blob Storage.

      • (Facultatif) Pour filtrer les événements pour les blobs avec un préfixe spécifique dans le conteneur, utilisez :

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

  5. Cliquez sur Créer.

Configurer l'accès à la file d'attente Azure

Le service de transfert de stockage a besoin d'accéder à la file d'attente Azure et de lire ses messages. Vous pouvez vous authentifier à l'aide d'un jeton de signature d'accès partagé (SAP) ou d'une identité fédérée.

Jeton SAP

Suivez les instructions pour s'authentifier avec un jeton SAP et incluez les éléments suivants :

  • Services autorisés : Blob et Queue
  • Autorisations accordées : lecture, liste et traitement

Identité fédérée

Suivez les instructions pour vous authentifier avec une identité fédérée. En plus d'accorder à l'application l'accès à votre conteneur Azure Storage, vous devez également lui accorder l'accès à la file d'attente Azure. Pour ce faire, ajoutez le rôle Processeur de messages de données de la file d'attente de stockage à l'application pour la file d'attente Azure.

Créer un job de transfert avec un flux d'événements

Une fois votre file d'attente Azure et vos notifications d'événements configurées, créez votre job Storage Transfer Service avec un flux d'événements.

Une fois le job de transfert créé, il commence à s'exécuter et un écouteur d'événements attend les notifications dans la file d'attente Azure. La page d'informations sur la tâche affiche une opération par heure et inclut des informations sur les données transférées pour chaque tâche.

Console Google Cloud

  1. Accédez à la page Créer un job de transfert dans la console Google Cloud .

    Accéder à Créer une tâche de transfert

  2. Pour Type de source, sélectionnez Azure Blob Storage ou Data Lake Storage Gen2.

  3. Pour Type de destination, sélectionnez Google Cloud Storage.

  4. Dans le champ Mode de planification, sélectionnez Piloté par les événements.

  5. Dans le champ Nom du flux d'événements, saisissez l'adresse de votre file d'attente Azure.

  6. Suivez les étapes restantes comme d'habitude pour créer un job de transfert, y compris les détails de la source et de la destination, et l'authentification.

    Vous pouvez également saisir une heure de début et de fin pour le transfert. Si vous ne spécifiez pas d'heure, le transfert commencera immédiatement et s'exécutera jusqu'à ce qu'il soit arrêté manuellement.

Google Cloud CLI

Pour créer un job de transfert basé sur des événements à l'aide de gcloud CLI, utilisez la commande gcloud transfer jobs create avec l'option --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

Remplacez les espaces réservés par vos valeurs réelles :

  • AZURE_STORAGE_ACCOUNT_NAME et AZURE_CONTAINER_NAME : nom de votre compte et de votre conteneur Azure Blob Storage.
  • DESTINATION_BUCKET : votre bucket Cloud Storage de destination.
  • SOURCE_CREDS_FILE : chemin d'accès relatif à un fichier local sur votre ordinateur contenant votre jeton SAS ou votre configuration d'identité fédérée.
  • AZURE_QUEUE_NAME : nom de votre file d'attente Azure.
  • EVENT_STREAM_STARTS : date et heure de début de l'écoute des événements au format %Y-%m-%dT%H:%M:%S%z (par exemple, 2020-04-12T06:42:12+04:00). Si elle n'est pas définie, le job commence à s'exécuter et à écouter les événements une fois la commande de création de job envoyée.
  • EVENT_STREAM_EXPIRES : moment où arrêter d'écouter les événements. Si elle n'est pas définie, le job se poursuit jusqu'à ce qu'il soit arrêté manuellement.

Pour obtenir la liste complète des champs compatibles, consultez la documentation de référence gcloud transfer jobs create.

API REST

Définissez une tâche de transfert axée sur les événements à l'aide du 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"
}

Les champs de date de début et d'expiration sont facultatifs :

  • event_stream_start_time : heure à partir de laquelle écouter les événements au format YYYY-MM-DDTHH:MM:SSZ. Si ce n'est pas le cas, l'écouteur démarre immédiatement.
  • event_stream_expiration_time : heure d'expiration de l'écouteur de flux d'événements au format YYYY-MM-DDTHH:MM:SSZ. Si aucune valeur n'est spécifiée, l'écouteur continue jusqu'à ce que le job de transfert soit désactivé ou supprimé.