Deployment dal computer locale

Questa pagina mostra come eseguire il deployment di una funzione Cloud Functions dalla tua macchina locale utilizzando l'interfaccia a riga di comando di Google Cloud. Quando utilizzi lo strumento a riga di comando, Cloud Functions pacchettizza e carica automaticamente i contenuti della directory della funzione in un bucket Cloud Storage ed esclude automaticamente i file non necessari tramite il file .gcloudignore.

In alternativa, puoi utilizzare l'interfaccia di Cloud Functions in Cloud Console per caricare un file ZIP creato da te.

Per un esempio eseguibile completo che include codice di esempio scaricabile, consulta la guida rapida dell'utilizzo dell'interfaccia a riga di comando di Google Cloud.

Esegui il deployment utilizzando l'interfaccia a riga di comando gcloud

Utilizzando l'interfaccia a riga di comando di Google Cloud, esegui il deployment della tua funzione dalla directory contenente il tuo codice funzione con il comando gcloud functions deploy:

gcloud functions deploy NAME --entry-point ENTRY-POINT --runtime RUNTIME TRIGGER [FLAGS...]

Scopri gli argomenti in questo comando, tenendo presente la terminologia descritta in Concetti di base:

Argomento Descrizione
NAME Il nome registrato della funzione Cloud Functions di cui esegui il deployment. L'elemento NAME può contenere solo lettere, numeri, trattini bassi e trattini. NAME può essere il nome di una funzione nel codice sorgente o può essere una stringa personalizzata (ad esempio, my-http-function). Se utilizzi una stringa personalizzata, devi usare anche il flag --entry-point per specificare una funzione contenuta nel codice, per indicare al comando deploy quale funzione eseguire.
--entry-point ENTRY-POINT Il nome di una funzione o classe nel codice sorgente. Questo flag ha due utilizzi principali:
  • Puoi utilizzarlo al posto di NAME quando le funzioni nel tuo codice sorgente non soddisfano i requisiti di denominazione per Cloud Functions. Ad esempio, se specifichi un nome di classe completo (FQN) per Java che contiene punti (non consentito in NAME), devi usare questo flag.
  • Se vuoi semplicemente rendere NAME diverso dal nome della funzione eseguita. Se non usi questo flag, significa che NAME deve specificare la funzione nel codice sorgente da eseguire durante il deployment. Il nome registrato avrà quindi lo stesso nome della funzione.
--runtime RUNTIME Il nome del runtime che stai utilizzando. Per un elenco completo, consulta la documentazione di gcloud. Tieni presente che devi includere questo flag la prima volta che esegui il deployment di una funzione, ma puoi ometterla nei deployment successivi.
TRIGGER Il tipo di attivatore per questa funzione (vedi Eventi e trigger). Le regole per specificare gli attivatori quando esegui il deployment di una funzione sono le seguenti:
  • Se non specifichi un attivatore quando esegui il deployment di un aggiornamento a una funzione esistente, manterrà l'attivatore attuale.
  • Quando esegui il deployment di una nuova funzione, devi specificare uno tra --trigger-http, --trigger-topic o --trigger-bucket oppure specificare sia --trigger-event che --trigger-resource. Utilizza il flag --trigger-http per eseguire il deployment di funzioni HTTP. Utilizza gli altri flag per eseguire il deployment di funzioni basate su eventi.
FLAGS... (Facoltativo) Altri flag che puoi specificare durante il deployment, ad esempio --stage-bucket o --source. Per un riferimento completo, consulta la documentazione di gcloud functions deploy.

Ogni runtime ha requisiti di strutturazione dei file specifici per consentire a Cloud Functions di trovare la definizione della tua funzione.

Esempio di funzione HTTP

Esistono tre tipi di funzioni di Cloud Functions: funzioni HTTP, funzioni in background e funzioni CloudEvent. Per un esempio che mostra come eseguire il deployment di una funzione basata su eventi, vedi Esempio di funzione basata su eventi.

