Esegui Functions utilizzando l'emulatore di Functions
L'emulatore di funzioni di Google Cloud CLI ti consente di gestire le istanze locali di Cloud Functions tramite il comando gcloud alphafunctionslocal. In questo modo puoi eseguire il deployment e testare le funzioni sul tuo sistema locale prima di eseguirne il deployment nell'ambiente Google Cloud.
Questa funzionalità è compatibile con le funzioni di 1ª generazione e 2ª generazione.
L'emulatore di Functions utilizza i buildpack di Google Cloud per pacchettizzare il codice della funzione in immagini container eseguibili localmente. Puoi quindi eseguire queste immagini in locale 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 tua 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 stai eseguendo il deployment della funzione in locale.
- 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 sulla quale rimanere in ascolto delle richieste (valore predefinito: 8080 ). |
--builder |
Il nome del generatore di buildpack da utilizzare. |
Il valore --builder
viene impostato in modo predefinito sul builder App Engine per il linguaggio della 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
, gcloud
ti chiederà 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 con cui vuoi eseguire il deployment della funzione localmente.
Per includere i dati nella chiamata alla funzione locale, scegli la scheda che corrisponde al tipo di funzione:
Funzione HTTP
Richiama la 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 della funzione in locale.
- ENTRY_POINT: il punto di ingresso 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 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 della funzione in locale.
- 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, consulta CloudEvents - Formato degli eventi 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 delle funzioni locali con il seguente comando:
gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME
Sostituisci LOCAL_DEPLOYMENT_NAME con il nome in base al quale eseguire il deployment della funzione localmente.
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 Functions su Google Cloud.