Go est un langage de programmation Open Source qui permet de créer facilement des logiciels simples, fiables et efficaces. Go est déjà installé lorsque vous utilisez Cloud Shell.
Cloud Run Functions est un environnement d'exécution sans serveur permettant de créer et de connecter des services cloud. Avec Cloud Run Functions, vous pouvez écrire des fonctions à objectif unique qui sont associées à des événements émis par votre infrastructure et vos services cloud. Une fonction est déclenchée quand un événement surveillé est lancé. Votre code s'exécute dans un environnement entièrement géré dans Cloud Run. Vous n'avez pas à vous préoccuper du provisionnement de vos infrastructures ni de la gestion des serveurs.
Vous pouvez écrire des fonctions Cloud Run à l'aide des langages de programmation compatibles. Vous avez la possibilité d'utiliser et d'exécuter votre fonction dans n'importe quel environnement d'exécution standard pour l'un des langages compatibles, ce qui facilite la portabilité et les tests en local.
Dans cet atelier, vous allez utiliser Go pour créer votre propre fonction Cloud Run qui, lorsqu'elle est appelée via HTTP, affiche une image du gaufre de Go, dessiné par Renee French.
Points abordés
Comment écrire une fonction Cloud Run HTTP en Go
Comment tester une fonction Cloud Run HTTP en Go
Comment exécuter un serveur HTTP Go local pour tester la fonction
Prérequis
Dans cet atelier, nous partons du principe que vous connaissez Go. Des explications sont fournies pour le code Go, mais elles peuvent ne pas suffire pour une personne qui ne connaît pas du tout ce langage.
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.
Démarrer l'atelier et se connecter à la console Google Cloud
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue 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 accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
Activer Cloud Shell
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. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.
Cliquez sur Activer Cloud Shell en haut de la console Google Cloud.
Passez les fenêtres suivantes :
Accédez à la fenêtre d'informations de Cloud Shell.
Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API Google Cloud.
Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET : . Le résultat contient une ligne qui déclare l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
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.
(Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
(Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Définir votre région et votre zone
Certaines ressources Compute Engine sont hébergées dans des régions et des zones. Une région est un emplacement géographique spécifique où vous pouvez exécuter vos ressources. Chaque région se compose d'une ou plusieurs zones.
Exécutez les commandes gcloud suivantes dans Cloud Shell pour définir la région et la zone par défaut de votre atelier :
gcloud config set compute/zone "{{{project_0.default_zone|ZONE}}}"
export ZONE=$(gcloud config get compute/zone)
gcloud config set compute/region "{{{project_0.default_region|REGION}}}"
export REGION=$(gcloud config get compute/region)
Vérifier que l'API Cloud Run Functions est activée
Dans Cloud Shell, exécutez la commande suivante pour activer l'API Cloud Run Functions. Cela vous permettra de déployer des fonctions Cloud Run plus tard dans l'atelier.
Utilisez unzip pour décompresser le code. Cette commande décompresse un répertoire (golang-samples-main) qui contient un exemple de code Go pour cloud.google.com :
unzip main.zip
Accédez au répertoire contenant le code de cet atelier :
cd golang-samples-main/functions/codelabs/gopher
Le répertoire gopher contient les répertoires et fichiers suivants :
$ tree
.
├── cmd
│ └── main.go # Binaire pour exécuter la fonction en local.
├── go.mod # Définition du module Go.
├── gophercolor.png # Le gaufre.
├── gopher.go # Fichier Go avec la fonction.
└── gopher_test.go # Fichier de test Go.
Tâche 1 : Présenter les fonctions Cloud Run HTTP en Go
Les fonctions Cloud Run HTTP en Go sont écrites en tant que fonctions http.HandlerFunc, qui est une interface définie dans la bibliothèque standard de Go. La fonction doit :
être exportée, ce qui signifie qu'elle peut être utilisée à partir d'un autre package (cela est indiqué par le fait que le nom commence par une majuscule) ;
correspondre au type http.HandlerFunc, ce qui signifie que la fonction est de la forme func(http.ResponseWriter, *http.Request). (Consultez le tutoriel d'écriture d'applications Web pour obtenir un guide détaillé sur l'écriture d'une application Web complète en Go.)
Voici un exemple de fonction Hello World :
package gopher
import (
"fmt"
"net/http"
)
// HelloWorld prints "Hello, world."
func HelloWorld(w http.ResponseWriter, r *http.Request) {
fmt.Fprintln(w, "Hello, world.")
}
Remarque : Vous pouvez ouvrir ce fichier dans l'éditeur Cloud Shell (cliquez sur **Ouvrir l'éditeur**), puis utiliser l'arborescence de fichiers sur la gauche pour ouvrir le fichier golang-samples-main/functions/codelabs/gopher/hello.go.
Déployer cette fonction en tant que fonction Cloud Run HTTP
Depuis le répertoire functions/codelabs/gopher, vous pouvez déployer le nom de la fonction à l'aide de la commande gcloud functions deploy :
Saisissez Y lorsque vous êtes invité à autoriser les appels non authentifiés de la nouvelle fonction.
L'opération prend une à deux minutes.
Résultat :
Deploying function (may take a while - up to 2 minutes)...done.
availableMemoryMb: 256
entryPoint: HelloWorld
httpsTrigger:
url: https://region-my-project.cloudfunctions.net/HelloWorld
...
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer une fonction Cloud Run HTTP Hello World
Remarque : Vous avez rencontré une erreur lors du déploiement ? Points à vérifier :
L'API Cloud Run Functions est-elle activée ? Si ce n'est pas le cas, un message d'erreur s'affiche avec un lien permettant d'activer l'API. Vous pouvez aussi l'activer à l'aide de la commande gcloud services enable cloudfunctions.googleapis.com.
Assurez-vous que votre répertoire de travail (celui à partir duquel vous exécutez gcloud) est celui qui contient le fichier .go. Vous pouvez changer de répertoire à l'aide de la commande cd golang-samples/functions/codelabs/gopher.
Le nom de la fonction est-il correct ? Il doit s'agir de HelloWorld, le nom de la fonction Go que vous essayez de déployer.
Si vous obtenez toujours une erreur de type "autorisation refusée", attendez quelques minutes, puis réessayez.
Si vous rencontrez une erreur **403 Forbidden** après le déploiement lorsque vous accédez à l'URL déployée, exécutez la commande suivante pour accorder un accès public à la fonction :
gcloud functions add-iam-policy-binding HelloWorld \
--member="allUsers" \
--role="roles/cloudfunctions.invoker" \
--region=
Une fois cette liaison de stratégie IAM appliquée, redéployez la fonction à l'aide de la commande de déploiement précédente.
Copiez l'URL httpsTrigger affichée dans le résultat. Votre écran devrait ressembler à ceci :
Vous avez écrit et déployé une fonction Cloud Run HTTP.
Tâche 2 : Écrire la fonction Cloud Run HTTP "Gopher"
Vous allez maintenant rendre la fonction Hello World un peu plus amusante en affichant une image du gaufre de Go pour chaque requête.
Le bloc suivant montre le code à utiliser pour cette tâche. Vous pouvez voir ce code dans Cloud Shell à l'emplacement golang-samples-master/functions/codelabs/gopher/gopher.go.
// Package gopher contains an HTTP function that shows a gopher.
package gopher
import (
"fmt"
"io"
"net/http"
"os"
)
// Gopher prints a gopher.
func Gopher(w http.ResponseWriter, r *http.Request) {
// Read the gopher image file.
f, err := os.Open("gophercolor.png")
if err != nil {
http.Error(w, fmt.Sprintf("Error reading file: %v", err), http.StatusInternalServerError)
return
}
defer f.Close()
// Write the gopher image to the response writer.
if _, err := io.Copy(w, f); err != nil {
http.Error(w, fmt.Sprintf("Error writing response: %v", err), http.StatusInternalServerError)
}
w.Header().Add("Content-Type", "image/png")
}
Le fichier commence par une déclaration de package et un commentaire. Tout le code Go est écrit dans un package, avec une déclaration comme celle-ci en haut.
Le bloc import contient une liste des autres packages dont ce fichier dépend. Ces packages sont référencés dans le reste du fichier à l'aide de leur nom. Par exemple, pour utiliser le type ResponseWriter du package http, vous devez écrire http.ResponseWriter.
Vient ensuite la déclaration de la fonction Gopher.
La fonction commence par lire le fichier gophercolor.png (voir l'exemple de code) à l'aide de la fonction os.Open.
Ensuite, elle vérifie si une erreur s'est produite lors de la lecture du fichier, ce qui peut arriver si le fichier est corrompu ou a été accidentellement oublié lors de l'importation.
Elle utilise io.Copy pour copier l'image du gaufre dans w, l'argument http.ResponseWriter. Tout ce qui est écrit dans w est envoyé dans la réponse HTTP.
Si aucune erreur ne s'est produite lors de l'écriture de la réponse, la fonction se termine normalement.
Déployez cette fonction comme vous l'avez fait pour la fonction "Hello, world" précédemment, en utilisant gcloud functions deploy et le nom de la fonction, Gopher :
Saisissez Y lorsque vous êtes invité à autoriser les appels non authentifiés de la nouvelle fonction.
Pour tester la fonction, accédez à l'URL de la fonction figurant dans le résultat de la dernière commande. Si le déploiement est réussi, vous voyez le gaufre de Go dans votre navigateur.
L'étape suivante consiste à ajouter un test pour vous assurer que votre fonction continue de fonctionner.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer la fonction Cloud Run HTTP "Gopher"
Tâche 3 : Écrire un test
Les packages testing et httptest de la bibliothèque standard servent à tester les fonctions Cloud Run HTTP en Go. Vous n'avez pas besoin d'exécuter un émulateur ou une autre simulation pour tester votre fonction, seulement du code Go classique.
Voici à quoi ressemble un test pour la fonction Gopher :
Les tests Go sont écrits de la même manière que les autres fichiers Go. Ils commencent par une déclaration de package et un ensemble d'importations.
La déclaration de test se présente sous la forme func MyTest(t *testing.T). Elle doit être exportée et accepter un argument de type *testing.T.
Le test crée des valeurs de requête et de réponse à l'aide du package httptest.
Il appelle la fonction Gopher.
Après avoir appelé la fonction Gopher, le test vérifie le code de réponse HTTP pour s'assurer qu'il n'y a pas eu d'erreurs.
Pour exécuter ces tests en local, utilisez la commande cd pour accéder au répertoire contenant les fichiers à tester :
cd ~/golang-samples-main/functions/codelabs/gopher
Dans le répertoire golang-samples-main/functions/codelabs/gopher, utilisez la commande go test :
go test -v
Résultat :
=== RUN TestGopher
--- PASS: TestGopher (0.00s)
PASS
ok github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher 0.037s
Remarque : Le test se solde par un échec ?
Vérifiez si le message d'erreur contient des informations utiles.
Vérifiez que vous vous trouvez bien dans le même répertoire que celui qui contient les fichiers gopher.go et gopher_test.go (golang-samples-main/functions/codelabs/gopher).
Ensuite, vous allez créer un binaire (package main, en Go) pour pouvoir exécuter votre fonction en local et l'essayer dans un navigateur.
Tâche 4 : Exécuter la fonction en local
Pour exécuter une fonction HTTP en local, créez un serveur HTTP et enregistrez votre fonction en tant que gestionnaire. (Consultez le tutoriel d'écriture d'applications Web pour obtenir un guide détaillé sur l'écriture d'une application Web complète en Go.)
Vous pouvez écrire un serveur HTTP pour votre fonction dans un sous-répertoire de votre fonction.
Conformément à une convention Go, vous nommez ce répertoire cmd et créez un fichier main.go à l'intérieur :
// The cmd command starts an HTTP server.
package main
import (
"fmt"
"log"
"net/http"
"github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher"
)
func main() {
http.HandleFunc("/", gopher.Gopher)
fmt.Println("Listening on localhost:8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
Ce fichier utilise package main comme package. Un package main sera créé sous forme de binaire que vous pourrez exécuter.
Ce fichier importe github.com/GoogleCloudPlatform/golang-samples/functions/codelabs/gopher, en fonction de la ligne module du fichier go.mod situé à côté de votre fichier de fonction. Lorsque vous écrivez vos propres fonctions, vous pouvez nommer le module comme vous le souhaitez.
La fonction func main() est le point d'entrée du binaire. Elle enregistre la fonction gopher.Gopher en tant que gestionnaire HTTP, puis démarre le serveur à l'aide de http.ListenAndServe.
Pour compiler et exécuter le binaire en local, exécutez les commandes suivantes :
go123MODULES=on # Turn on Go modules.
go build -o start ./cmd
./start
Résultat :
Listening on localhost:8080
Étant donné que la fonction charge l'image gophercolor.png à partir du répertoire de travail actuel, vous devez lancer votre binaire à partir du même répertoire que celui où se trouve le fichier gophercolor.png. Le flag -o start indique que le nom du binaire de sortie doit être start. ./cmd indique qu'il faut compiler le binaire situé dans le répertoire cmd.
Utilisez maintenant l'option d'aperçu sur le Web de Cloud Shell pour tester le serveur dans votre navigateur.
Cliquez sur le bouton "Aperçu sur le Web" .
Sélectionnez le port 8080 dans le menu qui s'affiche.
Cloud Shell utilise son service proxy pour ouvrir l'URL d'aperçu dans une nouvelle fenêtre de navigateur. L'aperçu Web limite l'accès via HTTPS à votre compte utilisateur uniquement.
Si tout fonctionne correctement, vous devriez voir le gaufre de Go.
Remarque : Vous ne voyez pas le gaufre ?
Vérifiez que vous vous trouvez bien dans le même répertoire que celui qui contient les fichiers gopher.go et gopher_test.go (golang-samples-main/functions/codelabs/gopher).
Le serveur a-t-il démarré ? Veillez à le compiler avec la commande go build -o start ./cmd, puis à le démarrer en exécutant ./start. Le message Listening on localhost:8080 doit s'afficher.
Avez-vous sélectionné le bon port lors de l'ouverture de l'aperçu sur le Web ? Assurez-vous d'utiliser le port 8080, celui sur lequel le serveur écoute.
Tâche 5 : Effectuer un nettoyage
Toutes les ressources que vous avez utilisées sont supprimées quand vous terminez cet atelier. Lorsque vous utilisez votre propre environnement, vous devez toujours supprimer les ressources superflues pour limiter vos dépenses et utiliser le cloud de manière raisonnée.
Arrêtez de servir votre URL avec CTRL+C.
Une fois que vous avez terminé de tester votre fonction Cloud Run, vous pouvez la supprimer en utilisant gcloud :
Vous pouvez également supprimer la fonction à partir de la console.
Félicitations !
Vous savez maintenant comment utiliser les fonctions Cloud Run en Go. Dans cet atelier, vous avez appris à écrire une fonction Cloud Run HTTP en Go, à la tester et à l'exécuter en local.
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 : 25 septembre 2025
Dernier test de l'atelier : 25 septembre 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.
Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
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.
En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.
Utilisez la navigation privée
Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
Cliquez sur Ouvrir la console en navigation privée
Connectez-vous à la console
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.
Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
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.
Dans cet atelier, vous allez créer une fonction Cloud Run HTTP en Go.
Durée :
0 min de configuration
·
Accessible pendant 45 min
·
Terminé après 30 min