Transferts basés sur des événements
Les transferts basés sur des événements dans le service de transfert de données BigQuery vous permettent de charger automatiquement des données dans BigQuery en réponse à des notifications d'événements. Vous pouvez utiliser cette approche pour une ingestion par lot incrémentielle et économique lorsque votre charge de travail peut tolérer un délai de quelques minutes entre les exécutions de transfert. Si vous avez besoin d'une disponibilité des données en temps réel avec une latence plus faible, utilisez l'API Storage Write pour diffuser des données directement dans BigQuery.
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 des événements avec les sources de données suivantes :
Limites
Les transferts basés sur des événements vers BigQuery sont soumis aux limitations suivantes :
- Une fois qu'un transfert basé sur des événements est déclenché, le service de transfert de données BigQuery attend jusqu'à 10 minutes avant de déclencher l'exécution du transfert suivant, qu'un événement se produise ou non pendant ce délai.
- 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é sur des événements.
Configurer un transfert Cloud Storage basé sur des événements
Les transferts basés sur des événements depuis Cloud Storage utilisent des notifications Pub/Sub pour savoir quand des objets ont été modifiés ou ajoutés dans le bucket source. Lorsque vous utilisez le mode de 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 des événements, vous devez effectuer les étapes suivantes :
Activez l'API Pub/Sub pour le projet qui reçoit les notifications.
Si vous êtes l'administrateur Cloud Storage (
roles/storage.admin) et l'administrateur Pub/Sub (roles/pubsub.admin), vous pouvez passer à la section Créer une configuration de transfert basée sur des événements.Si vous n'êtes pas l'administrateur Cloud Storage (
roles/storage.admin) et l'administrateur Pub/Sub (roles/pubsub.admin), demandez à votre administrateur de vous accorder les rôlesroles/storage.adminetroles/pubsub.admin, ou demandez-lui de configurer Pub/Sub et de configurer les autorisations de l'agent de service dans les sections suivantes, et d'utiliser l'abonnement Pub/Sub préconfiguré pour créer une configuration de transfert basée sur des événements.Autorisations détaillées requises pour configurer les notifications de configuration de transfert basé sur des é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.createetpubsub.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.getstorage.buckets.update
Les rôles IAM prédéfinis
pubsub.adminetstorage.admindisposent de toutes les autorisations requises pour configurer un transfert Cloud Storage en fonction des événements. Pour en savoir plus, consultez Contrôle des accès Pub/Sub.
Configurer des notifications Pub/Sub dans Cloud Storage
Assurez-vous d'avoir rempli les conditions préalables pour utiliser Pub/Sub avec Cloud Storage.
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 fichierTOPIC_NAME: nom du sujet Pub/Sub dans lequel vous souhaitez recevoir les événements de notification de fichier
Vous pouvez également ajouter une configuration de notification en utilisant d'autres méthodes que la gcloud CLI. Pour en savoir plus, consultez Appliquer une configuration de notification.
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
Créez un abonnement pull pour le sujet :
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME
Remplacez
SUBSCRIPTION_IDpar le nom ou l'ID de votre nouvel abonnement Pub/Sub de type extraction.Vous pouvez créer un abonnement pull à l'aide d'autres méthodes.
Configurer les autorisations de l'agent de service
Recherchez le nom de l'agent du service de transfert de données BigQuery pour votre projet :
Accédez à la page IAM et administration.
Cochez la case Inclure les attributions de rôles fournies par Google.
L'agent du service de transfert de données BigQuery est listé sous le nom
service-<project_number>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.comet dispose du rôle d'agent du service de transfert de données BigQuery (roles/bigquerydatatransfer.serviceAgent).
Pour en savoir plus sur les agents de service, consultez Agents de service.
Attribuez le rôle d'abonné Pub/Sub (
pubsub.subscriber) à l'agent du service de transfert de données BigQuery.console Cloud
Suivez les instructions de la section Contrôler l'accès via la console Google Cloud pour attribuer 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
gcloudSuivez les instructions de la section Définir une stratégie pour ajouter la liaison suivante :
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com" }
Remplacez
PROJECT_NUMBERpar 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 utilisateur.
Vérifiez que l'agent du service de transfert de données BigQuery dispose du rôle d'abonné Pub/Sub (
pubsub.subscriber).Dans la console Google Cloud , accédez à la page Pub/Sub.
Sélectionnez l'abonnement Pub/Sub que vous avez utilisé dans le transfert basé sur des événements.
Si le panneau d'informations est masqué, cliquez sur Afficher le panneau d'informations en haut à droite.
Dans l'onglet Autorisations, vérifiez que l'agent de service du service de transfert de données BigQuery dispose du rôle d'abonné Pub/Sub (
pubsub.subscriber).

Commandes résumées 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
Vous pouvez créer un transfert Cloud Storage basé sur des événements en créant un transfert Cloud Storage et en sélectionnant Basé sur des événements comme Type de programmation. En tant qu'administrateur Cloud Storage (roles/storage.admin) et administrateur Pub/Sub (roles/pubsub.admin), vous disposez des autorisations suffisantes pour que le service de transfert de données BigQuery configure automatiquement Cloud Storage pour l'envoi de 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 attribuer les rôles ou de configurer les notifications Pub/Sub dans Cloud Storage et les autorisations de l'agent de service avant de pouvoir créer le transfert basé sur des événements.