Créer et déployer une fonction Cloud Run HTTP avec .NET (1re génération)

Ce guide vous accompagne tout au long du processus d'écriture d'une fonction Cloud Run à l'aide du langage C# de l'environnement d'exécution .NET. Il existe deux types de fonctions Cloud Run :

  • Les fonctions déclenchées par HTTP, que vous appelez à partir de requêtes HTTP standards.
  • Les fonctions déclenchées par des événements, qui vous permettent de gérer les événements depuis votre infrastructure cloud tels que les messages sur un sujet Pub/Sub ou les modifications apportées à un bucket Cloud Storage.

Avant de commencer

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the Cloud Functions and Cloud Build APIs.

    Enable the APIs

  8. Installez et initialisez la gcloud CLI.
  9. Mettez à jour et installez les composants gcloud :
    gcloud components update
  10. Préparez votre environnement de développement.

    Accéder au guide de configuration .NET

Créer une fonction

Cette section explique comment créer manuellement une fonction à partir de zéro. Vous pouvez également utiliser les modèles fournis par le package de modèles.

Pour créer une fonction, procédez comme suit :

  1. Créez un répertoire sur votre système local pour le code de fonction :

    Windows

    mkdir %HOMEPATH%\helloworld
    cd %HOMEPATH%\helloworld
    

    Linux ou Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    
  2. Créez un fichier nommé Function.cs avec le contenu ci-dessous :

    using Google.Cloud.Functions.Framework;
    using Microsoft.AspNetCore.Http;
    using System.Threading.Tasks;
    
    namespace HelloWorld;
    
    public class Function : IHttpFunction
    {
        public async Task HandleAsync(HttpContext context)
        {
            await context.Response.WriteAsync("Hello World!", context.RequestAborted);
        }
    }

    Cet exemple de fonction renvoie le message d'accueil "Hello World!".

Spécifier des dépendances

L'étape suivante consiste à configurer les dépendances. Vous pouvez configurer deux types de dépendances dans les fonctions Cloud Run C# :

  • Vous pouvez rendre le framework des fonctions disponible. C'est la tâche que vous allez effectuer dans cette section.
  • Vous pouvez rendre d'autres bibliothèques disponibles à la fois dans les fichiers de projet et au sein du code via l'injection de dépendances. Pour en savoir plus, consultez la section Customization through Functions Startup classes.

Pour rendre le framework des fonctions disponible, remplacez le répertoire par le répertoire helloworld que vous avez créé ci-dessus :

     cd ~/helloworld

Créez ensuite un fichier nommé HelloWorld.csproj avec le contenu ci-dessous :

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Google.Cloud.Functions.Hosting" Version="2.2.1" />
  </ItemGroup>
</Project>

Déployer la fonction

Pour déployer la fonction avec un déclencheur HTTP, exécutez la commande suivante dans le répertoire helloworld :

gcloud functions deploy --no-gen2 my-first-function --entry-point HelloWorld.Function --runtime dotnet8 --trigger-http --allow-unauthenticated

my-first-function est le nom enregistré par lequel votre fonction sera identifiée dans la console Google Cloud, et --entry-point spécifie le nom de classe complet de votre fonction (FQN).

Tester la fonction déployée

  1. Une fois le déploiement de la fonction terminé, notez la propriété httpsTrigger.url ou recherchez-la à l'aide de la commande suivante :

    gcloud functions describe my-first-function
    

    La fonction devrait ressembler à ceci :

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
  2. Accédez à cette URL dans votre navigateur. Le message suivant devrait s'afficher : Hello World!.

Afficher les journaux

Les journaux Cloud Run Functions sont visibles à l'aide de Google Cloud CLI et de l'interface utilisateur de Cloud Logging.

Utiliser l'outil de ligne de commande

Pour afficher les journaux de votre fonction à l'aide de gcloud CLI, exécutez la commande logs read suivie du nom de la fonction :

gcloud functions logs read my-first-function

Le résultat doit ressembler à ceci :

LEVEL  NAME               EXECUTION_ID  TIME_UTC                 LOG
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.791  Function execution started
D      my-first-function  k2bqgroszo4u  2020-07-24 18:18:01.958  Function execution took 168 ms, finished with status code: 200
...

Utiliser le tableau de bord Logging

Vous pouvez également consulter les journaux Cloud Run Functions depuis la console Google Cloud.

Utiliser le package de modèles

Les sections ci-dessus décrivent comment créer manuellement une fonction à partir de zéro. À l'avenir, vous exploiterez probablement les modèles pour créer des fonctions.

Pour créer, compiler et tester une fonction à l'aide des modèles, procédez comme suit :

  1. Installez le SDK .NET.

  2. Installez le package de modèles :

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Créez ensuite un répertoire pour votre projet, puis utilisez dotnet new pour créer une fonction HTTP :

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    Cette opération crée HelloFunctions.csproj et Function.cs dans le répertoire actuel. Ouvrez Function.cs pour examiner le code et saisissez un message personnalisé si vous le souhaitez.

  4. Créez votre fonction en local comme suit :

    dotnet run
    
  5. Une fois le serveur en cours d'exécution, accédez à http://localhost:8080 pour appeler la fonction. Appuyez sur les touches Ctrl+C dans la console pour arrêter le serveur.

    Cette fonction affiche le message "Hello Functions Framework".

Vous pouvez également envoyer des requêtes à cette fonction à l'aide de curl à partir d'une autre fenêtre de terminal :

curl localhost:8080
# Output: Hello Functions Framework