Pianifica una Cloud Function utilizzando Pub/Sub

Questo tutorial mostra come utilizzare Cloud Scheduler e Pub/Sub per attivare una Cloud Function. La possibilità di pianificare l'esecuzione di una Cloud Function è un caso d'uso comune per Cloud Scheduler. Imparerai a:

  • Creare una Cloud Function semplice che sottoscriva un argomento Pub/Sub.
  • Crea un argomento Pub/Sub per attivare la funzione.
  • Creare un job Cloud Scheduler che richiama il trigger Pub/Sub.
  • Eseguire il job Cloud Scheduler.
  • Verifica l'esito positivo.

Prima di iniziare

Questo tutorial presuppone che tu abbia già utilizzato la guida rapida di Cloud Scheduler. Di conseguenza, avrai a disposizione i seguenti strumenti e risorse:

  • Un progetto Google Cloud con fatturazione abilitata.

  • L'API Cloud Scheduler e l'API Pub/Sub sono abilitate nel progetto. Potrai abilitare l'API Cloud Functions durante il tutorial.

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

  • Cloud Functions
  • Pub/Sub
  • Cloud Scheduler

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud possono essere idonei a una prova senza costi aggiuntivi.

Crea una Cloud Function con un trigger

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

    Vai a Cloud Functions

  2. Fai clic su Abilita API, se richiesto.

  3. Fai clic su Crea funzione. Se viene visualizzato un messaggio che richiede di abilitare le API, fai clic su Abilita per attivarle.

  4. Nella sezione Impostazioni di base, seleziona l'ambiente di 2a generazione, inserisci un nome per la funzione e seleziona una regione.

  5. Nella sezione Attivatore, seleziona Richiedi autenticazione. Fai clic su Aggiungi trigger e seleziona Trigger di Pub/Sub. Viene visualizzato il riquadro Trigger Eventarc. Se ti viene richiesto di abilitare le API richieste, fai clic su Abilita.

  6. Nel riquadro Trigger Eventarc, assicurati che i primi campi siano compilati come segue oppure, se necessario:

    • Tipo di attivatore: origini Google
    • Provider di eventi:Cloud Pub/Sub
    • Evento: google.cloud.pubsub.topic.v1.messagePublished
  7. Nel campo Seleziona un argomento Cloud Pub/Sub, seleziona un argomento esistente o fai clic su Crea nuovo argomento per crearne uno nuovo. La funzione si abbona a questo argomento. Prendi nota del nome dell'argomento: ti servirà più avanti.

    • Se richiesto, fai clic su Concedi per consentire al servizio Pub/Sub di creare i token di identità che dovrà utilizzare per attivare la funzione. Ricorda che hai selezionato Richiedi autenticazione per la funzione in precedenza. Pub/Sub utilizza i token di identità per l'autenticazione richiesta.
  8. Nel campo Account di servizio, fai clic su Crea nuovo account di servizio.

    1. Inserisci un nome per l'account di servizio e fai clic su Crea. Eventarc utilizza questo account di servizio per richiamare la funzione con un token di identità dal servizio Pub/Sub.

    2. Nella sezione Concedi a questo account di servizio l'accesso al progetto, seleziona il ruolo Invoker di Cloud Run. Questo concede all'account di servizio la possibilità di richiamare la funzione di seconda generazione.

    3. Fai clic su Fine.

  9. Lascia deselezionata l'opzione Riprova in caso di errore. Fai clic su Salva attivatore.

  10. Espandi la sezione Impostazioni di runtime, build, connessioni e sicurezza e seleziona la scheda Runtime.

  11. In Account di servizio runtime, nel campo Account di servizio, fai clic su Crea. Il flusso di creazione dell'account di servizio si apre in una nuova scheda. Questo account di servizio è l'identità di cui dispone la Cloud Function al momento dell'esecuzione.

    1. Inserisci un nome per l'account di servizio.
    2. Fai clic su Crea e continua.
    3. Fai clic su Fine.

    Il sistema ti reindirizzerà alla pagina Account di servizio della console Google Cloud. Puoi chiudere questa scheda.

  12. Torna al campo Account di servizio nella pagina di creazione della funzione, fai clic su Aggiorna e seleziona l'account di servizio appena creato.

  13. Tocca Avanti. Se ti viene richiesto di abilitare eventuali API richieste, fai clic su Abilita.

  14. Non modificare la lingua predefinita e il codice campione. Il codice non utilizza servizi cloud e non richiede autorizzazioni aggiuntive abilitate. Fai clic su Esegui il deployment.