Esempio Java

L'esempio seguente esegue il deployment di una funzione HTTP scritta in Java e le assegna un trigger, utilizzando il flag --trigger-http:

gcloud functions deploy my-java-function --entry-point com.example.MyFunction --runtime java11 --trigger-http --allow-unauthenticated

Vedi gli argomenti di questo comando:

Argomento Descrizione
my-java-function Il nome registrato della Funzione Cloud di cui esegui il deployment, in questo caso my-java-function. Questo è un nome personalizzato da te fornito. Può contenere solo lettere, numeri, trattini bassi e trattini.
--entry-point Il nome completo di una classe Java nel tuo codice sorgente, in questo esempio, com.example.MyFunction.
--runtime java11 Il runtime per questa funzione, in questo caso java11.
--trigger-http Il tipo di attivatore per questa funzione, in questo caso una richiesta HTTP (webhook).
--allow-unauthenticated Specifica che la funzione non richiede l'autenticazione da richiamare. Per impostazione predefinita, le funzioni HTTP richiedono l'autenticazione. Se non includi questo flag la prima volta che esegui il deployment di una funzione HTTP, ti viene chiesto di consentire le chiamate non autenticate. Non ti verranno richieste le chiamate successive.

Esempio Python

La sintassi è la stessa quando utilizzi il flag --entry-point per eseguire il deployment di una funzione HTTP non Java. In questo esempio, il nome registrato è my-python-function e la funzione è helloworld:

gcloud functions deploy my-python-function --entry-point helloworld --runtime python37 --trigger-http --allow-unauthenticated

Se esegui lo stesso comando ma senza il flag entry-point, il campo NAME (nome registrato) deve essere una funzione nel codice sorgente (in questo esempio, helloworld):

gcloud functions deploy helloworld --runtime python37 --trigger-http --allow-unauthenticated

Esempio di funzione basata su eventi

L'esempio seguente esegue il deployment di una funzione basata su eventi scritta in Node.js che verrà attivata da Cloud Storage:

gcloud functions deploy helloGCS --runtime nodejs16 --trigger-resource TRIGGER_BUCKET_NAME --trigger-event google.storage.object.finalize

Vedi gli argomenti di questo comando:

Argomento Descrizione
helloGCS Il nome registrato della funzione Cloud Functions di cui stai eseguendo il deployment, in questo caso helloGCS. Poiché il comando non utilizza il flag --entry-point, deve essere il nome della funzione nel codice sorgente da eseguire durante il deployment.
--runtime nodejs16 Il runtime per questa funzione, in questo caso nodejs16.
--trigger-resource La risorsa trigger per questa funzione. La risorsa trigger specifica la risorsa per cui viene osservato l'evento trigger. In questo caso, la risorsa è il nome (TRIGGER_BUCKET_NAME) del bucket Cloud Storage che attiva la funzione.
--trigger-event L'evento di attivazione per questa funzione, che specifica quale azione deve attivare la funzione. In questo caso, l'evento è google.storage.object.finalize.

Utilizzare i flag --trigger-resource MY_RESOURCE e --trigger-event MY_EVENT è il modo più esplicito per specificare un attivatore per una funzione basata su eventi. Tuttavia, gcloud fornisce scorciatoie per Pub/Sub e Cloud Storage:

  • Quando esegui il deployment di funzioni a cui sono assegnati trigger Pub/Sub, puoi utilizzare il flag --trigger-topic MY_TOPIC. Questo flag è un'abbreviazione di --trigger-resource MY_TOPIC --trigger-event google.pubsub.topic.publish.

  • Quando esegui il deployment di funzioni a cui sono assegnati trigger di Cloud Storage, puoi utilizzare il flag --trigger-bucket MY_STORAGE_BUCKET per attivare l'esecuzione della funzione ogni volta che i file nel bucket specificato cambiano.

Passaggi successivi