Puoi utilizzare Cloud Scheduler per attivare in modo sicuro un servizio Cloud Run in base a una pianificazione, in modo simile all'utilizzo dei cron job.
I possibili casi d'uso includono:
- Esecuzione di backup in base a una pianificazione
- Esecuzione di attività di amministrazione ricorrenti, ad esempio:
- Rigenerazione di una Sitemap
- Eliminazione di dati, contenuti, configurazioni o revisioni precedenti
- Sincronizzazione dei contenuti tra i sistemi di dati
- Elaborazione delle notifiche via email giornaliere
- Verifica e generazione di report sull'accesso ai servizi downstream
- Generazione di documenti, ad esempio fatture
Questa pagina mostra come utilizzare in modo sicuro Cloud Scheduler con Cloud Run nello stesso Google Cloud progetto.
Prima di iniziare
Abilita l'API Cloud Scheduler nel progetto che stai utilizzando.
Creazione ed esecuzione del deployment del servizio
Per creare ed eseguire il deployment:
Nel tuo servizio, implementa il job che vuoi eseguire in base a una pianificazione.
Prendi nota del tipo di richiesta che il tuo servizio prevede di ricevere per le richieste di job, ad esempio
GEToPOST. Quando crei il job programmato che richiama il tuo servizio, devi specificare il metodo HTTP corrispondente.Quando esegui il deployment del servizio che utilizzi con Cloud Scheduler, assicurati di selezionare ** Richiedi autenticazione**. Non consentire l'accesso pubblico.
L'esempio seguente mostra come eseguire il deployment di un servizio Cloud Run utilizzando Terraform:
Sostituisci us-docker.pkg.dev/cloudrun/container/hello con un riferimento alla tua immagine container.
Creazione di un account di servizio per Cloud Scheduler
Devi creare un account di servizio da associare a Cloud Scheduler e concedere a questo account di servizio l'autorizzazione a richiamare il tuo servizio Cloud Run. Puoi utilizzare un account di servizio esistente per rappresentare Cloud Scheduler o crearne uno nuovo.
Per creare un account di servizio e concedergli l'autorizzazione a richiamare il servizio Cloud Run:
Console
Nella Google Cloud console, vai alla pagina Service account.
Seleziona un progetto.
Inserisci il nome di un account di servizio da visualizzare nella Google Cloud console.
La Google Cloud console genera un ID account di servizio in base a questo nome. Modifica l'ID, se necessario. Non potrai modificare l'ID in un secondo momento.
(Facoltativo) Inserisci una descrizione del account di servizio.
Fai clic su Crea e continua.
(Facoltativo) Fai clic sul campo Seleziona un ruolo.
Seleziona Cloud Run > Cloud Run Invoker.
Fai clic su Fine.
Riga di comando
Crea l'account di servizio:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --display-name "DISPLAYED_SERVICE_ACCOUNT_NAME"
Sostituisci
- SERVICE_ACCOUNT_NAME con un nome in minuscolo univoco all'interno del tuo progetto Google Cloud , ad esempio
my-invoker-service-account-name. - DISPLAYED_SERVICE_ACCOUNT_NAME con il nome che vuoi
visualizzare per questo account di servizio, ad esempio nella console, ad esempio
My Invoker Service Account.
- SERVICE_ACCOUNT_NAME con un nome in minuscolo univoco all'interno del tuo progetto Google Cloud , ad esempio
Per Cloud Run, concedi al tuo account di servizio l'autorizzazione a richiamare il tuo servizio:
gcloud run services add-iam-policy-binding SERVICE \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/run.invoker
Sostituisci
- SERVICE con il nome del servizio che vuoi venga richiamato da Cloud Scheduler.
- SERVICE_ACCOUNT_NAME con il nome del account di servizio.
- PROJECT_ID con l' Google Cloud ID progetto.
Concedi al tuo account di servizio l'accesso al progetto, affinché sia autorizzato a completare azioni specifiche sulle risorse nel progetto:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Sostituisci
RESOURCE_ID: l'ID progetto. Google Cloud
PRINCIPAL: un identificatore per l'entità, o membro, che in genere ha il seguente formato: PRINCIPAL_TYPE:ID. Ad esempio,
user:my-user@example.com. Per un elenco completo dei valori che PRINCIPAL può avere, consulta il riferimento Policy Binding.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Per creare un account di servizio utilizzando Terraform:
Creazione di un job Cloud Scheduler
Dovrai creare un job che richiami il tuo servizio in orari specifici. Puoi utilizzare la console o la riga di comando:
Per creare un job, puoi utilizzare la console o la riga di comando gcloud. Fai clic sulla scheda appropriata:
Console
Visita la pagina della console Cloud Scheduler.
Fai clic su Crea job.

Fornisci un nome per il job.
Specifica la frequenza, o l'intervallo di job, con cui il job deve essere eseguito, utilizzando una stringa di configurazione. Ad esempio, la stringa
0 */3 * * *esegue il job ogni 3 ore. La stringa che fornisci qui può essere qualsiasi stringa compatibile con crontab.Per ulteriori informazioni, consulta Configurare le pianificazioni dei job.
Dall'elenco a discesa, scegli il fuso orario da utilizzare per la frequenza del job.
Specifica
HTTPcome target:Specifica l'URL completo del tuo servizio, ad esempio
https://myservice-abcdef-uc.a.run.appIl job invierà le richieste a questo URL.Specifica il metodo HTTP: il metodo deve corrispondere a quello previsto dal servizio Cloud Run di cui hai eseguito il deployment in precedenza. Il valore predefinito è
POST.(Facoltativo) Specifica i dati da inviare al target. Questi dati vengono inviati nel corpo della richiesta quando viene selezionato il metodo HTTP
POSToPUT.Fai clic su Altro per visualizzare le impostazioni di autenticazione.
Dal menu a discesa, seleziona Aggiungi token OIDC.
Nel campo Service account, copia l'email dell'account di servizio del service account che hai creato in precedenza.
Nel campo Pubblico, copia l'URL completo del tuo servizio.
Fai clic su Crea per creare e salvare il job.
Riga di comando
Devi utilizzare l'autenticazione OIDC per accedere a un servizio Cloud Run autenticato da Cloud Scheduler. L'autenticazione OIDC include i flag account di servizio e del pubblico. Per ulteriori informazioni, consulta Utilizzare l'autenticazione per i target HTTP.
Per creare il job Cloud Scheduler:
gcloud scheduler jobs create http test-job --schedule "5 * * * *"
--http-method=HTTP-METHOD
--uri=SERVICE-URL
--oidc-service-account-email=SERVICE-ACCOUNT-EMAIL
--oidc-token-audience=SERVICE-URL
Sostituisci
- HTTP-METHOD con il metodo HTTP (ad es. GET, POST, PUT e così via).
- SERVICE-URL con l'URL del servizio.
- SERVICE-ACCOUNT-EMAIL con l'indirizzo email del account di servizio.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Per creare un job Cloud Scheduler per il servizio Cloud Run:
Il servizio Cloud Run verrà attivato tramite una richiesta del job Cloud Scheduler alla frequenza che hai definito. Puoi confermare e monitorare questa operazione esaminando i log di questo servizio.
Passaggi successivi
- Logging e visualizzazione log
- Monitoraggio dell'integrità e delle prestazioni
- Triggering da Pub/Sub
- Richiamo con HTTPS