Crea un job Cloud Scheduler

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

    Vai a Cloud Scheduler

  2. Fai clic su Crea job.

  3. Se necessario, seleziona una regione in cui eseguire il job.

  4. Assegna un nome al job e, facoltativamente, aggiungi una descrizione.

  5. Specifica la frequenza del job utilizzando il formato unix-cron.

    30 16 * * 7
    

    Vedi Configurare pianificazioni cron job per ulteriori informazioni.

  6. Seleziona il fuso orario.

  7. Fai clic su Continua.

  8. Nella sezione Configura l'esecuzione, seleziona Pub/Sub come tipo di destinazione.

  9. Seleziona il nome dell'argomento.

  10. Aggiungi una breve stringa Messaggio da inviare alla destinazione.

  11. Fai clic su Crea.

Ora hai un cron job che invia un messaggio al tuo argomento Pub/Sub alle 16:30 di domenica. La tua funzione Cloud Functions è iscritta all'argomento in questione.

Esegui il job

Ora puoi eseguire il job che hai creato.

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

    Vai a Cloud Scheduler

  2. Seleziona il job che hai creato.

  3. Fai clic su Forza esecuzione.

    A causa della configurazione richiesta, il primo job creato in un progetto può richiedere alcuni minuti per essere eseguito la prima volta che viene richiamato.

  4. Osserva la colonna Stato dell'ultima esecuzione. Una volta eseguito il job, il valore nella colonna dovrebbe essere "Operazione riuscita".

Complimenti! Hai appena utilizzato la console per vedere i risultati dell'esecuzione di un cron job che invia un messaggio a Pub/Sub. Ora imparerai come verificare che la Cloud Function sia stata effettivamente eseguita.

Verifica i risultati in Cloud Functions

Per verificare che la Cloud Function sia stata attivata 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.

  3. Viene visualizzata la pagina Dettagli funzione. Il grafico Chiamate/secondi dovrebbe mostrare la prima chiamata della funzione. Per visualizzare i dettagli della chiamata, fai clic su Log.

Complimenti! La funzione è stata eseguita.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial:

Elimina il job Cloud Scheduler

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

    Vai allo scheduler

  2. Seleziona la casella di controllo accanto al job.

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

Elimina l'argomento Pub/Sub

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

    Vai a Pub/Sub

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

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

Elimina la funzione Cloud Functions

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

    Vai a Cloud Functions

  2. Seleziona la casella di controllo accanto alla funzione.

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

Elimina gli account di servizio

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

    Vai ad Account di servizio

  2. Seleziona la casella di controllo accanto agli account di servizio che hai creato.

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

Disabilita le API

Se hai abilitato delle API durante questo tutorial (ad esempio le API Eventarc, Cloud Functions o Pub/Sub), disattivale. La disabilitazione delle API influisce sull'accesso all'API per il progetto, quindi non disabilitare le API se altre risorse del progetto le utilizzano.

  1. Nella console Google Cloud, vai alla pagina API e servizi.

    Vai ad API e servizi

  2. Fai clic sull'API da disabilitare. Viene visualizzata una pagina che descrive l'API.

  3. Fai clic su Disabilita API.

Elimina il progetto

Se hai creato un progetto solo per questo tutorial,

  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.