Questo tutorial mostra come attivare una funzione Cloud Run basata sugli eventi utilizzando Cloud Scheduler e scegliendo come target un argomento Pub/Sub. Utilizza una funzione basata su eventi quando la funzione deve essere attivata direttamente in risposta a eventi all'interno del tuo progetto Google Cloud , ad esempio messaggi in 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 quando vuoi che la funzione abbia un endpoint URL e risponda alle richieste HTTP, ad esempio per i webhook. Per saperne di più, consulta Tipi di Cloud Run Functions.
La pianificazione dell'esecuzione di una funzione Cloud Run è un caso d'uso comune per Cloud Scheduler. In questo tutorial, imparerai a:
- Crea una semplice funzione Cloud Run che esegue la sottoscrizione a un argomento Pub/Sub.
- Crea un job Cloud Scheduler che pubblica un messaggio nell'argomento Pub/Sub.
- Esegui il job Cloud Scheduler.
- Verifica che la funzione Cloud Run 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.
Prima di iniziare
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
-
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Build, Cloud Functions, Cloud Run Admin, Cloud Scheduler, Eventarc APIs.
-
Create a service account:
-
In the Google Cloud console, go to the Create service account page.
Go to Create service account - Select your project.
-
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
. - Click Create and continue.
-
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.
- Click Continue.
-
Click Done to finish creating the service account.
-
- Per impostazione predefinita, le funzioni Cloud Run utilizzano l'account di servizio Compute Engine predefinito creato automaticamente come service account di runtime. Puoi utilizzare questo account di servizio per provare
questo tutorial. Tuttavia, a seconda della configurazione della policy dell'organizzazione, al account di servizio predefinito potrebbe non essere concesso automaticamente il ruolo Editor nel tuo progetto. In questo caso, devi
concedere al service account
i seguenti ruoli:
- Artifact Registry Writer (
roles/artifactregistry.writer
) - Writer log (
roles/logging.logWriter
) - Storage Object Viewer (
roles/storage.objectViewer
)
- Artifact Registry Writer (
Tieni presente che devi concedere il ruolo Invoker di Cloud Run perché in Cloud Run Functions (2ª generazione.), le autorizzazioni di chiamata sono disponibili gestendo il servizio Cloud Run sottostante.
Crea una funzione Cloud Run basata su eventi
Crea una funzione basata sugli 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.
Nella Google Cloud console, vai alla pagina Cloud Run Functions.
Fai clic su
Crea funzione.Nella sezione Nozioni di base, segui questi passaggi:
- Nell'elenco Ambiente, seleziona 2ª gen..
- Inserisci un nome per la funzione.
- Nell'elenco Regione, seleziona una regione.
Nella sezione Trigger, segui questi passaggi:
- Nell'elenco Tipo di trigger, seleziona Cloud Pub/Sub.
- Nell'elenco Argomento Cloud Pub/Sub, seleziona un argomento esistente o, per crearne uno nuovo, fai clic su Crea un argomento. Prendi nota del nome dell'argomento, in quanto ti servirà in un passaggio successivo.
Fai clic su Altre opzioni.
Viene visualizzato il riquadro Trigger Eventarc.
Nel riquadro Trigger Eventarc, procedi nel seguente modo:
- Se ti viene chiesto di consentire al servizio Pub/Sub di creare i token di identità necessari per richiamare la funzione, fai clic su Concedi.
- Nell'elenco Service account, seleziona il account di servizio che hai creato in precedenza.
- Accetta gli altri valori predefiniti.
Fai clic su Salva trigger.
Il riquadro Trigger Eventarc si chiude.
Accetta gli altri valori predefiniti e fai clic su Avanti.
Non modificare la lingua del runtime predefinita e codice campione. Il codice non utilizza servizi cloud e non richiede l'attivazione di autorizzazioni aggiuntive. Fai clic su Esegui il deployment.
Crea un job Cloud Scheduler
Crea un job Cloud Scheduler con una destinazione Pub/Sub.
Nella Google Cloud console, vai alla pagina Cloud Scheduler.
Fai clic su
Crea job.Inserisci un nome per il job.
Nell'elenco Regione, seleziona una regione.
Specifica la frequenza per il job, utilizzando un formato unix-cron:
30 16 * * 7
Per saperne di più, vedi Formato e fuso orario del cron job.
Nell'elenco Fuso orario, seleziona un fuso orario.
Fai clic su Continua.
Nell'elenco Tipo target, seleziona Pub/Sub.
Seleziona l'argomento Pub/Sub che hai creato in precedenza.
Nel campo Corpo del messaggio, inserisci una stringa da inviare all'argomento Pub/Sub target. Ad esempio: "Hello world!"
Fai clic su Crea.
Hai creato un cron job che invia un messaggio all'argomento Pub/Sub alle 16:30 di domenica. La tua funzione Cloud Run è iscritta a questo argomento.
Esegui il job Cloud Scheduler
Ora puoi eseguire il job che hai creato.
Nella Google Cloud console, vai alla pagina Cloud Scheduler.
Seleziona la casella di controllo relativa al 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 possono richiedere alcuni minuti.
Dopo l'esecuzione del job, lo Stato dell'ultima esecuzione dovrebbe indicare
Success
.
Verifica i risultati in Cloud Run Functions
Puoi verificare che la funzione Cloud Run venga attivata ed eseguita correttamente dal job cron.
Nella Google Cloud console, vai alla pagina Cloud Run Functions.
Fai clic sul nome della funzione.
Si apre la pagina Dettagli funzione e il grafico Chiamate/secondo mostra la prima chiamata della funzione.
Fai clic sulla scheda Log.
Dovresti visualizzare 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
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Eliminare le risorse del tutorial
Nella Google Cloud console, vai alla pagina Cloud Scheduler.
Seleziona la casella di controllo accanto al job.
Fai clic su
Elimina e conferma l'eliminazione.Nella console Google Cloud , vai alla pagina Pub/Sub.
Seleziona la casella di controllo accanto all'argomento.
Fai clic su
Elimina e conferma l'eliminazione.Nella Google Cloud console, vai alla pagina Cloud Run Functions.
Seleziona la casella di controllo accanto alla funzione.
Fai clic su
Elimina e conferma l'eliminazione.Nella console Google Cloud , vai alla pagina Service Accounts.
Seleziona la casella di controllo accanto all'account di servizio che hai creato.
Fai clic su
Elimina e conferma l'eliminazione.