Crea ed esegui il deployment di una funzione Cloud Run HTTP con .NET (1ª generazione.)

Questa guida illustra la procedura per scrivere una funzione Cloud Run utilizzando il linguaggio di runtime .NET C#. Esistono due tipi di funzioni Cloud Run:

  • Una funzione attivata tramite HTTP, che viene richiamata da richieste HTTP standard.
  • Una funzione basata su eventi che utilizzi per gestire gli eventi della tua infrastruttura Cloud, ad esempio i messaggi in un argomento Pub/Sub o le modifiche in un bucket Cloud Storage.

Prima di iniziare

  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. Installa e inizializza la gcloud CLI.
  9. Aggiorna e installa i componenti gcloud:
    gcloud components update
  10. Prepara l'ambiente di sviluppo.

    Vai alla guida alla configurazione di .NET

Crea 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 della 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 i contenuti riportati di seguito:

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

    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 nelle funzioni Cloud Run in C#:

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

Per rendere disponibile il framework Functions, cambia directory nella directory helloworld che hai creato sopra:

     cd ~/helloworld

Quindi, crea un file denominato HelloWorld.csproj con i contenuti riportati di seguito:

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

esegui il deployment della funzione

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

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

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

Testa la funzione di cui hai 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 Hello World!.

Visualizza i log

I log per le funzioni Cloud Run sono visualizzabili utilizzando Google Cloud CLI e nell'interfaccia utente di Cloud Logging.

Utilizzare lo strumento a riga di comando

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

Utilizzare la dashboard di Log

Puoi anche visualizzare i log per le funzioni Cloud Run dalla console Google Cloud.

Utilizzare il pacchetto di modelli

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, compilare e testare una funzione:

  1. Installa l'SDK.NET.

  2. Installa il pacchetto del modello:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. A questo punto, crea una directory per il 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, fornisci un messaggio personalizzato.

  4. Compila la funzione localmente nel seguente modo:

    dotnet run
    
  5. Una volta avviato il server, vai a http://localhost:8080 per invocare la funzione. Premi Ctrl+C nella console per arrestare il server.

    Questa funzione mostra il messaggio "Hello Functions Framework".

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

curl localhost:8080
# Output: Hello Functions Framework