Esegui il deployment delle funzioni in Cloud Run

Questa pagina descrive come eseguire il deployment e modificare le funzioni in Cloud Run. Per un esempio della procedura dettagliata di deployment di Hello World consulta Deployment di una funzione di esempio.

Dietro le quinte, i deployment delle funzioni Cloud Run utilizzano i buildpack e Cloud Build di Google Cloud per creare automaticamente le immagini dei container dal codice sorgente della funzione senza dover installare Docker sulla tua macchina o configurare i buildpack o Cloud Build.

I deployment delle funzioni Cloud Run utilizzano anche Artifact Registry per archiviare gli artefatti e gestire le immagini container. Artifact Registry crea automaticamente Artifact Registry il repository cloud-run-source-deploy, se il progetto non ne ha già creato uno con questo nome.

Prima di iniziare

  1. Assicurati di aver configurato un nuovo progetto per Cloud Run come descritto nella pagina di configurazione.

  2. Abilita le API Artifact Registry, Cloud Build, Cloud Run Admin e Cloud Logging:

     gcloud services enable artifactregistry.googleapis.com \
         cloudbuild.googleapis.com \
         run.googleapis.com \
         logging.googleapis.com
    

    Facoltativamente, abilita l'API Eventarc per utilizzare i trigger di eventi:

     gcloud services enable eventarc.googleapis.com
    
  3. Se il tuo progetto è soggetto a un criterio dell'organizzazione che limita le invocazioni non autenticate, dovrai accedere al servizio di cui è stato eseguito il deployment come descritto in Testare i servizi privati.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eseguire il deployment dei servizi Cloud Run dall'origine, chiedi all'amministratore di concederti i seguenti ruoli IAM sul tuo progetto:

Per un elenco di ruoli e autorizzazioni IAM associati Cloud Run, consulta Ruoli IAM di Cloud Run e le autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run si interfaccia con Le API Google Cloud, come le librerie client di Cloud, consultano guida alla configurazione dell'identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta autorizzazioni di deployment e gestire l'accesso.

