Eseguire funzioni utilizzando l'emulatore di funzioni

L'emulatore di funzioni dell'interfaccia a riga di comando di Google Cloud consente di gestire le istanze locali di Cloud Functions tramite il comando gcloud alpha features local. In questo modo puoi eseguire il deployment delle funzioni e testarle sul sistema locale prima di eseguirne il deployment nell'ambiente Google Cloud.

L'emulatore di funzioni utilizza i buildpack di Google Cloud per pacchettizzare il codice della funzione in immagini container eseguibili localmente. Poi esegui queste immagini localmente con Docker.

Prerequisiti per l'installazione

Prima di procedere, assicurati di aver installato quanto segue:

esegui il deployment della funzione in locale

Per eseguire il deployment della funzione localmente con l'emulatore di funzioni, utilizza il comando gcloud functions:

Node.js

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=nodejs20

Python

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=python312

Go

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=go121

Java

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=java17

C#

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=dotnet6

Ruby

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=ruby32

PHP

  gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \
    --entry-point=ENTRY_POINT \
    --runtime=php82

Sostituisci:

  • LOCAL_DEPLOYMENT_NAME: il nome con cui esegui il deployment locale della funzione.
  • ENTRY_POINT: il punto di accesso della funzione.

Puoi configurare ulteriormente il comando di deployment con i seguenti flag facoltativi:

Flag Descrizione
--port La porta su cui rimanere in ascolto delle richieste (valore predefinito: 8080).
--builder Il nome del generatore buildpack da utilizzare.

Il valore --builder è quello predefinito del builder di App Engine per la lingua della tua funzione. Ad esempio, il valore predefinito è gcr.io/gae-runtimes/buildpacks/google-gae-22/python/builder per Python.

La prima volta che utilizzi il comando gcloud alpha, il comando gcloud ti chiede di installare il set di comandi gcloud alpha.

Chiama la funzione locale

Per chiamare la funzione locale senza dati, utilizza il seguente comando:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

Sostituisci LOCAL_DEPLOYMENT_NAME con il nome in cui vuoi eseguire il deployment locale della funzione.

Per includere i dati nella chiamata alla funzione locale, scegli la scheda corrispondente al tipo di funzione:

Funzione HTTP

Richiama la funzione HTTP locale nel seguente modo:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --data='{"message": "MESSAGE"}'

Sostituisci:

  • LOCAL_DEPLOYMENT_NAME: il nome in cui eseguire il deployment locale della funzione.
  • ENTRY_POINT: il punto di accesso della funzione.
  • MESSAGE: una stringa di testo da trasmettere come corpo della richiesta HTTP.

Funzione CloudEvent

Per chiamare la funzione CloudEvent locale, devi fornire un oggetto JSON CloudEvent che descriva l'evento trigger:

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
    --cloud-event="CLOUD_EVENT_JSON"

Sostituisci:

  • LOCAL_DEPLOYMENT_NAME: il nome in cui eseguire il deployment locale della funzione.
  • ENTRY_POINT: il punto di accesso della funzione.
  • CLOUD_EVENT_JSON: una stringa con codifica JSON in modalità contenuti strutturati che descrive l'evento di attivazione. Per ulteriori dettagli ed esempi, consulta CloudEvents - Formato evento JSON.

Ecco un esempio di riga di comando:

gcloud alpha functions local call my-function --cloud-event='{
 "specversion" : "1.0",
  "type" : "com.github.pull.create",
  "source" : "https://github.com/cloudevents/spec/pull",
  "subject" : "123",
  "id" : "ce",
  "time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
  }'

Consulta le specifiche di CloudEvent per ulteriori informazioni su come viene definito il formato JSON per CloudEvents.

Elimina il deployment delle funzioni locali

Elimina il deployment della funzione locale con il seguente comando:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

Sostituisci LOCAL_DEPLOYMENT_NAME con il nome in cui eseguire il deployment della funzione localmente.

Questo comando annulla il deployment della funzione, ma non elimina il codice della funzione.

Passaggi successivi