Guida rapida: crea ed esegui il deployment di una funzione Cloud Functions HTTP con .NET

Crea e sottoponi a deployment una funzione Cloud Functions HTTP con .NET

Questa guida illustra il processo di scrittura di una Cloud Function utilizzando il linguaggio di runtime C. .NET. Esistono due tipi di funzioni Cloud Functions:

  • Una funzione attivata da HTTP, che puoi richiamare dalle richieste HTTP standard.
  • Una funzione basata su eventi, che utilizzi per gestire gli eventi dall'infrastruttura Cloud, come i messaggi su un argomento Cloud Pub/Sub, o le modifiche in un bucket Cloud Storage.

Struttura della guida

  1. Creazione di un progetto Google Cloud utilizzando gcloud CLI
  2. Creazione di una funzione
  3. Specificare le dipendenze
  4. Deployment della funzione
  5. Test della funzione di cui è stato eseguito il deployment
  6. Visualizzazione dei log
  7. Utilizzo del framework di Functions

Creazione di un progetto Google Cloud utilizzando gcloud CLI

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Cloud Functions and Cloud Build.

    Abilita le API

  5. Nella console di Google Cloud Console, nella pagina del selettore dei progetti, seleziona o crea un progetto Google Cloud.

    Vai al selettore progetti

  6. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  7. Abilita le API Cloud Functions and Cloud Build.

    Abilita le API

  8. Installa e inizializza l'interfaccia a riga di comando gcloud.
  9. Aggiorna e installa i componenti gcloud:
    gcloud components update
  10. Prepara l'ambiente di sviluppo.

    Vai alla guida alla configurazione di .NET

Creazione di una funzione

Questa sezione descrive come creare manualmente una funzione da zero. In alternativa, puoi utilizzare i modelli forniti dal pacchetto di modelli.

Per creare una funzione:

  1. Crea una directory sul sistema locale per il codice funzione:

    Windows

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

    Linux o Mac OS X

    mkdir ~/helloworld
    cd ~/helloworld
    
  2. Crea un file denominato Function.cs con il seguente contenuto:

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

    Questa funzione di esempio restituisce il saluto "Hello World!".

Specifica delle dipendenze

Il passaggio successivo consiste nel configurare le dipendenze. Esistono due diversi tipi di dipendenze che puoi configurare in C# Cloud Functions:

  • Rendi disponibile il framework di Functions. Questa è l'attività che state svolgendo in questa sezione.
  • Rendi disponibili altre librerie, sia in termini di file di progetto che all'interno del codice tramite inserimento di dipendenze. Per saperne di più, consulta Personalizzazione tramite i corsi di avvio di Functions.

Per rendere disponibile il framework di Functions, modifica la directory nella directory helloworld creata sopra:

     cd ~/helloworld

A questo punto, crea un file denominato HelloWorld.csproj con il seguente contenuto:

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

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

Deployment della funzione

Per il deployment della funzione con un trigger HTTP, esegui questo comando nella directory helloworld:

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

dove my-first-function è il nome registrato con cui la funzione viene identificata nella console Google Cloud e --entry-point specifica il nome completo della classe (FQN) della funzione.

Test della funzione di cui è stato eseguito il deployment

  1. Al termine del deployment della funzione, annota la proprietà httpsTrigger.url o cercala utilizzando il seguente comando:

    gcloud functions describe my-first-function
    

    Dovrebbe avere il seguente aspetto:

    https://GCP_REGION-PROJECT_ID.cloudfunctions.net/my-first-function
  2. Accedi all'URL dal browser. Dovresti vedere un messaggio di Hello World!.

Visualizzazione dei log

Utilizzo dello strumento a riga di comando

I log per Cloud Functions sono visualizzabili nell'interfaccia utente di Cloud Logging e tramite Google Cloud CLI.

Per visualizzare i log per la tua funzione con gcloud CLI, utilizza il comando logs read, seguito dal nome della funzione:

gcloud functions logs read my-first-function

L'output dovrebbe essere simile al seguente:

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

Utilizzo della dashboard di Logging

Puoi visualizzare i log per Cloud Functions anche dalla console Google Cloud.

Utilizzare il pacchetto del modello

Le sezioni precedenti spiegano come creare manualmente una funzione da zero. In futuro, probabilmente utilizzerai i modelli per creare nuove funzioni.

Per utilizzare i modelli per creare, creare e testare una funzione:

  1. Installa l'SDK.NET.

  2. Installa il pacchetto del modello:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Successivamente, crea una directory per il tuo progetto e utilizza dotnet new per creare una nuova funzione HTTP:

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    Vengono creati HelloFunctions.csproj e Function.cs nella directory corrente. Apri Function.cs per esaminare il codice e, se vuoi, fornire un messaggio personalizzato.

  4. Crea la tua funzione localmente come segue:

    dotnet run
    
  5. Una volta che il server è in esecuzione, vai a http://localhost:8080 per richiamare la funzione. Premi Ctrl-C nella console per arrestare il server.

    Viene visualizzato il messaggio "Framework delle funzioni Hello".

In alternativa, puoi inviare richieste a questa funzione utilizzando curl da un'altra finestra del terminale:

curl localhost:8080
# Output: Hello Functions Framework