Gestire i cron job

Target Pub/Sub

Se scegli il tipo di target Pub/Sub:

  1. Specifica il nome dell'argomento in cui verrà pubblicato il job. Si tratta di un argomento Pub/Sub che hai già configurato nel tuo progetto.

  2. Specifica un messaggio da inviare all'argomento. Questo viene inviato come parametro data all'interno del messaggio Pub/Sub. Per un esempio di come eseguire questa operazione, consulta la guida rapida.

  3. Aggiungi gli attributi dei messaggi di cui hai bisogno.

  4. Configura eventuali impostazioni aggiuntive utilizzando la sezione Configure optional settings.

Cloud Scheduler pubblicherà i messaggi in questo argomento come account di servizio delle API di Google.

Target HTTP App Engine

Se scegli il tipo di target HTTP App Engine, devi utilizzare l'app App Engine e la regione associate al progetto corrente. Se vuoi utilizzare un'altra app App Engine al di fuori del tuo progetto attuale, scegli HTTP come destinazione, non HTTP App Engine. Le regole firewall di destinazione devono consentire le richieste provenienti dall'intervallo IP 0.1.0.2/32.

Imposta il modulo come segue:

  1. Nell'elenco Tipo target, seleziona HTTP App Engine.

  2. Specifica il nome del servizio App Engine che esegue il gestore per il job Cloud Scheduler. Se omesso, viene utilizzato il servizio default. Se vuoi impostarlo, puoi trovare i nomi dei servizi nella consoleGoogle Cloud .

  3. Se vuoi, specifica la versione. Se non viene impostata, viene utilizzata la versione attualmente pubblicata. Puoi trovare le versioni disponibili nella consoleGoogle Cloud .

  4. Facoltativamente, specifica l'istanza. Se non viene impostato, è possibile utilizzare qualsiasi istanza disponibile. Puoi trovare le versioni disponibili nella consoleGoogle Cloud .

  5. Specifica l'URL relativo dell'endpoint App Engine che verrà contattato dal job. Se utilizzi il valore predefinito /, il job utilizzerà PROJECT-ID.appspot.com, dove PROJECT-ID è l'ID progetto corrente.

  6. Imposta il metodo HTTP che vuoi utilizzare quando viene eseguito il job. Il valore predefinito è POST.

  7. Aggiungi alla richiesta le intestazioni necessarie.

  8. Facoltativamente, specifica i dati del corpo da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando viene selezionato il metodo HTTP POST o PUT.

Gli endpoint App Engine di destinazione devono trovarsi nello stesso progetto e possono essere protetti con login: admin nell'elemento handlers nel file app.yaml.

Target HTTP

Se scegli il tipo di destinazione HTTP:

  1. Specifica l'URL completo dell'endpoint che verrà contattato dal job.

  2. Specifica il metodo HTTP. Il valore predefinito è POST.

  3. (Facoltativo) Specifica i dati da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando viene selezionato il metodo HTTP POST o PUT.

  4. (Facoltativo) Aggiungi le intestazioni necessarie. Se l'endpoint di destinazione richiede una chiave API nell'intestazione, utilizza il nome dell'intestazione previsto dal servizio di destinazione, ad esempio x-api-key o X-Goog-Api-Key. L'utilizzo di api_key come nome dell'intestazione può causare errori di autenticazione.

  5. Per creare un job con target HTTP che richiede l'autenticazione, consulta Utilizza l'autenticazione con i target HTTP.

Gli endpoint HTTP target devono essere accessibili pubblicamente.

Puoi utilizzare Cloud Scheduler per configurare unità di lavoro pianificate, note come cron job, che vengono inviate alle destinazioni in base a una pianificazione ricorrente, chiamata anche intervallo o frequenza del job.

Deve essere eseguita una sola istanza di un job alla volta. In rari casi, è possibile che vengano richieste più istanze dello stesso job. Di conseguenza, il gestore delle richieste deve essere idempotente e il codice deve garantire che non si verifichino effetti collaterali dannosi in questo caso.

