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

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

  • Una funzione attivata da HTTP, richiamata dalle richieste HTTP standard.
  • Una funzione basata su eventi, che utilizzi per gestire gli eventi dal tuo Cloud dell'infrastruttura, ad esempio i messaggi su un argomento Pub/Sub o le modifiche nel bucket Cloud Storage.

Prima di iniziare

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  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. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  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 gcloud CLI.
  9. Aggiorna e installa i componenti di 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 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 seguenti:

    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 è impostare le dipendenze. Esistono due diversi tipi di che puoi configurare in Cloud Functions C#:

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

Per rendere disponibile il framework di Functions, cambia la directory in helloworld che hai creato sopra:

     cd ~/helloworld

Quindi crea un file denominato HelloWorld.csproj con i contenuti seguenti:

<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 eseguire il deployment della funzione con un trigger HTTP, esegui questo comando nel 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 tua funzione verrà identificato nella console Google Cloud e --entry-point specifica il nome completo della classe (FQN) della funzione.

Testa la funzione di cui è stato eseguito il deployment

  1. Al termine del deployment della funzione, prendi nota del httpsTrigger.url o trovarlo con il comando seguente:

    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 Cloud Functions sono visualizzabili utilizzando Google Cloud CLI e UI di Cloud Logging.

Utilizzare lo strumento a riga di comando

Per visualizzare i log per la tua funzione con gcloud CLI, utilizza il metodo Comando logs read seguito da il 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
...

Usa la dashboard di Logging

Puoi anche visualizzare i log per Cloud Functions dal Console Google Cloud.

Utilizzare il pacchetto di modelli

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

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

  1. Installa .NET SDK.

  2. Installa il pacchetto di modelli:

    dotnet new install Google.Cloud.Functions.Templates
    
  3. Quindi, crea una directory per il progetto e usa dotnet new per crearne uno nuovo Funzione HTTP:

    mkdir HelloFunctions
    cd HelloFunctions
    dotnet new gcf-http
    

    Vengono creati HelloFunctions.csproj e Function.cs nel . Apri Function.cs per esaminare il codice e fornire un prompt personalizzato messaggio, se lo desideri.

  4. Crea la tua funzione localmente come segue:

    dotnet run
    
  5. Quando il server è in esecuzione, vai a http://localhost:8080 per richiamare personalizzata. Premi Ctrl+C nella console per arrestare il server.

    Questa funzione visualizza il messaggio "Hello Functions Framework".

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

curl localhost:8080
# Output: Hello Functions Framework