Esegui il deployment di una funzione Cloud Functions

Questa guida mostra come eseguire il deployment di una Cloud Function dal codice sorgente.

Il processo di deployment utilizza il codice sorgente e le impostazioni di configurazione e crea un'immagine eseguibile che Cloud Functions gestisce automaticamente per gestire le richieste alla tua funzione.

Nozioni di base sul deployment

Gli utenti che eseguono il deployment di funzioni Cloud Functions devono disporre del ruolo IAM Sviluppatore Cloud Functions o di un ruolo che includa le stesse autorizzazioni. Vedi anche Configurazione aggiuntiva per il deployment.

Seleziona una scheda per istruzioni su come eseguire il deployment di una funzione utilizzando gcloud CLI o la console Google Cloud.

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Utilizza il comando gcloud functions deploy per eseguire il deployment di una funzione:

    gcloud functions deploy YOUR_FUNCTION_NAME \
    [--gen2] \
    --region=YOUR_REGION \
    --runtime=YOUR_RUNTIME \
    --source=YOUR_SOURCE_LOCATION \
    --entry-point=YOUR_CODE_ENTRYPOINT \
    TRIGGER_FLAGS
    

    Il primo argomento, YOUR_FUNCTION_NAME, è un nome per la funzione di cui hai eseguito il deployment. Il nome della funzione deve iniziare con una lettera seguita da un massimo di 62 lettere, numeri, trattini o trattini bassi e deve terminare con una lettera o un numero.

    • Il flag --gen2 indica che vuoi eseguire il deployment in Cloud Functions (2nd gen). Questo flag è necessario per il deployment iniziale di una funzione di 2ª generazione. Vedi Confronto tra versioni di Cloud Functions per un confronto tra Cloud Functions (1ª generazione) e Cloud Functions (2nd gen).

    • Il flag --region specifica la regione in cui eseguire il deployment della funzione. Consulta Località per un elenco delle regioni supportate da Cloud Functions.

    • Il flag --runtime specifica il runtime del linguaggio utilizzato dalla funzione. Cloud Functions supporta diversi runtime. Per ulteriori informazioni, consulta Runtime.

    • Il flag --source specifica la posizione del codice sorgente della funzione. Per ulteriori dettagli, consulta le seguenti sezioni:

    • Il flag --entry-point specifica il punto di ingresso alla funzione nel codice sorgente. Questo è il codice che verrà eseguito all'esecuzione della funzione. Il valore di questo flag deve essere il nome di una funzione o un nome di classe completo presente nel codice sorgente. Per ulteriori informazioni, consulta Punto di ingresso della funzione.

    • Per specificare l'attivatore per la tua funzione, sono necessari flag aggiuntivi (rappresentati come TRIGGER_FLAGS sopra), a seconda dell'attivatore che vuoi utilizzare:

    Flag di trigger Descrizione trigger
    --trigger-http Attiva la funzione con una richiesta HTTP(S). Consulta Trigger HTTP per ulteriori informazioni.
    --trigger-topic=YOUR_PUBSUB_TOPIC Attiva la funzione quando un messaggio viene pubblicato nell'argomento Pub/Sub specificato. Per saperne di più, consulta Trigger Pub/Sub.
    --trigger-bucket=YOUR_STORAGE_BUCKET Attiva la funzione quando un oggetto viene creato o sovrascritto nel bucket Cloud Storage specificato. Per ulteriori informazioni, consulta Trigger di Cloud Storage.
    --trigger-event-filters=EVENTARC_EVENT_FILTERS (Solo 2ª generazione) Attiva la funzione con Eventarc quando si verifica un evento che corrisponde ai filtri specificati. Richiede la specifica del flag --gen2. Consulta i trigger Eventarc per ulteriori informazioni e opzioni aggiuntive.
    --trigger-event=EVENT_TYPE
    [--trigger-resource=RESOURCE]
    (Solo 1ª generazione) Attiva la funzione quando si verifica l'evento specificato. Per alcuni tipi di eventi è obbligatorio specificare una risorsa. Per saperne di più, consulta Trigger supportati in Cloud Functions (1ª generazione).

    Facoltativamente, puoi specificare opzioni aggiuntive di configurazione, networking e sicurezza quando esegui il deployment di una funzione.

    Per un riferimento completo sul comando di deployment e sui suoi flag, consulta la documentazione di gcloud functions deploy.

    Per alcuni comandi di deployment di esempio, vedi Esempi di riga di comando.