Se un job è ancora in esecuzione o in attesa di una risposta dalla destinazione, le altre esecuzioni pianificate del job vengono ignorate fino al termine o al timeout dell'esecuzione corrente. Per saperne di più, consulta Le esecuzioni dei job successive non vengono avviate.

Cloud Scheduler è destinato ai job ripetuti. Se devi eseguire un job una sola volta, valuta la possibilità di utilizzare Cloud Tasks, che può pianificare un'attività con un anticipo massimo di 30 giorni.

Prima di iniziare

Assicurati di aver configurato l'ambiente per Cloud Scheduler.

Scegli un tipo di target

Cloud Scheduler può richiamare i seguenti tipi di target:

Richiama i servizi di destinazione limitati al traffico in entrata interno

Cloud Scheduler può richiamare i seguenti servizi internamente:

  • Cloud Run Functions
  • Cloud Run (sull'URL run.app, non sui domini personalizzati)

Per richiamare questi target internamente, il target deve trovarsi nello stesso progettoGoogle Cloud o nel perimetro dei Controlli di servizio VPC del job Cloud Scheduler.

Per scoprire di più sulla protezione dei target limitando il traffico in entrata, consulta Limitazione del traffico in entrata (per Cloud Run) e Configurazione delle impostazioni della rete (per Cloud Run Functions).

Crea un job

Puoi creare un job utilizzando la console Google Cloud o Google Cloud CLI.

Console

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

    Vai a Cloud Scheduler

  2. Fai clic su Crea job.

  3. Nel campo Nome, fornisci un nome per il job che sia univoco per il progetto.

    Dopo aver eliminato il job associato, puoi riutilizzare il nome di un job in un progetto.

  4. Nell'elenco Regione, seleziona una regione.

    Se utilizzi un target HTTP di App Engine, devi scegliere la stessa regione della tua app App Engine. Per saperne di più, consulta Regioni supportate per target.

  5. (Facoltativo) Fornisci una breve descrizione del job, ad esempio un promemoria della sua funzione.

    Questa descrizione viene visualizzata nella console accanto al nome del job.

  6. Specifica la frequenza con cui deve essere eseguito il job utilizzando una stringa di configurazione.

    Ad esempio, la stringa 0 1 * * 0 esegue il job una volta alla settimana all'01:00 ogni domenica mattina. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Per saperne di più, consulta Configura le pianificazioni dei cron job.

  7. Nell'elenco Fuso orario, scegli il fuso orario da utilizzare per la pianificazione del job.

  8. Fai clic su Continua.

  9. Specifica il Tipo di destinazione:

    • HTTP

    • Pub/Sub: devi specificare il nome dell'argomento Pub/Sub che hai già configurato nel progetto e in cui verrà pubblicato il job.

    • HTTP App Engine: devi utilizzare l'app App Engine e la regione associate al progetto corrente.

  10. Fai clic su Continua.

  11. (Facoltativo) Per configurare un comportamento di ripetizione, fai clic su Configura impostazioni facoltative. Per specificare la durata, utilizza una sequenza di numeri interi decimali non negativi con i seguenti suffissi di unità:

    • h - ora
    • m - minuto
    • s - secondo
    • ms - millisecondo
    • us - microsecondo
    • ns - nanosecondo

    Non sono consentiti valori negativi e frazionari. Il campo Max retry duration supporta solo i valori h, m e s. Sia Min backoff duration sia Max backoff duration supportano il set completo.

  12. (Facoltativo) Per i target HTTP e HTTP App Engine, configura una scadenza per i tentativi di job. Se il gestore delle richieste non risponde entro questa scadenza, la richiesta viene annullata e il tentativo viene contrassegnato come non riuscito. Cloud Scheduler riprova a eseguire il job in base alla configurazione dei nuovi tentativi.

  13. Per creare e salvare il job, fai clic su Crea.

    Il job verrà eseguito con la frequenza specificata.

gcloud

Quando crei un job utilizzando gcloud CLI, utilizzi comandi diversi per ogni tipo di target:

HTTP

Puoi inviare una richiesta a qualsiasi endpoint HTTP o HTTPS. Gli endpoint HTTP target devono essere accessibili pubblicamente.

gcloud scheduler jobs create http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Sostituisci quanto segue:

  • JOB: un nome del job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome di job in un progetto, anche se elimini il job associato.

  • LOCATION: la località in cui eseguire il job.

  • SCHEDULE: la frequenza o l'intervallo di esecuzione del job, ad esempio every 3 hours. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per saperne di più, consulta Configura le pianificazioni dei cron job.

  • URI: l'URI completo dell'endpoint che verrà contattato dal job.

Altri parametri sono descritti nel riferimento della riga di comando gcloud:

  • (Facoltativo) Specifica il metodo HTTP. Il valore predefinito è POST.

  • (Facoltativo) Specifica i dati da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando viene selezionato il metodo HTTP POST o PUT.

  • (Facoltativo) Utilizza il flag --headers per includere le intestazioni della richiesta HTTP. Se l'endpoint di destinazione richiede una chiave API nell'intestazione, utilizza il nome dell'intestazione previsto dal servizio di destinazione, ad esempio x-api-key o X-Goog-Api-Key. L'utilizzo di api_key come nome dell'intestazione può causare errori di autenticazione.

  • (Facoltativo) Imposta i valori di ripetizione, che specificano come deve essere ripetuto il job App Engine in caso di errore. Nella maggior parte dei casi, i valori predefiniti saranno sufficienti.

  • Per creare un job con target HTTP che richiede l'autenticazione, consulta Utilizzo dell'autenticazione con i target HTTP.

Esempio

gcloud scheduler jobs create http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Devi utilizzare un argomento Pub/Sub che hai già configurato nel tuo progetto. Cloud Scheduler pubblicherà i messaggi in questo argomento come account di servizio API di Google.

gcloud scheduler jobs create pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Sostituisci quanto segue:

  • JOB: un nome del job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome di job in un progetto, anche se elimini il job associato.

  • LOCATION: la località in cui eseguire il job.

  • SCHEDULE: la frequenza o l'intervallo di esecuzione del job, ad esempio every 3 hours. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per saperne di più, consulta Configura le pianificazioni dei cron job.

  • TOPIC: il nome dell'argomento in cui il job pubblicherà i dati. Utilizza il flag --message-body o --message-body-from-file per specificare un messaggio da inviare all'argomento. Questo viene inviato come parametro data all'interno del messaggio Pub/Sub. Per un esempio di come eseguire questa operazione, consulta la guida rapida.

Altri parametri sono descritti nel riferimento della riga di comando gcloud.

Esempio

gcloud scheduler jobs create pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic \
    --message-body "Hello"

HTTP App Engine

La destinazione App Engine HTTP è disponibile solo per l'app App Engine associata al progetto corrente. Se vuoi utilizzare un'altra app App Engine al di fuori del progetto corrente, scegli HTTP come target, non App Engine HTTP. Le regole firewall di destinazione devono consentire le richieste provenienti dall'intervallo IP 0.1.0.2/32.

Gli endpoint di App Engine possono essere protetti con login: admin nell'elemento handlers nel file app.yaml.

gcloud scheduler jobs create app-engine \
    --JOB=JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Sostituisci quanto segue:

  • JOB: un nome del job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome di job in un progetto, anche se elimini il job associato.

  • LOCATION: la località in cui eseguire il job. Deve corrispondere alla località della tua app App Engine.

  • SCHEDULE: la frequenza o l'intervallo di esecuzione del job, ad esempio every 3 hours. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per saperne di più, consulta Configura le pianificazioni dei cron job.

Altri parametri sono descritti nel riferimento della riga di comando gcloud:

  • Specifica l'URL relativo dell'endpoint App Engine che verrà contattato dal job. Se utilizzi il valore predefinito /, il job utilizzerà PROJECT-ID.appspot.com, dove PROJECT-ID è l'ID progetto corrente.

  • Specifica il nome del servizio App Engine che esegue il gestore per il job Cloud Scheduler. Se omesso, viene utilizzato il servizio default. Se vuoi impostarlo, puoi trovare i nomi dei servizi nella consoleGoogle Cloud .

  • (Facoltativo) Imposta il metodo HTTP che vuoi utilizzare quando viene eseguito il job. Il valore predefinito è POST.

  • (Facoltativo) Specifica la versione. Se non viene impostata, viene utilizzata la versione attualmente pubblicata. Puoi trovare le versioni disponibili nella consoleGoogle Cloud .

  • (Facoltativo) Specifica l'istanza. Se non viene impostato, è possibile utilizzare qualsiasi istanza disponibile. Puoi trovare le versioni disponibili nella consoleGoogle Cloud .

  • (Facoltativo) Specifica i dati da inviare alla destinazione. Questi dati vengono inviati nel corpo della richiesta come byte quando viene selezionato il metodo HTTP POST o PUT.

  • (Facoltativo) Imposta i valori di ripetizione, che specificano come deve essere ripetuto il job App Engine in caso di errore. Nella maggior parte dei casi, i valori predefiniti sono sufficienti.

Esempio

gcloud scheduler jobs create app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Modifica un job

Puoi modificare la configurazione di un job.

Console

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

    Vai a Cloud Scheduler

  2. Seleziona il job da modificare.

  3. Fai clic su Modifica.

  4. Segui i passaggi per definire la pianificazione, configurare l'esecuzione e configurare le impostazioni facoltative durante la creazione di un job.

gcloud

Quando modifichi un job utilizzando gcloud CLI, utilizzi comandi diversi per ogni tipo di target:

HTTP

Puoi inviare una richiesta a qualsiasi endpoint HTTP o HTTPS. Gli endpoint HTTP target devono essere accessibili pubblicamente.

gcloud scheduler jobs update http JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --uri=URI

Sostituisci quanto segue:

  • JOB: un nome del job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome di job in un progetto, anche se elimini il job associato.

  • LOCATION: la località in cui viene eseguito il job. Se non specifichi la località, gcloud CLI utilizzerà la località predefinita. Se il job che vuoi modificare si trova in un'altra località, devi specificare la località oltre a NAME per identificare il job. Non puoi aggiornare la località del job.

  • SCHEDULE: la frequenza o l'intervallo di esecuzione del job, ad esempio every 3 hours. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per saperne di più, consulta Configura le pianificazioni dei cron job.

  • URI: l'URI completo dell'endpoint che verrà contattato dal job.

Altri parametri sono descritti nel riferimento della riga di comando gcloud.

Esempio

gcloud scheduler jobs update http my-http-job \
    --schedule "0 1 * * 0" \
    --uri "http://myproject/my-url.com" \
    --http-method GET

Pub/Sub

Devi utilizzare un argomento Pub/Sub che hai già configurato nel tuo progetto. Cloud Scheduler pubblicherà i messaggi in questo argomento come account di servizio API di Google.

gcloud scheduler jobs update pubsub JOB \
    --location=LOCATION \
    --schedule=SCHEDULE \
    --topic=TOPIC

Sostituisci quanto segue:

  • JOB: un nome del job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome di job in un progetto, anche se elimini il job associato.

  • LOCATION: la località in cui viene eseguito il job. Se non specifichi la località, gcloud CLI utilizzerà la località predefinita. Se il job che vuoi modificare si trova in un'altra località, devi specificare la località oltre a NAME per identificare il job. Non puoi aggiornare la località del job.

  • SCHEDULE: la frequenza o l'intervallo di esecuzione del job, ad esempio every 3 hours. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per saperne di più, consulta Configura le pianificazioni dei cron job.

  • TOPIC: il nome dell'argomento in cui il job pubblicherà i dati. Utilizza il flag --message-body o --message-body-from-file per specificare un messaggio da inviare all'argomento. Questo viene inviato come parametro data all'interno del messaggio Pub/Sub. Per un esempio di come eseguire questa operazione, consulta la guida rapida.

Altri parametri sono descritti nel riferimento della riga di comando gcloud.

Esempio

gcloud scheduler jobs update pubsub myjob \
    --schedule "0 1 * * 0" \
    --topic cron-topic --message-body "Hello"

HTTP App Engine

La destinazione App Engine HTTP è disponibile solo per l'app App Engine associata al progetto corrente. Se vuoi utilizzare un'altra app App Engine al di fuori del progetto corrente, scegli HTTP come target, non App Engine HTTP.

Gli endpoint di App Engine possono essere protetti con login: admin nell'elemento handlers nel file app.yaml.

gcloud scheduler jobs update app-engine JOB \
    --location=LOCATION \
    --schedule=SCHEDULE

Sostituisci quanto segue:

  • JOB: un nome del job che deve essere univoco nel progetto. Tieni presente che non puoi riutilizzare un nome di job in un progetto, anche se elimini il job associato.

  • LOCATION: la località in cui viene eseguito il job (corrisponde alla località dell'app App Engine di destinazione). Se non specifichi la località, gcloud CLI utilizzerà la località predefinita. Se il job che vuoi modificare si trova in un'altra località, devi specificare la località oltre a NAME per identificare il job. Non puoi aggiornare la località del job.

  • SCHEDULE: la frequenza o l'intervallo di esecuzione del job, ad esempio every 3 hours. La stringa che fornisci qui può essere qualsiasi stringa compatibile con unix-cron. Anche se non ne consigliamo più l'utilizzo, la sintassi cron di App Engine legacy è ancora supportata per i job esistenti.

    Per saperne di più, consulta Configura le pianificazioni dei cron job.

Altri parametri sono descritti nel riferimento della riga di comando gcloud.

Esempio

gcloud scheduler jobs update app-engine my-appengine-job \
    --schedule "0 1 * * 0" \
    --relative-url "/cron-handler"

Metti in pausa un job

Puoi mettere in pausa l'esecuzione di un job.

Console

  1. Nella console Google Cloud , vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da mettere in pausa.

  3. Fai clic su Metti in pausa.

gcloud

  1. Apri una finestra del terminale sulla macchina su cui hai installato gcloud CLI.

  2. Esegui il comando:

     gcloud scheduler jobs pause MY_JOB
    

    Sostituisci MY_JOB con il nome del job da mettere in pausa.

Mentre un job è in pausa, puoi anche modificarlo. Dopo aver modificato il job, questo rimane in pausa finché non lo riprendi.

Riprendi un job

Puoi riprendere l'esecuzione di un job in pausa.

Console

  1. Nella console Google Cloud , vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da riprendere.

    Il job deve essere già in pausa.

  3. Fai clic su Riprendi.

gcloud

  1. Apri una finestra del terminale sulla macchina su cui hai installato gcloud CLI.

  2. Esegui il comando:

     gcloud scheduler jobs resume MY_JOB
    

    Sostituisci MY_JOB con il nome del job da riprendere.

Elimina un job

Puoi eliminare un job.

Console

  1. Nella console Google Cloud , vai a Cloud Scheduler.

    Vai a Cloud Scheduler

  2. Seleziona il job da eliminare.

  3. Fai clic su Elimina.

gcloud

  1. Apri una finestra del terminale sulla macchina su cui hai installato gcloud CLI.

  2. Esegui il comando:

     gcloud scheduler jobs delete MY_JOB
    

    Sostituisci MY_JOB con il nome del job da eliminare.