Esegui le 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 procedere al deployment nell'ambienteGoogle Cloud .
L'emulatore di Functions 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 in locale con l'emulatore di Functions, utilizza il comando gcloud functions:
Node.js
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=nodejs22
Python
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=python314
Go
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=ruby34
Sostituisci:
- LOCAL_DEPLOYMENT_NAME: il nome con cui esegui il deployment locale della funzione.
- ENTRY_POINT: l'entry point della funzione.
Puoi configurare ulteriormente il comando di deployment con i seguenti flag facoltativi:
| Flag | Descrizione |
|---|---|
--port |
La porta su cui ascoltare le richieste (valore predefinito: 8080). |
--builder |
Il nome del builder di buildpack da utilizzare. |
Il valore predefinito di --builder è il builder App Engine per il linguaggio della tua funzione. Ad esempio, il valore predefinito per Python è gcr.io/serverless-runtimes/google-22-full/builder/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 questo comando:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME
Sostituisci LOCAL_DEPLOYMENT_NAME con il nome che vuoi utilizzare per eseguire il deployment locale della funzione.
Per includere dati nella chiamata della funzione locale, scegli la scheda che corrisponde al tipo di funzione:
Funzione HTTP
Chiama la tua funzione HTTP locale come segue:
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: l'entry point 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 di 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: l'entry point della funzione.
- CLOUD_EVENT_JSON: una stringa con codifica JSON in modalità contenuti strutturati che descrive l'evento di trigger. Per maggiori 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}"
}'
Per saperne di più su come viene definito il formato JSON per CloudEvents, consulta le specifiche CloudEvent.
Elimina il deployment 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 per eseguire il deployment locale della funzione.
Questo comando annulla il deployment della funzione, ma non elimina il codice della funzione.
Passaggi successivi
- Scopri come eseguire il deployment di una funzione Cloud Run su Google Cloud.