Console

  1. Vai alla pagina di riepilogo di Cloud Functions nella console Google Cloud:

    Vai a Cloud Functions

    Assicurati che sia selezionato il progetto Google Cloud in cui vuoi eseguire il deployment di Cloud Functions.

  2. Fai clic su Crea funzione.

  3. Nel campo Ambiente, seleziona 1a generazione o 2a generazione. Vedi Confronto tra versioni di Cloud Functions per un confronto tra Cloud Functions (1ª generazione) e Cloud Functions (2nd gen).

  4. Nel campo Nome funzione, inserisci un nome per la funzione. Il nome della funzione deve iniziare con una lettera seguita da un massimo di 62 lettere, numeri, trattini o trattini bassi e deve terminare con una lettera o un numero.

  5. Nel campo Regione, seleziona una regione in cui eseguire il deployment della funzione.

  6. Nella sezione Attivatore, segui i passaggi in base all'ambiente selezionato:

    • 1a generazione
      1. Nella sezione Autenticazione HTTPS, seleziona l'opzione appropriata in base a se vuoi consentire chiamate non autenticate della funzione. Per impostazione predefinita, l'autenticazione è obbligatoria. Per ulteriori informazioni, consulta Autenticazione per le chiamate.
      2. Nel campo Tipo di attivatore, selezionane uno. Per ulteriori dettagli, consulta Trigger supportati in Cloud Functions (1ª generazione).
      3. Compila i campi aggiuntivi per il tipo di attivatore selezionato.
      4. Fai clic su Salva.
    • 2a generazione
      1. Nel campo Tipo di attivatore, seleziona quello da utilizzare:
        • Per un trigger HTTPS, seleziona l'opzione appropriata a seconda che tu voglia consentire le chiamate non autenticate alla funzione. Ogni funzione di 2ª generazione ha un endpoint per i trigger HTTP(S). Per impostazione predefinita, l'autenticazione è obbligatoria. Per ulteriori informazioni, consulta Autenticazione per le chiamate.
        • Per una funzione basata su eventi, scegli uno dei seguenti trigger: Cloud Pub/Sub, Cloud Storage, Cloud Firestore o Altro trigger. Consulta Trigger Eventarc per ulteriori informazioni.
        • Dopo aver compilato i campi obbligatori, fai clic su Salva trigger.
  7. Facoltativamente, espandi la sezione Runtime, build... alla fine della pagina per ulteriori opzioni di configurazione e sicurezza.

  8. Fai clic su Avanti per andare al passaggio Codice.

  9. Nel campo Runtime, seleziona il runtime del linguaggio utilizzato dalla funzione. Cloud Functions supporta diversi runtime. Per ulteriori informazioni, consulta Runtime.

  10. Nel campo Punto di ingresso, inserisci il punto di ingresso alla funzione nel codice sorgente. Questo è il codice che verrà eseguito all'esecuzione della funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completo presente nel codice sorgente. Per ulteriori informazioni, consulta Punto di ingresso della funzione.

  11. Nel campo Codice sorgente, seleziona l'opzione appropriata per la modalità di fornitura del codice sorgente della funzione. Per i dettagli, consulta le seguenti sezioni:

  12. Fai clic su Esegui il deployment.

Al termine del deployment, le funzioni vengono visualizzate con un segno di spunta verde nella pagina della panoramica di Cloud Functions nella console Google Cloud:

Funzioni di cui è stato eseguito il deployment nella console Cloud

Il deployment iniziale di una funzione può richiedere diversi minuti, mentre viene eseguito il provisioning dell'infrastruttura sottostante. Il deployment di una funzione esistente è più rapido e il traffico in entrata viene automaticamente migrato alla versione più recente.

Esegui il deployment dalla macchina locale

Questa sezione descrive come eseguire il deployment di una funzione dal codice sorgente che si trova sulla macchina locale.

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Segui le istruzioni per il deployment riportate sopra utilizzando il comando gcloud functions deploy.

    Per il flag --source, specifica un percorso del file system locale nella directory radice del codice sorgente della funzione. Consulta la sezione Struttura della directory di origine. Se questo flag viene omesso, viene utilizzata la directory di lavoro corrente.

    Se vuoi, puoi anche utilizzare il flag --stage-bucket per specificare un bucket Cloud Storage in cui caricare il codice sorgente come parte del deployment.

    Durante il caricamento del codice sorgente, Cloud Functions esclude i file non necessari tramite il file .gcloudignore.

Console

  1. Segui le istruzioni per il deployment riportate sopra utilizzando la console Google Cloud finché non arrivi al campo Codice sorgente.
  2. Nel campo Codice sorgente, seleziona Caricamento ZIP.
  3. Nel campo Bucket di destinazione, fai clic su Sfoglia per selezionare un bucket Cloud Storage in cui caricare il codice sorgente nell'ambito del deployment.
  4. Nel campo File ZIP, fai clic su Sfoglia per selezionare un file ZIP da caricare dal file system locale. I file di origine delle funzioni devono trovarsi nella directory principale del file ZIP. Consulta Struttura della directory di origine.
  5. Fai clic su Esegui il deployment.