Ruoli per l'account di servizio

  • Affinché Cloud Build possa compilare le sorgenti, concedi il ruolo Account di servizio Cloud Build all'account di servizio predefinito di Compute Engine eseguendo quanto segue:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
        --role=roles/cloudbuild.builds.builder

    Sostituisci PROJECT_NUMBER con il numero di progetto Google Cloud e PROJECT_ID con l'ID progetto Google Cloud. Per istruzioni dettagliate su come trovare l'ID progetto e il numero del progetto, consulta Creazione e gestione dei progetti.

    La propagazione del ruolo dell'account di servizio Cloud Build all'account di servizio predefinito di Compute Engine richiede un paio di minuti.

  • Crea ed esegui il deployment di una funzione

    Puoi eseguire il deployment di una funzione utilizzando la console Google Cloud o la riga di comando gcloud. Fai clic sulla scheda per visualizzare le istruzioni sull'utilizzo dello strumento desiderato.

    Console

    1. Nella console Google Cloud, vai alla pagina Cloud Run:

      Vai a Cloud Run

    2. Fai clic su Scrivi una funzione.

    3. Nel campo Nome servizio, inserisci un nome per descrivere la funzione. I nomi dei servizi devono iniziare solo con una lettera, e contenere fino a 49 caratteri o meno, tra cui lettere, numeri o e trattini. I nomi dei servizi non possono terminare con trattini e devono essere univoci per regione e progetto. Il nome di un servizio non può essere modificato in un secondo momento ed è visibile pubblicamente.

    4. Nell'elenco Regione, utilizza il valore predefinito o seleziona la regione in cui vuoi eseguire il deployment della funzione.

    5. Nell'elenco Runtime, utilizza il valore predefinito o seleziona una versione del runtime.

    6. Se vuoi, nella sezione Attivati, fai clic su Aggiungi attivatore e seleziona un'opzione. Viene visualizzato il riquadro Trigger Eventarc, in cui puoi modificare i seguenti dettagli dell'attivatore:

      1. Nel campo Nome attivatore, inserisci un nome per l'attivatore o utilizza il nome predefinito.

      2. Seleziona un Tipo di attivatore dall'elenco per specificare uno dei seguenti tipi di attivatore:

        • Origini Google per specificare gli attivatori per Pub/Sub, Cloud Storage, Firestore e altri fornitori di eventi Google.

        • Personalizzato per produrre e utilizzare eventi dal codice dell'applicazione. Segui le istruzioni nel riquadro Trigger Eventarc per creare un canale. Un canale è una risorsa utilizzata come pipeline per fornire servizi più eventi dai produttori ai consumatori. Gli eventi personalizzati vengono pubblicati in un canale e un trigger Eventarc si iscrive a questi eventi.

        • Di terze parti per l'integrazione con provider non Google che offrono un'origine Eventarc. Per ulteriori informazioni, consulta Eventi di terze parti in Eventarc.

      3. Seleziona un Fornitore di eventi dall'elenco per selezionare un prodotto. che fornisce il tipo di evento per attivare la funzione. Per l'elenco dei fornitori di eventi, vedi Fornitori e destinazioni di eventi.

      4. Seleziona un Tipo di evento dall'elenco. Il tuo e varia in base al tipo di evento supportato. Per saperne di più, consulta Tipi di eventi.

      5. Nel campo Regione, seleziona una località per l'attivatore Eventarc. In generale, la posizione di un trigger Eventarc deve corrispondere alla posizione della risorsa Google Cloud per la quale vuoi monitorare gli eventi. Nella maggior parte degli scenari, dovresti anche il deployment della funzione nella stessa regione. Consulta Informazioni sulle località Eventarc per maggiori dettagli sulle località dei trigger Eventarc.

      6. Nel campo Account di servizio, seleziona un account di servizio. I trigger Eventarc sono collegati agli account di servizio da utilizzare come identità quando richiami la tua funzione. Il tuo L'account di servizio del trigger Eventarc deve avere l'autorizzazione per richiamare la funzione. Per impostazione predefinita, Cloud Run utilizza l'account di servizio predefinito di Compute Engine.

      7. Se vuoi, specifica il percorso dell'URL del servizio a cui inviare la richiesta in arrivo. Si tratta del percorso relativo sul servizio di destinazione a cui devono essere inviati gli eventi per l'attivatore. Ad esempio: /, /route, route e route/subroute.

      8. Dopo aver compilato i campi obbligatori, fai clic su Salva trigger.

    7. In Autenticazione, configura quanto segue:

      • Se stai creando una funzione HTTP pubblica, ad esempio un webhook, seleziona Consenti chiamate non autenticate. Se selezioni questa opzione, viene assegnato il ruolo Invoker IAM all'identificatore speciale allUser. Puoi utilizzare IAM per modificare questa impostazione in un secondo momento dopo aver creato il servizio. Se non disponi delle autorizzazioni (ruolo Amministratore Cloud Run) per selezionare questa opzione, il servizio eseguirà il e richiedono l'autenticazione.

      • Se stai creando una funzione attivata da eventi, seleziona Richiedi autenticazione.

    8. Facoltativamente, aggiorna le seguenti configurazioni aggiuntive per le funzioni:

      1. Imposta Allocazione e prezzi della CPU in base alle esigenze.

      2. In Scalabilità automatica servizio, specifica il numero minimo di istanze dell'oggetto o eliminare definitivamente una versione archiviata, in base alle necessità.

      3. Configura le impostazioni di Controllo in entrata in base alle tue esigenze.

      4. Espandi la sezione Container, volumi, networking, sicurezza per impostare altre impostazioni facoltative nelle schede appropriate:

    9. Fai clic su Crea e attendi che Cloud Run crei il servizio utilizzando una revisione segnaposto.

    10. La console ti reindirizzerà alla pagina Origine. in cui puoi vedere il codice sorgente della funzione. Fai clic su Salva ed esegui nuovamente il deployment.

    11. Nella scheda Source (Origine), puoi scegliere di fare clic su Mostra payload per visualizzare un esempio di payload di eventi in entrata.

    12. Dopo il deployment, testa la funzione creata facendo clic sul pulsante Test.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Aggiorna i componenti di gcloud alla versione più recente:

      gcloud components update
    3. Esegui questo comando nella directory contiene il codice campione:

      gcloud beta run deploy FUNCTION \
             --source . \
             --function FUNCTION_ENTRYPOINT \
             --base-image BASE_IMAGE \
             --region REGION
      

      Sostituisci:

      • FUNCTION con il nome della funzione che stai durante il deployment. Puoi omettere del tutto questo parametro, ma se lo fai ti verrà chiesto il nome.

      • FUNCTION_ENTRYPOINT con il punto di ingresso della funzione nel codice sorgente. Questo è il codice che Cloud Run esegue quando di una funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completamente qualificato esistente nel codice sorgente.

      • BASE_IMAGE con l'ambiente immagine di base per personalizzata. Per ulteriori dettagli sulle immagini di base e sui pacchetti inclusi in ogni immagine, vedi Immagini base di runtime.

      • REGION con la regione Google Cloud in cui vuoi eseguire il deployment della funzione. Ad esempio: us-central1.

      Facoltativamente,

      • Se crei una funzione HTTP pubblica, ad esempio un webhook, specificare il flag --allow-unauthenticated. Questo flag assegna Ruolo Invoker IAM di Cloud Run all'identificatore speciale allUser. Puoi utilizzare IAM per modificare questa impostazione in un secondo momento dopo aver creato il servizio. Se stai creando un evento funzione attivata da eventi o servizio autenticato, puoi omettere questo flag.

    Facoltativamente, dopo aver eseguito il deployment della funzione, puoi aggiungere attivatori Eventarc. Per aggiungere un trigger, esegui questo comando:

      gcloud eventarc triggers create EVENTARC_TRIGGER_NAME \
          --location=EVENTARC_TRIGGER_LOCATION \
          --destination-run-service=FUNCTION \
          --destination-run-region=REGION \
          --event-filters="type=EVENTARC_FILTER_TYPE" \
          --event-filters="EVENTARC_EVENT_FILTER" \
          --service-account=EVENTARC_TRIGGER_SERVICE_ACCOUNT
    

    Sostituisci:

    • EVENTARC_TRIGGER_NAME con il nome dell'attivatore Eventarc.

    • EVENTARC_TRIGGER_LOCATION con la località Trigger Eventarc. In generale, la posizione di un trigger Eventarc deve corrispondere alla posizione della risorsa Google Cloud per la quale vuoi monitorare gli eventi. Nella maggior parte degli scenari, devi anche eseguire il deployment della funzione nella stessa regione. Consulta Informazioni sulle località Eventarc per maggiori dettagli sulle località dei trigger Eventarc.

    • FUNCTION con il nome della funzione di cui è stato eseguito il deployment.

    • REGION con la regione Cloud Run della funzione.

    • EVENTARC_FILTER_TYPE con i filtri di eventi che l'attivatore monitor. Un evento che corrisponde a tutti i filtri --event-filters attiva le chiamate alla funzione. Ogni attivatore deve avere un tipo di evento supportato nel formato --event-filters="type=EVENTARC_FILTER_TYPE". Questo tipo di evento non può essere modificato dopo la creazione. Per modificare EVENT_FILTER_TYPE, crea un nuovo trigger ed elimina quello precedente. Se vuoi, puoi ripetere il flag --event-filters con un filtro nel formato ATTRIBUTE=VALUE per aggiungere altri filtri.

    • EVENTARC_TRIGGER_SERVICE_ACCOUNT con un account di servizio. Gli attivatori Eventarc sono collegati agli account di servizio da usare come identità quando viene invocata la funzione. Il tuo L'account di servizio del trigger Eventarc deve avere l'autorizzazione per richiamare la funzione. Per impostazione predefinita, Cloud Run utilizza l'account di servizio Compute predefinito.

    Località Cloud Run

    Cloud Run è regionale, il che significa che l'infrastruttura dei tuoi servizi Cloud Run si trova in una regione specifica gestiti da Google affinché siano disponibili in modo ridondante tutte le zone all'interno di quella regione.

    Soddisfare i requisiti di latenza, disponibilità o durabilità è fondamentale i fattori necessari per selezionare la regione in cui vengono eseguiti i servizi Cloud Run. In genere puoi selezionare la regione più vicina ai tuoi utenti, ma devi prendere in considerazione la posizione degli altri prodotti Google Cloud utilizzati dal servizio Cloud Run. L'utilizzo combinato dei prodotti Google Cloud in più località può influire sulla latenza e sul costo del servizio.

    Cloud Run è disponibile nelle regioni seguenti:

    Soggetto ai prezzi di Livello 1

    Soggetto ai prezzi di Livello 2

    • africa-south1 (Johannesburg)
    • asia-east2 (Hong Kong)
    • asia-northeast3 (Seul, Corea del Sud)
    • asia-southeast1 (Singapore)
    • asia-southeast2 (Giacarta)
    • asia-south1 (Mumbai, India)
    • asia-south2 (Delhi, India)
    • australia-southeast1 (Sydney)
    • australia-southeast2 (Melbourne)
    • europe-central2 (Varsavia, Polonia)
    • europe-west10 (Berlino) icona foglia A basse emissioni di CO2
    • europe-west12 (Torino)
    • europe-west2 (Londra, Regno Unito) icona foglia A basse emissioni di CO2
    • europe-west3 (Francoforte, Germania) icona foglia Bassi livelli di CO2
    • europe-west6 (Zurigo, Svizzera) icona foglia Bassi livelli di CO2
    • me-central1 (Doha)
    • me-central2 (Dammam)
    • northamerica-northeast1 (Montreal) icona foglia Bassi livelli di CO2
    • northamerica-northeast2 (Toronto) icona foglia A basse emissioni di CO2
    • southamerica-east1 (San Paolo, Brasile) icona foglia Bassi livelli di CO2
    • southamerica-west1 (Santiago, Cile) icona foglia A basse emissioni di CO2
    • us-west2 (Los Angeles)
    • us-west3 (Salt Lake City)
    • us-west4 (Las Vegas)

    Se hai già creato un servizio Cloud Run, puoi visualizzare nella dashboard di Cloud Run all'interno Console Google Cloud.

    Abilita nuovi tentativi evento

    Eventarc utilizza Pub/Sub come livello di trasporto e ha un criterio predefinito per i nuovi tentativi che potrebbe non funzionare correttamente per la tua funzione.

    Dopo aver creato un trigger Eventarc, ti consigliamo vivamente di aggiornare le norme di ripetizione in Eventarc e di configurare l'argomento per le email inutilizzate in Pub/Sub.

    Modificare una funzione esistente

    Puoi modificare la configurazione o il codice della funzione:

    Modifica configurazione

    Per modificare i parametri di configurazione, come l'allocazione della CPU, la memoria e la connettività VPC:

    Console

    1. Nella console Google Cloud, vai alla pagina Cloud Run:

      Vai a Cloud Run

    2. Individua il servizio che vuoi aggiornare nell'elenco dei servizi e fai clic per aprire i relativi dettagli.

    3. Fai clic su Modifica ed esegui il deployment di una nuova revisione per visualizzare il modulo di deployment della revisione.

    4. Modificare qualsiasi impostazione di configurazione.

    5. Fai clic su Esegui il deployment e attendi il completamento del deployment.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Per aggiornare una o più impostazioni di configurazione del servizio, utilizza il comando gcloud beta run services update SERVICE con i flag della riga di comando della configurazione da actualizare. Sostituisci SERVICE con il nome del servizio.

    Esegui di nuovo il deployment del nuovo codice sorgente

    Puoi modificare l'immagine di base, il runtime e il codice sorgente della funzione utilizzando la console Google Cloud o gcloud CLI.

    Fai clic sulla scheda per visualizzare le istruzioni utilizzando lo strumento di tua scelta.

    Console

    1. Nella console Google Cloud, vai alla pagina Cloud Run:

      Vai a Cloud Run

    2. Individua la funzione che vuoi aggiornare nell'elenco Servizi e fai clic per aprire i dettagli della funzione.

    3. Vai alla scheda Origine e fai clic su Modifica origine.

    4. Fai clic su Modifica aggiornamenti di runtime e sicurezza accanto a Immagine di base e seleziona un altro valore Runtime oppure Ambiente dall'elenco se necessario e fai clic su Salva.

    5. Modifica l'entry point della funzione in base alle esigenze.

    6. Nella sezione File, seleziona Aggiungi file per creare un nuovo file, Rinomina file per rinominare un file o Elimina file per eliminare un file.

    7. Nella sezione Codice, modifica il codice sorgente in base alle tue esigenze.

    8. Fai clic su Salva ed esegui di nuovo il deployment e attendi il completamento del deployment.

    gcloud

    1. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    2. Esegui questo comando nella directory contiene il codice sorgente della funzione:

      gcloud beta run deploy FUNCTION \
             --source . \
             --function FUNCTION_ENTRYPOINT \
             --base-image BASE_IMAGE \
             --region REGION
      

      Sostituisci:

      • FUNCTION con il nome della funzione che vuoi modificare.

      • FUNCTION_ENTRYPOINT con il punto di accesso alla funzione nel codice sorgente.

      • BASE_IMAGE con l'ambiente immagine di base per personalizzata. Nella maggior parte dei casi, puoi specificare l'ID di runtime, ad esempio nodejs22.

        In alternativa, se vuoi utilizzare un pacchetto di sistema specifico nello stack o specificare la regione da cui viene scaricata l'immagine di base, puoi specificare una delle seguenti opzioni:

        • Il percorso completo dell'immagine di base, ad esempio us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22. Questa opzione ti consente di specificare l'immagine di base, un pacchetto di sistema specifico nello stack e la regione da cui viene scaricata l'immagine di base.
        • L'alias del percorso completo dell'immagine di base, ad esempio google-22/nodejs22 o google-22-full/nodejs22. L'opzione di alias più breve ti consente specificare l'immagine di base e uno specifico pacchetto di sistema nello stack.

        Per ulteriori dettagli sulle immagini di base e sui pacchetti inclusi in ogni immagine, vedi Immagini base di runtime.

      • REGION con Google Cloud regione in cui vuoi eseguire il deployment la tua funzione. Ad esempio: us-central1.

      Flag facoltativi

      Puoi configurare i seguenti flag facoltativi mentre modifichi le :

      • Variabili di ambiente di build flag per specificare le variabili di ambiente durante il passaggio di compilazione, ad esempio per configurare parametri o certificati specifici per il momento di compilazione.

      • Indicatori Pool di worker per specificare il pool di worker da utilizzare nel contesto di build protetto di VPC Service Controls.

      • Account di servizio di compilazione personalizzati indicano la possibilità di specificare un'alternativa all'account di servizio di compilazione predefinito per una maggiore sicurezza.

      • Aggiornamenti automatici delle immagini di base per disattivare gli aggiornamenti automatici. Per impostazione predefinita, gli aggiornamenti automatici della sicurezza sono abilitati per le funzioni.

    Passaggi successivi

    Dopo aver eseguito il deployment di una nuova funzione, puoi: