Transferts basés sur des événements

Vous pouvez utiliser le service de transfert de données BigQuery pour créer des transferts basés sur les événements qui chargent automatiquement les données en fonction des notifications d'événements. Nous vous recommandons d'utiliser des transferts basés sur des événements si vous avez besoin d'ingérer des données de manière incrémentielle afin d'optimiser la rentabilité.

Lorsque vous configurez des transferts basés sur des événements, un délai de quelques minutes peut être appliqué entre chaque transfert de données. Si vous avez besoin que les données soient disponibles immédiatement, nous vous recommandons d'utiliser l'API Storage Write, qui diffuse les données directement dans BigQuery avec la latence la plus faible possible. L'API Storage Write fournit des mises à jour en temps réel pour les cas d'utilisation les plus exigeants.

Lorsque vous choisissez l'une de ces deux options, demandez-vous si vous devez privilégier l'ingestion par lot incrémentielle rentable avec des transferts basés sur les événements, ou si vous préférez la flexibilité de l'API Storage Write.

Sources de données compatibles avec les transferts basés sur des événements

Le service de transfert de données BigQuery peut utiliser des transferts basés sur les événements avec les sources de données suivantes:

Limites

Les transferts basés sur les événements vers BigQuery sont soumis aux limites suivantes:

  • Une fois qu'un transfert basé sur les événements est déclenché, le service de transfert de données BigQuery attend jusqu'à 10 minutes avant de déclencher l'exécution suivante du transfert, que des événements arrivent pendant ce délai ou non.
  • Les transferts basés sur des événements ne sont pas compatibles avec les paramètres d'exécution pour l'URI source ou le chemin d'accès aux données.
  • Le même abonnement Pub/Sub ne peut pas être réutilisé par plusieurs configurations de transfert basées sur les événements.

Configurer un transfert Cloud Storage basé sur les événements

Les transferts basés sur des événements à partir de Cloud Storage utilisent des notifications Pub/Sub pour savoir quand des objets du bucket source ont été modifiés ou ajoutés. Lorsque vous utilisez le mode transfert incrémentiel, la suppression d'un objet dans le bucket source ne supprime pas les données associées dans la table BigQuery de destination.

Avant de commencer

Avant de configurer un transfert Cloud Storage basé sur les événements, vous devez effectuer les étapes suivantes:

  1. Activez l'API Pub/Sub pour le projet qui reçoit les notifications.

    Activer l'API

  2. Si vous êtes administrateur Cloud Storage (roles/storage.admin) et administrateur Pub/Sub (roles/pubsub.admin), vous pouvez passer à la section Créer une configuration de transfert basée sur les événements.

  3. Si vous n'êtes pas l'administrateur Cloud Storage (roles/storage.admin) ni l'administrateur Pub/Sub (roles/pubsub.admin), demandez à votre administrateur de vous accorder les rôles roles/storage.admin et roles/pubsub.admin, ou de configurer Pub/Sub et configurer les autorisations de l'agent de service dans les sections suivantes, puis utilisez l'abonnement Pub/Sub préconfiguré pour créer une configuration de transfert basée sur les événements.

  4. Autorisations détaillées requises pour configurer les notifications de configuration de transfert basées sur les événements:

    • Si vous prévoyez de créer des sujets et des abonnements pour publier des notifications, vous devez disposer des autorisations pubsub.topics.create et pubsub.subscriptions.create.

    • Que vous prévoyiez d'utiliser des sujets et des abonnements nouveaux ou existants, vous devez disposer des autorisations suivantes. Si vous avez déjà créé des sujets et des abonnements dans Pub/Sub, vous disposez probablement déjà de ces autorisations.

    • Vous devez disposer des autorisations suivantes sur le bucket Cloud Storage pour lequel vous souhaitez configurer des notifications Pub/Sub.

      • storage.buckets.get
      • storage.buckets.update
    • Le rôle IAM prédéfini pubsub.admin et storage.admin dispose de toutes les autorisations requises pour configurer un transfert Cloud Storage en fonction des événements. Pour en savoir plus, consultez la page Contrôle des accès Pub/Sub.

Configurer les notifications Pub/Sub dans Cloud Storage

  1. Assurez-vous de remplir les conditions préalables pour utiliser Pub/Sub avec Cloud Storage.

  2. Appliquez une configuration de notification à votre bucket Cloud Storage:

    gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME --event-types=OBJECT_FINALIZE

    Remplacez les éléments suivants :

    • BUCKET_NAME: nom du bucket Cloud Storage pour lequel vous souhaitez déclencher des événements de notification de fichier
    • TOPIC_NAME: nom du sujet Pub/Sub pour lequel vous souhaitez recevoir les événements de notification de fichier

    Vous pouvez également ajouter une configuration de notification à l'aide d'autres méthodes que la gcloud CLI. Pour en savoir plus, consultez Appliquer une configuration de notification.

  3. Vérifiez que la notification Pub/Sub est correctement configurée pour Cloud Storage. Exécutez la commande gcloud storage buckets notifications list :

    gcloud storage buckets notifications list gs://BUCKET_NAME

    Si l'opération réussit, la réponse se présente comme suit:

    etag: '132'
    id: '132'
    kind: storage#notification
    payload_format: JSON_API_V1
    selfLink: https://www.googleapis.com/storage/v1/b/my-bucket/notificationConfigs/132
    topic: //pubsub.googleapis.com/projects/my-project/topics/my-bucket
  4. Créez un abonnement pull pour le sujet:

    gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME

    Remplacez SUBSCRIPTION_ID par le nom ou l'ID de votre nouvel abonnement pull Pub/Sub.

    Vous pouvez créer un abonnement pull à l'aide d'autres méthodes.

