arrow_back

Utiliser Cloud Run Functions pour charger des données dans BigQuery

Accédez à plus de 700 ateliers et cours

Utiliser Cloud Run Functions pour charger des données dans BigQuery

Atelier 45 minutes universal_currency_alt 5 crédits show_chart Débutant
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Une fonction Cloud Run est une portion de code qui s'exécute en réponse à un événement, tel qu'une requête HTTP, un message issu d'un service de messagerie instantanée ou une importation de fichier. Les événements cloud sont des choses qui se produisent dans votre environnement cloud. Il peut s'agir de modifications apportées aux données d'une base de données, de l'ajout de fichiers à un système de stockage ou de la création d'une instance de machine virtuelle.

Dans la mesure où les fonctions Cloud Run sont basées sur des événements, elles ne s'exécutent que lorsqu'il se passe quelque chose. Elles sont particulièrement utiles pour les tâches qui doivent être effectuées rapidement ou qui n'ont pas besoin d'être exécutées en permanence.

Dans cet atelier pratique, vous allez apprendre à créer, déployer et tester une fonction Cloud Run pour charger une table BigQuery à l'aide de Google Cloud SDK.

Objectifs de l'atelier

  • Créer une fonction Cloud Run
  • Déployer et tester la fonction Cloud Run
  • Consulter les données dans BigQuery et les journaux de la fonction Cloud Run

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google Cloud
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais sans frais.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour afficher un menu contenant la liste des produits et services Google Cloud, cliquez sur le menu de navigation en haut à gauche, ou saisissez le nom du service ou du produit dans le champ Recherche. Icône du menu de navigation

Activer Google Cloud Shell

Google Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, accédez au guide de présentation de la gcloud CLI.

Tâche 1 : Activer les API

Tout d'abord, avant de créer les fonctions Cloud Run, vous allez activer les API appropriées.

  1. Dans Cloud Shell, exécutez la commande suivante pour définir la variable d'ID de projet :
export PROJECT_ID=$(gcloud config get-value project)
  1. Exécutez les commandes suivantes pour définir la variable Region :
export REGION={{{project_0.default_region | "REGION"}}} gcloud config set compute/region $REGION
  1. Exécutez les commandes suivantes pour définir les variables de configuration :
gcloud config set run/region $REGION gcloud config set run/platform managed gcloud config set eventarc/location $REGION
  1. Exécutez les commandes suivantes pour activer tous les services nécessaires :
gcloud services enable \ artifactregistry.googleapis.com \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ eventarc.googleapis.com \ run.googleapis.com \ logging.googleapis.com \ pubsub.googleapis.com Remarque : Pour Eventarc, la propagation de toutes les autorisations à l'agent de service peut prendre quelques minutes.

Tâche 2 : Définir les autorisations requises

Vous allez maintenant permettre au compte de service Compute Engine par défaut de recevoir des événements Eventarc et accorder à l'agent de service Cloud Storage l'autorisation de publier des messages dans des sujets Pub/Sub, ce qui active les workflows basés sur des événements et les actions déclenchées par le stockage.

  1. Dans Cloud Shell, exécutez la commande suivante pour définir la variable PROJECT_NUMBER :
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
  1. Exécutez la commande suivante pour accorder au compte de service Compute Engine par défaut de votre projet les autorisations nécessaires pour recevoir des événements transmis par Eventarc :
gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/eventarc.eventReceiver"
  1. Exécutez les commandes suivantes pour récupérer l'agent de service Cloud Storage de votre projet et lui accorder l'autorisation de publier des messages dans des sujets Pub/Sub :
SERVICE_ACCOUNT="$(gcloud storage service-agent --project=$PROJECT_ID)" gcloud projects add-iam-policy-binding $PROJECT_ID \ --member="serviceAccount:${SERVICE_ACCOUNT}" \ --role='roles/pubsub.publisher'

Tâche 3 : Créer la fonction

À présent, vous allez créer une fonction simple nommée loadBigQueryFromAvro. Cette fonction lira un fichier Avro importé dans Cloud Storage, puis créera et chargera une table dans BigQuery.

  1. Dans Cloud Shell, exécutez la commande suivante pour créer et ouvrir un fichier nommé index.js :
nano index.js
  1. Copiez le code suivant de la fonction Cloud dans le fichier index.js :
