Puoi utilizzare Cloud Scheduler per attivare in modo sicuro un Cloud Run servizio in base a una pianificazione. in modo simile all'utilizzo dei cron jobs.
I possibili casi d'uso includono:
- Esecuzione dei backup a tempo
- Eseguire attività di amministrazione ricorrenti, ad esempio:
- Rigenerare una Sitemap
- Eliminazione di dati, contenuti, configurazioni o revisioni obsoleti
- Sincronizzazione dei contenuti tra sistemi di dati
- Elaborazione delle notifiche via email giornaliere
- Verifica e report sull'accesso ai servizi downstream
- Generazione di documenti, ad esempio fatture
Questa pagina mostra come utilizzare Cloud Scheduler in modo sicuro con Cloud Run nello stesso progetto Google Cloud.
Prima di iniziare
Abilita l'API Cloud Scheduler nel progetto che stai utilizzando.
Creazione e 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 da cui il tuo servizio si aspetta di ricevere le richieste di job, ad esempio
GET
oPOST
. Quando crei il job pianificato che invoca il servizio, devi specificare il metodo HTTP corrispondente.Quando esegui il deployment del servizio che stai utilizzando con Cloud Scheduler, assicurati di NON consentire le chiamate non autenticate.
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 concedi a questo account di servizio l'autorizzazione per richiamare Cloud Run completamente gestito di Google Cloud. Puoi usare un account di servizio esistente per rappresentare Cloud Scheduler, oppure crearne uno nuovo.
Per creare un account di servizio e concedergli l'autorizzazione a invocare il servizio Cloud Run:
Console
Nella console Google Cloud, vai alla pagina Account di servizio.
Seleziona un progetto.
Inserisci il nome di un account di servizio da visualizzare nella console Google Cloud.
La console Google Cloud 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 dell'account di servizio.
Fai clic su Crea e continua.
(Facoltativo) Fai clic sul campo Seleziona un ruolo.
Seleziona Cloud Run > Invoker di Cloud Run.
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 nome 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 nome minuscolo univoco all'interno
del tuo progetto Google Cloud, ad esempio
Per Cloud Run, concedi all'account di servizio l'autorizzazione per invocare il 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 ti interessa richiamate da Cloud Scheduler.
- SERVICE_ACCOUNT_NAME con il nome dell'account di servizio.
- PROJECT_ID con il tuo ID progetto Google Cloud.
Concedi al tuo account di servizio l'accesso al progetto in modo che l'autorizzazione a completare azioni specifiche sulle risorse nel tuo progetto:
gcloud projects add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=roles/run.invoker
Sostituisci
RESOURCE_ID: l'ID del tuo progetto Google Cloud.
PRINCIPAL: un identificatore per il principale o il membro, che in genere ha la seguente forma:PRINCIPAL_TYPE:ID. Ad esempio,
user:my-user@example.com
. Per un elenco completo dei valori che PRINCIPAL può avere, consulta Riferimento all'associazione dei criteri.
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 servizio in momenti 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 del job, a cui deve essere eseguito il job, 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 compatibile con crontab stringa.Per ulteriori informazioni, consulta Configurazione delle pianificazioni dei job.
Dall'elenco a discesa, scegli il fuso orario da utilizzare per il lavoro frequenza.
Specifica
HTTP
come target:Specifica l'URL completo del servizio, ad esempio
https://myservice-abcdef-uc.a.run.app
. Il job invierà richieste a questo URL.Specifica il metodo HTTP: deve corrispondere a quanto già distribuito in precedenza. Il valore predefinito è
POST
.Se vuoi, specifica i dati da inviare al target. Questi dati vengono inviati il corpo della richiesta quando viene selezionato il metodo HTTP
POST
oPUT
.Fai clic su Altro per visualizzare le impostazioni di autenticazione.
Dal menu a discesa, seleziona Aggiungi token OIDC.
Nel campo Account di servizio, copia l'indirizzo email dell'account di servizio 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 gli indicatori account di servizio e pubblico. Per ulteriori informazioni, consulta Utilizzare l'autenticazione per le destinazioni 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 tuo servizio.
- SERVICE-ACCOUNT-EMAIL con l'indirizzo email del tuo 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 per monitorarlo esaminando i log per il servizio.
Passaggi successivi
- Logging e visualizzazione dei log
- Monitorare lo stato di integrità e le prestazioni
- Attivazione da Pub/Sub
- Richiamare con HTTPS