GSP315

Introduction
Dans un atelier challenge, vous devez suivre un scénario et effectuer une série de tâches. Aucune instruction détaillée n'est fournie : vous devez utiliser les compétences acquises au cours des ateliers du cours correspondant pour déterminer comment procéder par vous-même. Vous saurez si vous avez exécuté correctement les différentes tâches grâce au score calculé automatiquement (affiché sur cette page).
Lorsque vous participez à un atelier challenge, vous n'étudiez pas de nouveaux concepts Google Cloud. Vous allez approfondir les compétences précédemment acquises. Par exemple, vous devrez modifier les valeurs par défaut ou encore examiner des messages d'erreur pour corriger vous-même les problèmes.
Pour atteindre le score de 100 %, vous devez mener à bien l'ensemble des tâches dans le délai imparti.
Cet atelier est recommandé aux participants inscrits au cours Configurer un environnement de développement d'applications sur Google Cloud et qui veulent obtenir le badge de compétence associé. Êtes-vous prêt pour le challenge ?
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de 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.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Scénario du challenge
Vous venez de prendre vos fonctions comme ingénieur cloud débutant chez Jooli Inc. Jusqu'à présent, vous avez aidé des équipes à créer et gérer des ressources Google Cloud.
Vous êtes censé disposer des compétences et des connaissances requises pour effectuer ces tâches. Ne vous attendez donc pas à recevoir des instructions détaillées.
Votre challenge
Il vous est demandé d'aider une équipe de développement récemment constituée pour le démarrage d'un nouveau projet portant sur le stockage et l'organisation de photographies, appelé Memories (Mémoires). Vous devez aider l'équipe Memories (Mémoires) concernant la configuration initiale de son environnement de développement d'application.
Vous recevez les tâches suivantes :
- Créer un bucket pour stocker les photographies
- Créer un sujet Pub/Sub qui sera utilisé par une fonction Cloud Run que vous allez créer
- Créer une fonction Cloud Run
- Supprimer l'accès de l'ingénieur cloud précédent du projet Memories (Mémoires)
Voici certaines normes de Jooli Inc. que vous devez respecter :
- Sauf instruction contraire, toutes les ressources doivent être créées dans la région et la zone .
- Utilisez les VPC du projet.
- Les noms suivent normalement le schéma équipe-ressource : par exemple, une instance peut être nommée kraken-webserver1.
- Allouez des tailles de ressources économiques. Les projets sont surveillés, et une utilisation excessive des ressources entraînera l'arrêt des projets (du vôtre, éventuellement). Soyez donc vigilant. Voici les indications fournies par l'équipe de surveillance : sauf instruction contraire, utilisez e2-micro pour les petites VM Linux, et e2-medium pour Windows ou d'autres applications, comme des nœuds Kubernetes.
Chaque tâche est décrite en détail ci-dessous. Bonne chance !
Tâche 1 : Créer un bucket
Vous devez créer un bucket appelé pour stocker les photographies.
Assurez-vous de créer la ressource dans la région et la zone .
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un bucket appelé
Tâche 2 : Créer un sujet Pub/Sub
Créez un sujet Pub/Sub appelé pour que la fonction Cloud Run envoie des messages.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un sujet Pub/Sub appelé
Tâche 3 : Créer la fonction Cloud Run "thumbnail" (vignette)
Créer la fonction
Créez une fonction Cloud Run qui permettra de générer une vignette à partir d'une image ajoutée au bucket .
Assurez-vous que la fonction Cloud Run utilise l'environnement Cloud Run Functions (de 2e génération).
Assurez-vous de créer la ressource dans la région et la zone .
- Créez une fonction Cloud Run (2e génération) nommée à l'aide de
Node.js 22
.
Remarque :
La fonction Cloud Run doit s'exécuter chaque fois qu'un objet est créé dans le bucket créé lors de la tâche 1.
Au cours du processus, la fonction Cloud Run peut demander l'autorisation d'activer des API ou d'accorder des rôles à des comptes de service.
Veuillez activer chaque API requise et attribuer les rôles comme demandé.
-
Assurez-vous d'avoir défini le point d'entrée (la fonction à exécuter) sur et le déclencheur sur Cloud Storage
.
-
Ajoutez le code suivant au fichier index.js
:
const functions = require('@google-cloud/functions-framework');
const { Storage } = require('@google-cloud/storage');
const { PubSub } = require('@google-cloud/pubsub');
const sharp = require('sharp');
functions.cloudEvent('{{{ project_0.startup_script.function }}}', async cloudEvent => {
const event = cloudEvent.data;
console.log(`Event: ${JSON.stringify(event)}`);
console.log(`Hello ${event.bucket}`);
const fileName = event.name;
const bucketName = event.bucket;
const size = "64x64";
const bucket = new Storage().bucket(bucketName);
const topicName = "{{{ project_0.startup_script.topic }}}";
const pubsub = new PubSub();
if (fileName.search("64x64_thumbnail") === -1) {
// doesn't have a thumbnail, get the filename extension
const filename_split = fileName.split('.');
const filename_ext = filename_split[filename_split.length - 1].toLowerCase();
const filename_without_ext = fileName.substring(0, fileName.length - filename_ext.length - 1); // fix sub string to remove the dot
if (filename_ext === 'png' || filename_ext === 'jpg' || filename_ext === 'jpeg') {
// only support png and jpg at this point
console.log(`Processing Original: gs://${bucketName}/${fileName}`);
const gcsObject = bucket.file(fileName);
const newFilename = `${filename_without_ext}_64x64_thumbnail.${filename_ext}`;
const gcsNewObject = bucket.file(newFilename);
try {
const [buffer] = await gcsObject.download();
const resizedBuffer = await sharp(buffer)
.resize(64, 64, {
fit: 'inside',
withoutEnlargement: true,
})
.toFormat(filename_ext)
.toBuffer();
await gcsNewObject.save(resizedBuffer, {
metadata: {
contentType: `image/${filename_ext}`,
},
});
console.log(`Success: ${fileName} → ${newFilename}`);
await pubsub
.topic(topicName)
.publishMessage({ data: Buffer.from(newFilename) });
console.log(`Message published to ${topicName}`);
} catch (err) {
console.error(`Error: ${err}`);
}
} else {
console.log(`gs://${bucketName}/${fileName} is not an image I can handle`);
}
} else {
console.log(`gs://${bucketName}/${fileName} already has a thumbnail`);
}
});
- Ajoutez le code suivant au fichier
package.json
:
{
"name": "thumbnails",
"version": "1.0.0",
"description": "Create Thumbnail of uploaded image",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0",
"@google-cloud/pubsub": "^2.0.0",
"@google-cloud/storage": "^6.11.0",
"sharp": "^0.32.1"
},
"devDependencies": {},
"engines": {
"node": ">=4.3.2"
}
}
Remarque : Si vous recevez une erreur "autorisation refusée" indiquant qu'il faudra peut-être plusieurs minutes pour que toutes les autorisations nécessaires soient propagées à l'agent de service, patientez quelques minutes et réessayez. Assurez-vous que les rôles appropriés (Agent de service Eventarc, Destinataire des événements Eventarc, Créateur de jetons de compte de service et Diffuseur Pub/Sub) sont attribués aux bons comptes de service.
Tester la fonction
- Importez une image PNG ou JPG de votre choix dans le bucket .
Remarque : Vous pouvez aussi importer cette image https://storage.googleapis.com/cloud-training/gsp315/map.jpg
sur votre machine.
Ensuite, importez-la dans le bucket.
Peu après, une vignette s'affiche (utilisez ACTUALISER sur la page d'informations du bucket).
Une fois le fichier image importé, vous pouvez cliquer sur le bouton ci-dessous pour vérifier votre progression. Vous n'avez pas besoin d'attendre que la vignette soit créée.
Facultatif : Si la fonction a bien été déployée et que vous ne voyez pas la vignette dans le bucket, vous pouvez vérifier que l'onglet Déclencheurs affiche les informations de déclencheur que vous avez fournies plus tôt pour la fonction. Ces informations n'ont peut-être pas été enregistrées correctement si vous avez rencontré des erreurs.
Si le déclencheur Cloud Storage ne s'affiche pas dans l'onglet Déclencheurs de la fonction, vous pouvez le recréer (voir la page de documentation intitulée Créer un déclencheur pour les services), puis importer à nouveau un fichier pour effectuer un nouveau test (actualisez la page après avoir ajouté le nouveau fichier).
Cliquez sur Vérifier ma progression pour valider l'objectif.
Vérifier la fonction Cloud Run
Tâche 4 : Supprimer l'accès de l'ingénieur cloud précédent
Vous verrez que deux utilisateurs sont définis dans le projet.
- L'un correspond à votre compte ( avec le rôle de propriétaire).
- L'autre correspond à l'ingénieur cloud précédent ( avec le rôle de lecteur).
- Supprimez l'accès de l'ingénieur cloud précédent du projet.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Supprimer l'accès de l'ingénieur cloud précédent
Félicitations !

Étapes suivantes et informations supplémentaires
Ce badge de compétence est associé aux parcours de formation Google Effectuer des tâches dans l'infrastructure de base de Google Cloud et Cloud Architect. Si vous avez déjà obtenu tous les badges de compétence de ce parcours de formation, explorez le catalogue Google Cloud Skills Boost pour vous inscrire à de nouveaux cours et obtenir d'autres badges.
Formations et certifications Google Cloud
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 8 mars 2025
Dernier test de l'atelier : 8 mars 2025
Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.