/** * index.js Cloud Function - Avro on GCS to BQ */ const {Storage} = require('@google-cloud/storage'); const {BigQuery} = require('@google-cloud/bigquery'); const storage = new Storage(); const bigquery = new BigQuery(); exports.loadBigQueryFromAvro = async (event, context) => { try { // Check for valid event data and extract bucket name if (!event || !event.bucket) { throw new Error('Invalid event data. Missing bucket information.'); } const bucketName = event.bucket; const fileName = event.name; // BigQuery configuration const datasetId = 'loadavro'; const tableId = fileName.replace('.avro', ''); const options = { sourceFormat: 'AVRO', autodetect: true, createDisposition: 'CREATE_IF_NEEDED', writeDisposition: 'WRITE_TRUNCATE', }; // Load job configuration const loadJob = bigquery .dataset(datasetId) .table(tableId) .load(storage.bucket(bucketName).file(fileName), options); await loadJob; console.log(`Job ${loadJob.id} completed. Created table ${tableId}.`); } catch (error) { console.error('Error loading data into BigQuery:', error); throw error; } };
  1. Ouvrez nano et appuyez sur les touches Ctrl+x, sur la touche Y, puis sur Entrée pour enregistrer le fichier.
Créer une fonction

Tâche 4 : Créer un bucket Cloud Storage et un ensemble de données BigQuery

Vous allez configurer l'infrastructure d'arrière-plan où stocker les éléments utilisés pour appeler la fonction Cloud Run (un bucket Cloud Storage), puis vous définirez le stockage des résultats dans BigQuery une fois l'opération terminée.

  1. Dans Cloud Shell, exécutez la commande suivante pour créer un bucket Cloud Storage qui servira d'emplacement de préproduction :
gcloud storage buckets create gs://$PROJECT_ID --location=$REGION
  1. Exécutez la commande suivante pour créer un ensemble de données BQ dans lequel stocker les données :
bq mk -d loadavro Créer un bucket Cloud Storage et un ensemble de données BigQuery

Tâche 5 : Déployer la fonction

Vous allez maintenant déployer la nouvelle fonction Cloud Run et la déclencher pour charger les données dans BigQuery.

  1. Dans Cloud Shell, exécutez la commande suivante pour installer les deux bibliothèques JavaScript qui permettent de lire les données de Cloud Storage et de stocker les résultats dans BigQuery :
npm install @google-cloud/storage @google-cloud/bigquery
  1. Exécutez la commande suivante pour déployer la fonction :
gcloud functions deploy loadBigQueryFromAvro \ --gen2 \ --runtime nodejs20 \ --source . \ --region $REGION \ --trigger-resource gs://$PROJECT_ID \ --trigger-event google.storage.object.finalize \ --memory=512Mi \ --timeout=540s \ --service-account=$PROJECT_NUMBER-compute@developer.gserviceaccount.com Remarque : Si vous recevez un message d'erreur concernant la propagation à l'agent de service Eventarc, attendez quelques minutes, puis réexécutez la commande.
  1. Exécutez la commande suivante pour vérifier que le déclencheur a bien été créé. Le résultat doit ressembler à ce qui suit :
gcloud eventarc triggers list --location=$REGION NAME: loadbigqueryfromavro-177311 TYPE: google.cloud.storage.object.v1.finalized DESTINATION: Cloud Functions: loadBigQueryFromAvro ACTIVE: Yes LOCATION: europe-west1
  1. Exécutez la commande suivante pour télécharger le fichier Avro qui sera traité par la fonction Cloud Run pour être stocké dans BigQuery :
wget https://storage.googleapis.com/cloud-training/dataengineering/lab_assets/idegc/campaigns.avro
  1. Exécutez la commande suivante pour déplacer le fichier Avro dans le bucket Cloud Storage de préproduction créé précédemment. Cette action déclenchera la fonction Cloud Run :
gcloud storage cp campaigns.avro gs://{{{project_0.project_id |PROJECT_ID}}} Déployer une fonction

Tâche 6 : Vérifier que les données ont bien été chargées dans BigQuery

Vous allez désormais vérifier que les données traitées par la fonction Cloud Run ont bien été chargées dans BigQuery en interrogeant la table loadavro.campaigns à l'aide de la commande bq.

  1. Dans Cloud Shell, exécutez la commande suivante pour afficher les données de la nouvelle table dans BigQuery à l'aide de la commande bq :
bq query \ --use_legacy_sql=false \ 'SELECT * FROM `loadavro.campaigns`;' Remarque : La fonction Cloud Run s'exécute généralement très rapidement, mais il est possible que la requête exécutée dans BigQuery ne renvoie aucun résultat. Si c'est le cas, patientez quelques instants et exécutez à nouveau la requête.

La requête devrait renvoyer un résultat semblable à ce qui suit :

Exemple de résultat :

+------------+--------+---------------------+--------+---------------------+----------+-----+ | created_at | period | campaign_name | amount | advertising_channel | bid_type | id | +------------+--------+---------------------+--------+---------------------+----------+-----+ | 2020-09-17 | 90 | NA - Video - Other | 41 | Video | CPC | 81 | | 2021-01-19 | 30 | NA - Video - Promo | 325 | Video | CPC | 137 | | 2021-06-28 | 30 | NA - Video - Promo | 78 | Video | CPC | 214 | | 2021-03-15 | 30 | EU - Search - Brand | 465 | Search | CPC | 170 | | 2022-01-01 | 30 | EU - Search - Brand | 83 | Search | CPC | 276 | | 2020-02-18 | 30 | EU - Search - Brand | 30 | Search | CPC | 25 | | 2021-06-08 | 30 | EU - Search - Brand | 172 | Search | CPC | 201 | | 2020-11-29 | 60 | EU - Search - Other | 83 | Search | CPC | 115 | | 2021-09-11 | 30 | EU - Search - Other | 86 | Search | CPC | 237 | | 2022-02-17 | 30 | EU - Search - Other | 64 | Search | CPC | 296 | +------------+--------+---------------------+--------+---------------------+----------+-----+

Tâche 7 : Afficher les journaux

Vous allez maintenant récupérer toutes les entrées de journal associées à votre service nommé "loadBigQueryFromAvro".

  1. Dans Cloud Shell, exécutez la commande suivante pour examiner les journaux de votre fonction Cloud Run :
gcloud logging read "resource.labels.service_name=loadBigQueryFromAvro"

Les messages figurant dans le journal devraient ressembler à ce qui suit :

resource: labels: configuration_name: loadbigqueryfromavro location: europe-west1 project_id: qwiklabs-gcp-04-16fde64676e4 revision_name: loadbigqueryfromavro-00001-wim service_name: loadbigqueryfromavro type: cloud_run_revision spanId: '5804952652695382607' textPayload: | Job undefined completed. Created table campaigns. timestamp: '2025-03-10T17:24:43.560594Z'

Félicitations !

À l'aide de Google Cloud SDK, vous avez créé, déployé et testé une fonction Cloud Run pour créer et charger une table BigQuery.

Copyright 2025 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.