Pianifica una Cloud Function basata su eventi


Questo tutorial mostra come attivare una Cloud Function basata su eventi utilizzando Cloud Scheduler e scegliendo come target un argomento Pub/Sub. Utilizza una funzione basata sugli eventi quando la funzione deve essere attivata direttamente in risposta a eventi all'interno del tuo progetto Google Cloud, ad esempio messaggi su un argomento Pub/Sub o modifiche in un bucket Cloud Storage.

Tieni presente che puoi anche pianificare una funzione HTTP scegliendo come target l'endpoint HTTP della funzione. Utilizza una funzione HTTP se hai bisogno che la tua funzione disponga di un endpoint URL e risponda alle richieste HTTP, ad esempio per i webhook. Per ulteriori informazioni, consulta Tipi di Cloud Functions.

La pianificazione dell'esecuzione di una Cloud Functiond è un caso d'uso comune per Cloud Scheduler. In questo tutorial, imparerai a:

  1. Creare una Cloud Function semplice che sottoscriva la sottoscrizione a un argomento Pub/Sub.
  2. Creare un job Cloud Scheduler che pubblica un messaggio nell'argomento Pub/Sub.
  3. Esegui il job Cloud Scheduler.
  4. Verifica che la Cloud Function sia stata attivata dal job Cloud Scheduler.

Costi

In questo documento, utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. Abilita le API Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.

    Abilita le API

  5. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  8. Abilita le API Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc.

    Abilita le API

  9. Create a service account:

    1. In the Google Cloud console, go to the Create service account page.

      Go to Create service account
    2. Select your project.
    3. In the Service account name field, enter a name. The Google Cloud console fills in the Service account ID field based on this name.

      In the Service account description field, enter a description. For example, Service account for quickstart.

    4. Click Create and continue.
    5. Grant the Cloud Run > Cloud Run Invoker role to the service account.

      To grant the role, find the Select a role list, then select Cloud Run > Cloud Run Invoker.

    6. Click Continue.
    7. Click Done to finish creating the service account.

  10. Tieni presente che devi concedere il ruolo Invoker di Cloud Run perché in Cloud Functions (2a gen.), le autorizzazioni di chiamata sono disponibili gestendo il servizio Cloud Run sottostante.

  11. Per impostazione predefinita, Cloud Functions utilizza l'account di servizio Compute Engine predefinito creato automaticamente per il proprio account di servizio di runtime. Puoi usare questo account di servizio per provare il tutorial. Tuttavia, a seconda della configurazione dei criteri dell'organizzazione, all'account di servizio predefinito potrebbe non essere concesso automaticamente il ruolo Editor sul progetto. In questo caso, devi concedere all'account di servizio i seguenti ruoli:
    1. Writer Artifact Registry (roles/artifactregistry.writer)
    2. Writer log (roles/logging.logWriter)
    3. Visualizzatore oggetti Storage (roles/storage.objectViewer)

Crea una Cloud Function basata su eventi

Crea una funzione basata su eventi che viene attivata direttamente in risposta agli eventi all'interno del tuo progetto Google Cloud; in questo caso, un messaggio pubblicato in un argomento Pub/Sub.

  1. Nella console Google Cloud, vai alla pagina Cloud Functions.

    Vai a Cloud Functions

  2. Fai clic su Crea funzione.

  3. Nella sezione Nozioni di base, procedi nel seguente modo:

    1. Nell'elenco Ambiente, seleziona 2a generazione.
    2. Inserisci un nome per la funzione.
    3. Nell'elenco Regione, seleziona una regione.
  4. Nella sezione Trigger, segui questi passaggi:

    1. Nell'elenco Tipo di trigger, seleziona Cloud Pub/Sub.
    2. Nell'elenco Argomento Cloud Pub/Sub, seleziona un argomento esistente oppure fai clic su Crea un argomento per creare un nuovo argomento. Prendi nota del nome dell'argomento, che ti servirà in un passaggio successivo.
    3. Fai clic su Altre opzioni.

      Si apre il riquadro Trigger Eventarc.

  5. Nel riquadro Trigger Eventarc, segui questi passaggi:

    1. Se ti viene richiesto di consentire al servizio Pub/Sub di creare i token di identità necessari per richiamare la funzione, fai clic su Concedi.
    2. Nell'elenco Account di servizio, seleziona l'account di servizio creato in precedenza.
    3. Accetta gli altri valori predefiniti.
    4. Fai clic su Salva trigger.

      Il riquadro Trigger Eventarc si chiude.

  6. Accetta le altre impostazioni predefinite e fai clic su Avanti.

  7. Non modificare il linguaggio di runtime predefinito e codice campione. Il codice non utilizza servizi cloud e non richiede l'abilitazione di autorizzazioni aggiuntive. Fai clic su Esegui il deployment.

