Créer et déployer une fonction Cloud HTTP avec .NET

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

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

Pour en savoir plus, consultez les sections Écrire des fonctions HTTP et Écrire des fonctions pilotées par des événements.

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, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging 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, Cloud Build, Artifact Registry, Cloud Run, and Cloud Logging APIs.

    Enable the APIs

  8. Téléchargez, installez et initialisez le SDK Google Cloud.
  9. Mettez à jour et installez les composants gcloud à l'aide de la commande suivante.
    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 une fonction .NET manuellement. Vous pouvez également utiliser les modèles du framework des fonctions pour créer votre fonction.

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 Function.cs dans le répertoire helloworld avec le contenu suivant :

    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!");
        }
    }

Spécifier des dépendances

Les fonctions Cloud Functions nécessitent un ensemble de bibliothèques appelées "framework des fonctions". Pour rendre le framework des fonctions disponible pour votre build, procédez comme suit :

  1. Remplacez le répertoire par le répertoire helloworld que vous venez de créer :

     cd ~/helloworld
    
  2. Créez un fichier HelloWorld.csproj dans le répertoire helloworld avec le contenu suivant :

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

Pour savoir comment rendre d'autres bibliothèques disponibles pour votre build, via des fichiers de projet ou dans le code via l'injection de dépendances, consultez la page Personnalisation via les classes de démarrage des fonctions.

Créer et tester votre fonction localement

  1. Créez et exécutez votre fonction localement à l'aide de la commande suivante :

    dotnet run
    
  2. Testez votre fonction en accédant à http://localhost:8080 dans un navigateur ou en exécutant curl localhost:8080 à partir d'une autre fenêtre. Si vous utilisez Cloud Shell, cliquez sur l'icône Bouton &quot;Aperçu sur le Web&quot; et sélectionnez Prévisualiser sur le port 8080 pour afficher le résultat de votre fonction.

    Pour en savoir plus, consultez la section Envoyer des requêtes aux fonctions locales.

Déployer la fonction

Pour déployer votre fonction, exécutez la commande suivante dans le répertoire helloworld:

  gcloud functions deploy csharp-http-function \
    --gen2 \
    --entry-point=HelloWorld.Function \
    --runtime=dotnet6 \
    --region=REGION \
    --source=. \
    --trigger-http \
    --allow-unauthenticated

Remplacez REGION par le nom de la région Google Cloud dans laquelle vous souhaitez déployer votre fonction (par exemple, us-west1).

csharp-http-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).

L'option facultative --allow-unauthenticated vous permet d'accéder à votre fonction sans authentification.

Tester la fonction déployée

  1. Une fois la fonction déployée, notez la propriété uri à partir du résultat de la commande gcloud functions deploy ou récupérez-la à l'aide de la commande suivante:

    gcloud functions describe csharp-http-function \
      --region=REGION
    

    Remplacez REGION par le nom de la région Google Cloud dans laquelle vous avez déployé votre fonction (par exemple, us-west1).

  2. Testez votre fonction en accédant à http://localhost:8080 dans un navigateur ou en exécutant curl localhost:8080 à partir d'une autre fenêtre.

    Pour en savoir plus, consultez la section Envoyer des requêtes aux fonctions locales.

Afficher les journaux de votre fonction

Afficher les journaux à l'aide de l'outil de ligne de commande

Vous pouvez consulter les journaux de votre fonction à l'aide de l'interface utilisateur Cloud Logging ou de Google Cloud CLI.

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

  gcloud functions logs read \
    --gen2 \
    --limit=10 \
    --region=REGION \
    csharp-http-function

Remplacez REGION par le nom de la région Google Cloud dans laquelle vous avez déployé votre fonction (par exemple, us-west1).

Le résultat se présente comme suit :

LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.221
LOG: Request finished HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - - - 404 0 - 0.9393ms

LEVEL: I
NAME: my-first-function
TIME_UTC: 2023-06-01 12:47:42.220
LOG: Request starting HTTP/1.1 GET http://my-first-function-l5vqvupfzq-uw.a.run.app/favicon.ico - -

Afficher les journaux à l'aide du tableau de bord de journalisation

Pour afficher les journaux de votre fonction à l'aide du tableau de bord de journalisation, ouvrez la page Page de présentation de Cloud Functions et cliquez sur le nom de votre fonction dans la liste, puis sur l'onglet Journaux.

Créer une fonction avec le package de modèles

Ces instructions vous ont aidé à créer une fonction simple. En pratique, vous préférerez probablement utiliser les modèles du framework des fonctions pour créer vos fonctions.

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

  1. Installez le SDK .NET. Vous pouvez ignorer cette étape si vous utilisez Cloud Shell.

  2. Installez le package de modèles :

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Créez un répertoire pour votre projet et une fonction HTTP vide :

    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. Si vous le souhaitez, suivez les instructions précédentes pour créer et tester votre fonction en local.

  5. Exécutez la commande gcloud deploy suivante pour déployer votre fonction :

    gcloud functions deploy HelloFunctions.Function \
      --gen2 \
      --entry-point=HelloWorld.Function \
      --runtime=dotnet6 \
      --region=REGION \
      --source=. \
      --trigger-http \
      --allow-unauthenticated
    

    Remplacez REGION par le nom de la région Google Cloud dans laquelle vous avez déployé votre fonction (par exemple, us-west1).

Pour en savoir plus sur le framework des fonctions, consultez la documentation sur le framework des fonctions.