Esegui funzioni utilizzando l'emulatore di Functions

L'emulatore di Functions di Google Cloud CLI consente di gestire le istanze locali delle funzioni Cloud Run tramite il comando gcloud alpha functions local. In questo modo puoi eseguire il deployment e testare le funzioni sul sistema locale prima di eseguirne il deployment nell'ambiente Google Cloud .

Functions Emulator 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 Functions, utilizza il comando gcloud functions:

Node.js

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

Python

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

Vai

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

Java

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

Ruby

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

Sostituisci:

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

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

Flag Descrizione
--port La porta su cui ascoltare le richieste (impostazione predefinita: 8080).
--builder Il nome del generatore di buildpack da utilizzare.

Il valore di --builder è impostato per impostazione predefinita sul builder di App Engine per la lingua della tua funzione. Ad esempio, per impostazione predefinita è gcr.io/serverless-runtimes/google-22-full/builder/python per Python.

Quando utilizzi per la prima volta il comando gcloud alpha, il comando gcloud ti chiederà di installare il set di comandi gcloud alpha.

Chiama la tua funzione locale

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

gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME

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

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

Funzione HTTP

Chiama la tua funzione HTTP locale nel seguente modo:

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

Sostituisci:

  • LOCAL_DEPLOYMENT_NAME: il nome con cui eseguire il deployment locale della funzione.
  • ENTRY_POINT: il punto di ingresso della funzione.
  • MESSAGE: una stringa di testo da passare 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 con cui eseguire il deployment locale della funzione.
  • ENTRY_POINT: il punto di ingresso 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, vedi CloudEvents - JSON event format.

Ecco una riga di comando di esempio:

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}"
  }'

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

Eliminare l'implementazione della funzione locale

Elimina il deployment della funzione locale con questo comando:

gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME

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

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

Passaggi successivi