Crea un job Cloud Scheduler

Creare un job Cloud Scheduler con una destinazione Pub/Sub.

  1. Nella console Google Cloud, vai alla pagina Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Fai clic su Crea job.

  3. Inserisci un nome per il job.

  4. Nell'elenco Regione, seleziona una regione.

  5. Specifica la frequenza per il job utilizzando un formato unix-cron:

    30 16 * * 7
    

    Per ulteriori informazioni, consulta Formato del job Cron e fuso orario.

  6. Seleziona un fuso orario nell'elenco Fuso orario.

  7. Fai clic su Continua.

  8. Nell'elenco Tipo di destinazione, seleziona Pub/Sub.

  9. Seleziona l'argomento Pub/Sub che hai creato in precedenza.

  10. Nel campo Corpo del messaggio, inserisci una stringa da inviare all'argomento di destinazione Pub/Sub. Ad esempio: "Hello world!"

  11. Fai clic su Crea.

Hai creato un cron job che invia un messaggio al tuo argomento Pub/Sub alle 16:30 di domenica. La funzione Cloud Functions è sottoscritta a quell'argomento.

Esegui il job Cloud Scheduler

Ora puoi eseguire il job che hai creato.

  1. Nella console Google Cloud, vai alla pagina Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona la casella di controllo per il job che hai creato e fai clic su Forza esecuzione.

    Quando viene richiamato inizialmente, la configurazione e l'esecuzione del primo job creato in un progetto può richiedere alcuni minuti.

  3. Dopo l'esecuzione del job, lo Stato dell'ultima esecuzione dovrebbe indicare Success.

Verifica i risultati in Cloud Functions

Puoi verificare che la Cloud Function venga attivata ed eseguita correttamente dal cron job.

  1. Nella console Google Cloud, vai alla pagina Cloud Functions.

    Vai a Cloud Functions

  2. Fai clic sul nome della funzione.

    Si apre la pagina Dettagli funzione e il grafico Chiamate/secondo mostra la prima chiamata della funzione.

  3. Fai clic sulla scheda Log.

    Dovresti vedere una voce di log simile a Hello, YOUR_STRING!

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

Elimina progetto

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Elimina le risorse del tutorial

  1. Nella console Google Cloud, vai alla pagina Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona la casella di controllo accanto al job.

  3. Fai clic su Elimina e conferma l'eliminazione.

  4. Nella console Google Cloud, vai alla pagina Pub/Sub.

    Vai a Pub/Sub

  5. Seleziona la casella di controllo accanto all'argomento.

  6. Fai clic su Elimina e conferma l'eliminazione.

  7. Nella console Google Cloud, vai alla pagina Cloud Functions.

    Vai a Cloud Functions

  8. Seleziona la casella di controllo accanto alla funzione.

  9. Fai clic su Elimina e conferma l'eliminazione.

  10. Nella console Google Cloud, vai alla pagina Account di servizio.

    Vai a Service account

  11. Seleziona la casella di controllo accanto all'account di servizio che hai creato.

  12. Fai clic su Elimina e conferma l'eliminazione.

Passaggi successivi