Configurer les autorisations de l'agent de service

  1. Recherchez le nom de l'agent du service de transfert de données BigQuery pour votre projet:

    1. Accédez à la page IAM et administration.

      Accéder à IAM et administration

    2. Cochez la case Inclure les attributions de rôles fournies par Google.

    3. L'agent du service de transfert de données BigQuery est listé avec le nom service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com et se voit attribuer le rôle d'agent du service de transfert de données BigQuery.

      Vérifiez si le compte de service dispose du rôle d&#39;agent de service.

    Pour en savoir plus sur les agents de service, consultez la page Agents de service.

  2. Attribuez le rôle pubsub.subscriber à l'agent du service de transfert de données BigQuery.

    Cloud Console

    Suivez les instructions de la section Contrôler l'accès via la console Google Cloud pour accorder le rôle Pub/Sub Subscriber à l'agent du service de transfert de données BigQuery. Le rôle peut être attribué au niveau du sujet, de l'abonnement ou du projet.

    CLI gcloud

    Suivez les instructions de la section Définir une règle pour ajouter la liaison suivante:

    {
      "role": "roles/pubsub.subscriber",
      "members": [
        "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com"
    }

    Remplacez PROJECT_NUMBER par l'ID du projet qui héberge les ressources de transfert créées et facturées.

    Attribution de l'utilisation des quotas:lorsque l'agent du service de transfert de données BigQuery accède à l'abonnement Pub/Sub, l'utilisation des quotas est facturée au projet de l'utilisateur.

  3. Vérifiez que l'agent du service de transfert de données BigQuery dispose du rôle pubsub.subscriber:

    1. Dans la console Google Cloud , accédez à la page Pub/Sub.

      Accéder à Pub/Sub

    2. Sélectionnez l'abonnement Pub/Sub que vous avez utilisé dans le transfert basé sur les événements.

    3. Si le panneau d'informations est masqué, cliquez sur Afficher le panneau d'informations en haut à droite.

    4. Dans l'onglet Autorisations, vérifiez que l'agent de service du service de transfert de données BigQuery dispose du rôle pubsub.subscriber.

    Vérifiez si l&#39;agent de service dispose de pubsub.subscriber sur l&#39;abonnement.

Commandes récapitulatives pour configurer les notifications et les autorisations

Les commandes Google Cloud CLI suivantes incluent toutes les commandes nécessaires pour configurer les notifications et les autorisations, comme indiqué dans les sections précédentes.

gcloud

PROJECT_ID=project_id
CONFIG_NAME=config_name
RESOURCE_NAME="bqdts-event-driven-${CONFIG_NAME}"
# Create a Pub/Sub topic.
gcloud pubsub topics create "${RESOURCE_NAME}" --project="${PROJECT_ID}"
# Create a Pub/Sub subscription.
gcloud pubsub subscriptions create "${RESOURCE_NAME}" --project="${PROJECT_ID}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}"
# Create a Pub/Sub notification.
gcloud storage buckets notifications create gs://"${RESOURCE_NAME}" --topic="projects/${PROJECT_ID}/topics/${RESOURCE_NAME}" --event-types=OBJECT_FINALIZE
# Grant roles/pubsub.subscriber permission to the DTS service agent.
PROJECT_NUMBER=$(gcloud projects describe "${PROJECT_ID}" --format='value(projectNumber)')
gcloud pubsub subscriptions add-iam-policy-binding "${RESOURCE_NAME}"  --project="${PROJECT_ID}"  --member=serviceAccount:service-"${PROJECT_NUMBER}"@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com  --role=roles/pubsub.subscriber

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet.
  • CONFIG_NAME: nom permettant d'identifier cette configuration de transfert.

Créer une configuration de transfert

Pour créer un transfert Cloud Storage déclenché par événement, créez un transfert Cloud Storage et sélectionnez Déclenché par événement comme Type de planification. En tant qu'administrateur Cloud Storage (roles/storage.admin) et administrateur Pub/Sub (roles/pubsub.admin), vous disposez d'autorisations suffisantes pour que le service de transfert de données BigQuery configure automatiquement Cloud Storage pour envoyer des notifications.

Si vous n'êtes pas l'administrateur Cloud Storage (roles/storage.admin) ni l'administrateur Pub/Sub (roles/pubsub.admin), vous devez demander à votre administrateur de vous accorder ces rôles ou de configurer les notifications Pub/Sub dans les configurations Cloud Storage et les configurations d'autorisation de l'agent de service requises avant de pouvoir créer le transfert basé sur les événements.