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.
-
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
-
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.
-
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.
-
Cliquez sur Suivant.
-
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.
-
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.
-
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.
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.
-
Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

-
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 :

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.
- 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)
- Exécutez les commandes suivantes pour définir la variable Region :
export REGION={{{project_0.default_region | "REGION"}}}
gcloud config set compute/region $REGION
- 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
- 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.
- 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)')
- 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"
- 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.
- Dans Cloud Shell, exécutez la commande suivante pour créer et ouvrir un fichier nommé
index.js
:
nano index.js
- 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;
}
};
- 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.
- 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
- 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.
- 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
- 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.
- 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
- 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
- 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
.
- 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".
- 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.