Esegui il deployment da Cloud Storage

Questa sezione descrive come eseguire il deployment di una funzione dal codice sorgente che si trova in un bucket Cloud Storage. Il codice sorgente deve essere pacchettizzato come file ZIP.

Affinché Cloud Functions legga da un bucket Cloud Storage, assicurati che l'agente di deployment disponga dell'autorizzazione storage.objects.get:

  • In Cloud Functions (1ª generazione), devi concedere questa autorizzazione all'account che esegue il deployment.
  • In Cloud Functions (2nd gen), l'agente di servizio Cloud Functions necessita di questa autorizzazione. Se il bucket di origine si trova nello stesso progetto della funzione, il bucket viene concesso automaticamente. Se il bucket si trova in un progetto diverso, devi concederlo manualmente all'agente di servizio.

Consulta Utilizzo delle autorizzazioni IAM nella documentazione di Cloud Storage per informazioni sul controllo dell'accesso ai bucket.

Con questa autorizzazione puoi ora eseguire il deployment di una funzione da Cloud Storage:

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Segui le istruzioni per il deployment riportate sopra utilizzando il comando gcloud functions deploy.

    Per il flag --source, specifica un percorso Cloud Storage che inizi con gs://. L'oggetto nel percorso deve essere un file ZIP contenente il codice sorgente della funzione. I file di origine delle funzioni devono trovarsi nella directory principale del file ZIP. Vedi Struttura della directory di origine.

Console

  1. Segui le istruzioni per il deployment riportate sopra utilizzando la console Google Cloud finché non arrivi al campo Codice sorgente.
  2. Nel campo Codice sorgente, seleziona ZIP da Cloud Storage.
  3. Nel campo Percorso Cloud Storage, fai clic su Sfoglia per selezionare un file ZIP da Cloud Storage. I file di origine delle funzioni devono trovarsi nella directory principale del file ZIP. Consulta Struttura della directory di origine.
  4. Fai clic su Esegui il deployment.

Esegui il deployment da un repository di codice sorgente

Questa sezione descrive come eseguire il deployment di una funzione dal codice sorgente che si trova in Cloud Source Repositories. Il deployment da Cloud Source Repositories consente anche di eseguire il deployment di codice ospitato in un repository GitHub o Bitbucket.

Prima di poter eseguire il deployment del codice da Cloud Source Repositories, devi configurare un repository e, facoltativamente, connetterlo al tuo repository GitHub o Bitbucket.

Affinché Cloud Functions possa leggere da un repository di codice sorgente, l'agente di servizio Cloud Functions richiede il ruolo IAM Lettore repository di codice sorgente (roles/source.reader) sul repository. Se il repository di codice sorgente si trova nello stesso progetto della funzione, questa autorizzazione viene inclusa automaticamente. Se il repository di origine si trova in un progetto diverso, devi concedere manualmente l'autorizzazione.

Successivamente, puoi eseguire il deployment di una funzione dal repository:

gcloud

  1. Nella console Google Cloud, attiva Cloud Shell.

    Attiva Cloud Shell

    Nella parte inferiore della console Google Cloud viene avviata una sessione di Cloud Shell che mostra un prompt della riga di comando. Cloud Shell è un ambiente shell con Google Cloud CLI già installato e con valori già impostati per il progetto attuale. L'inizializzazione della sessione può richiedere alcuni secondi.

  2. Segui le istruzioni per il deployment riportate sopra utilizzando il comando gcloud functions deploy.

    Per il flag --source, specifica un riferimento al repository di codice sorgente per la posizione del codice sorgente della funzione. Consulta Struttura della directory di origine. Il riferimento più base per Cloud Source Repositories ha il seguente formato:

    https://source.developers.google.com/projects/PROJECT_ID/repos/REPOSITORY_NAME
    

    Nel percorso precedente, PROJECT_ID è l'ID progetto Google Cloud, mentre REPOSITORY_NAME è il nome del repository di origine. Con questo percorso verrà utilizzato il codice sorgente della directory principale del repository sulla revisione con tag master.

    Per eseguire il deployment da una revisione diversa da master, aggiungi uno dei seguenti valori al percorso:

    • /revisions/REVISION_NAME
    • /moveable-aliases/MOVEABLE_ALIAS
    • /fixed-aliases/FIXED_ALIAS

    Per eseguire il deployment del codice sorgente da una directory diversa dalla directory radice del repository, specifica una revisione, un alias spostabile o un alias fisso e aggiungi /paths/PATH_TO_YOUR_SOURCE_DIRECTORY al percorso.

Console

  1. Segui le istruzioni per il deployment riportate sopra utilizzando la console Google Cloud finché non arrivi al campo Codice sorgente.
  2. Nel campo Codice sorgente, seleziona Repository di codice sorgente.
  3. Nel campo Repository, inserisci il nome del repository di codice sorgente.
  4. Nel campo Ramo / tag, seleziona Ramo o Tag a seconda di dove vuoi eseguire il deployment.
  5. Inserisci il nome del ramo o del tag dove indicato.
  6. Nel campo Directory con codice sorgente, inserisci il percorso della directory nel repository contenente il codice sorgente della funzione. Consulta Struttura della directory di origine.
  7. Fai clic su Esegui il deployment.

Esegui il deployment dall'editor in linea della console Google Cloud

Questa sezione descrive come scrivere ed eseguire il deployment di una funzione direttamente dalla console Google Cloud utilizzando l'editor in linea fornito.

  1. Segui le istruzioni per il deployment riportate sopra utilizzando la console Google Cloud finché non arrivi al campo Codice sorgente.
  2. Nel campo Codice sorgente, seleziona Editor incorporato.
  3. Utilizza l'editor fornito per creare o modificare i file di origine in base alle esigenze; consulta Struttura della directory di origine.
    • Il riquadro a sinistra elenca i file di origine e ti consente di creare, rinominare ed eliminare i file.
    • Il riquadro a destra è un editor di testo che ti consente di modificare i contenuti dei file.
  4. Fai clic su Esegui il deployment.

Esempi di righe di comando

Questa sezione mostra i comandi di deployment per alcuni scenari di deployment di esempio.

Per maggiori dettagli sui diversi trigger supportati da Cloud Functions, consulta Trigger di Cloud Functions.

Funzione HTTP da codice sorgente locale

Supponi di avere una funzione HTTP come segue:

  • La funzione utilizza Node.js 16.
  • Il codice sorgente si trova nella directory di lavoro corrente (.).
  • Il punto di ingresso nel codice è denominato myHttpFunction.

Per eseguire il deployment della funzione in Cloud Functions (2nd gen) con il nome my-http-function nella regione us-central1, utilizza il comando seguente:

gcloud functions deploy my-http-function \
  --gen2 \
  --region=us-central1 \
  --runtime=nodejs16 \
  --source=. \
  --entry-point=myHttpFunction \
  --trigger-http

Funzione Pub/Sub dal codice sorgente in Cloud Storage

Supponi di avere una funzione basata su eventi come segue:

  • La funzione gestisce gli eventi di pubblicazione di messaggi Pub/Sub.
  • La funzione utilizza Python 3.9.
  • Il codice sorgente si trova in Cloud Storage nel percorso. gs://my-bucket/my_function_source.zip.
  • Il punto di ingresso nel codice è denominato pubsub_handler.

Per eseguire il deployment della funzione in Cloud Functions (2nd gen) con il nome my-pubsub-function nella regione europe-west1 e fare in modo che la funzione venga attivata dai messaggi nell'argomento Pub/Sub my-topic, utilizza il comando seguente:

gcloud functions deploy my-pubsub-function \
  --gen2 \
  --region=europe-west1 \
  --runtime=python39 \
  --source=gs://my-bucket/my_function_source.zip \
  --entry-point=pubsub_handler \
  --trigger-topic=my-topic

Funzione Cloud Storage dal codice sorgente locale

Supponi di avere una funzione basata su eventi come segue:

  • La funzione gestisce gli eventi di eliminazione degli oggetti Cloud Storage.
  • La funzione utilizza Java 11.
  • Il codice sorgente si trova localmente nel percorso ./functions/storage-function.
  • Il punto di ingresso nel codice è denominato myproject.StorageFunction.

Per eseguire il deployment della funzione in Cloud Functions (2nd gen) con il nome my-storage-function nella regione asia-northeast1 e fare in modo che la funzione venga attivata dagli eventi nel bucket Cloud Storage my-bucket, utilizza il comando seguente:

gcloud functions deploy my-storage-function \
  --gen2 \
  --region=asia-northeast1 \
  --runtime=java11 \
  --source=./functions/storage-function \
  --entry-point=myproject.StorageFunction \
  --trigger-event-filters="type=google.cloud.storage.object.v1.deleted" \
  --trigger-event-filters="bucket=my-bucket"

Passaggi successivi