Questo documento illustra le nozioni di base per la creazione di job batch: come creare ed eseguire un job basato su uno script o un'immagine container e utilizzare variabili predefinite e personalizzate. Per saperne di più sulla creazione e sull'esecuzione di job, consulta Panoramica sulla creazione ed esecuzione dei job.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta Inizia a utilizzare Batch e abilita Batch completando i prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti i seguenti ruoli IAM:
-
Editor job batch (
roles/batch.jobsEditor
) nel progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) sull'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite i ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
-
Ogni volta che crei un job, assicurati che abbia una configurazione di rete valida.
- Se non hai requisiti di rete specifici per il carico di lavoro o il progetto e non hai modificato la rete predefinita per il tuo progetto, non è richiesta alcuna azione da parte tua.
- In caso contrario, dovrai configurare il networking quando crei un job. Scopri come configurare il networking per un job prima di crearne uno di base, in modo da poter modificare gli esempi riportati di seguito per soddisfare i requisiti di networking.
-
Ogni volta che crei un job, assicurati che abbia un ambiente di sistema operativo VM valido.
- Se non hai requisiti specifici per l'immagine del sistema operativo VM o il disco di avvio per il carico di lavoro o il progetto, non è richiesta alcuna azione.
- In caso contrario, devi preparare un'opzione valida per l'ambiente del sistema operativo VM. Prima di creare un job di base, consenti la configurazione predefinita per l'ambiente del sistema operativo VM o scopri come personalizzare l'ambiente del sistema operativo VM in modo da poter modificare gli esempi riportati di seguito per soddisfare i tuoi requisiti.
Crea un job di base
Per informazioni su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la
risorsa REST projects.locations.jobs
.
Riassumendo, un job consiste in un array di una o più attività che eseguono tutti uno o più eseguibili, che sono gli script eseguibili e/o i container del tuo job.
Per coprire le nozioni di base, questa sezione spiega come creare un job di esempio con
un solo eseguibile, uno script o un'immagine container:
- Se vuoi utilizzare Batch per scrivere job che eseguono un'immagine container, consulta Creare un job container.
- In caso contrario, se non sai se vuoi utilizzare le immagini container o se non hai dimestichezza con i container, ti consigliamo di creare un job di script.
Il job di esempio per entrambi i tipi di job contiene un gruppo di attività con un array di 4 attività. Ogni attività stampa un messaggio e il relativo indice nell'output standard e in Cloud Logging. La definizione di questo job specifica un parallelismo pari a 2, il che indica che il job deve essere eseguito su 2 VM per consentire l'esecuzione di due attività alla volta.
Crea un job container di base
Puoi selezionare o creare un'immagine container per fornire il codice e le dipendenze per l'esecuzione del job da qualsiasi ambiente di computing. Per ulteriori informazioni, consulta Utilizzo delle immagini container ed Esecuzione di container su istanze VM.
Puoi creare un job container di base utilizzando la console Google Cloud, gcloud CLI, API Batch, Go, Java, Node.js, Python o C++.
Console
Per creare un job di container di base utilizzando la console Google Cloud, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Elenco job.
Fai clic su
Crea. Viene visualizzata la pagina Crea job batch. Nel riquadro a sinistra, è selezionata la pagina Dettagli job.Configura la pagina Dettagli job:
(Facoltativo) Nel campo Nome job, personalizza il nome del job.
Ad esempio, inserisci
example-basic-job
.Configura la sezione Dettagli attività:
Nella finestra Nuovo eseguibile, aggiungi almeno uno script o un contenitore da eseguire per questo job.
Ad esempio, per aggiungere un container, segui questi passaggi:
Seleziona Container image URL (URL immagine container) (impostazione predefinita).
Nel campo URL immagine container, inserisci l'URL per un'immagine container da eseguire per ogni attività in questo job.
Ad esempio, per utilizzare l'immagine container Docker
busybox
, inserisci il seguente URL:gcr.io/google-containers/busybox
(Facoltativo) Per eseguire l'override del comando
ENTRYPOINT
dell'immagine container, inserisci un comando nel campo Punto di ingresso.Ad esempio, inserisci quanto segue:
/bin/sh
(Facoltativo) Per eseguire l'override del comando
CMD
dell'immagine container, segui questi passaggi:Seleziona la casella di controllo Esegui l'override del comando CMD dell'immagine container. Viene visualizzata una casella di testo.
Inserisci nella casella di testo uno o più comandi, suddividendo ogni comando con una nuova riga.
Ad esempio, inserisci i seguenti comandi:
-c echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
Fai clic su Fine.
Nel campo Conteggio attività, inserisci il numero di attività per questo job. Il valore deve essere un numero intero compreso tra
1
e il limite di attività per gruppo di attività.Ad esempio, inserisci
4
.Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente. Il numero non può essere superiore al numero totale di attività e deve essere un numero intero compreso tra
1
e il limite di attività parallele per job.Ad esempio, inserisci
2
.
Configura la pagina Specifiche delle risorse:
Nel riquadro a sinistra, fai clic su Specifiche della risorsa. Si apre la pagina Specifiche della risorsa.
Nella sezione Modello di provisioning delle VM, seleziona una delle seguenti opzioni per il modello di provisioning per le VM di questo job:
Se il tuo job è in grado di supportare il prerilascio e vuoi VM scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la località per questo lavoro:
Nel campo Regione, seleziona una regione.
Ad esempio, seleziona
us-central1 (Iowa)
(impostazione predefinita).Nel campo Zona, esegui una delle seguenti operazioni:
Se vuoi limitare l'esecuzione del job solo in una zona specifica, seleziona una zona.
In caso contrario, seleziona qualsiasi.
Ad esempio, seleziona qualsiasi (impostazione predefinita).
Seleziona una delle seguenti famiglie di macchine:
Per carichi di lavoro comuni, fai clic su Uso generico.
Per i carichi di lavoro che richiedono prestazioni elevate, fai clic su Ottimizzato per il calcolo.
Per carichi di lavoro che richiedono molta memoria, fai clic su Ottimizzato per la memoria.
Ad esempio, fai clic su Uso generico (impostazione predefinita).
Nel campo Serie, seleziona una serie di macchine per le VM di questo job.
Ad esempio, se hai selezionato Uso generico per la famiglia di macchine, seleziona E2 (valore predefinito).
Nel campo Tipo di macchina, seleziona un tipo di macchina per le VM di questo job.
Ad esempio, se hai selezionato E2 per la serie di macchine, seleziona e2-medium (2 vCPU, 4 GB di memoria) (valore predefinito).
Configura la quantità di risorse VM richieste per ogni attività:
Nel campo Core, inserisci la quantità di vCPUs per attività.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Memoria, inserisci la quantità di RAM in GB per attività.
Ad esempio, inserisci
0.5
(valore predefinito).
Facoltativo: per rivedere la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job creato.
gcloud
Per creare un job container di base utilizzando gcloud CLI, segui questi passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job. Ad esempio, per creare un job container di base, crea un file JSON con il contenuto seguente. Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST
projects.locations.jobs
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { CONTAINER } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
Sostituisci quanto segue:
CONTAINER
: il container eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non viene specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non viene specificato, il valore viene impostato su2000
(2 GB).MAX_RETRY_COUNT
: facoltativo. Il numero massimo di nuovi tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non viene specificato, il valore è impostato su0
, il che significa che non puoi riprovare l'attività. Per saperne di più sul campomaxRetryCount
, consulta Automatizzare i nuovi tentativi di attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui un'attività può essere eseguita prima che l'attività venga ritentata o non vada a buon fine, formattato come valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per maggiori informazioni sul campomaxRunDuration
, consulta Limitare i tempi di esecuzione per attività ed eseguibili utilizzando i timeout.TASK_COUNT
: facoltativo. Il numero di attività per il job. Il valore deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non viene specificato, il valore è impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite contemporaneamente dal job. Il numero non può essere superiore al numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non viene specificato, il valore è impostato su1
.
Crea un job utilizzando il comando
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la località del job.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
Ad esempio, per creare un job che esegue attività utilizzando
l'immagine container Docker busybox
:
Crea un file JSON nella directory corrente denominata
hello-world-container.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." ] } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Esegui questo comando:
gcloud batch jobs submit example-container-job \ --location us-central1 \ --config hello-world-container.json
API
Per creare un job container di base utilizzando l'API Batch, utilizza
il metodo jobs.create
.
Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la risorsa REST projects.locations.jobs
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
CONTAINER
}
}
],
"computeResource": {
"cpuMilli": CORES,
"memoryMib": MEMORY
},
"maxRetryCount": MAX_RETRY_COUNT,
"maxRunDuration": "MAX_RUN_DURATION"
},
"taskCount": TASK_COUNT,
"parallelism": PARALLELISM
}
]
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.LOCATION
: la località del job.JOB_NAME
: il nome del job.CONTAINER
: il container eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità di millisecondi. Se il campocpuMilli
non viene specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non viene specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: facoltativo. Il numero massimo di nuovi tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non viene specificato, il valore è impostato su0
, il che significa che non puoi riprovare l'attività. Per saperne di più sul campomaxRetryCount
, consulta Automatizzare i nuovi tentativi di attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui un'attività può essere eseguita prima che l'attività venga ritentata o non vada a buon fine, formattato come valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per maggiori informazioni sul campomaxRunDuration
, consulta Limitare i tempi di esecuzione per attività ed eseguibili utilizzando i timeout.TASK_COUNT
: facoltativo. Il numero di attività per il job, che deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non viene specificato, il valore è impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite contemporaneamente dal job. Il numero non può essere superiore al numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non viene specificato, il valore è impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando
l'immagine container Docker busybox
,
utilizza la richiesta seguente:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-container-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
]
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
dove PROJECT_ID
è l'ID progetto del tuo progetto.
Go
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API C++ Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Crea un job di script di base
Puoi creare un job di script di base utilizzando la console Google Cloud, gcloud CLI, l'API Batch, Go, Java, Node.js, Python o C++.
Console
Per creare un job di script di base utilizzando la console Google Cloud, segui questi passaggi:
Nella console Google Cloud, vai alla pagina Elenco job.
Fai clic su
Crea. Viene visualizzata la pagina Crea job batch. Nel riquadro a sinistra, è selezionata la pagina Dettagli job.Configura la pagina Dettagli job:
(Facoltativo) Nel campo Nome job, personalizza il nome del job.
Ad esempio, inserisci
example-basic-job
.Configura la sezione Dettagli attività:
Nella finestra Nuovo eseguibile, aggiungi almeno uno script o un contenitore da eseguire per questo job.
Ad esempio, per aggiungere uno script, segui questi passaggi:
Seleziona Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci uno script da eseguire per ogni attività del job.
Ad esempio, inserisci lo script seguente:
echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks.
Fai clic su Fine.
Nel campo Conteggio attività, inserisci il numero di attività per questo job. Il valore deve essere un numero intero compreso tra
1
e il limite di attività per gruppo di attività.Ad esempio, inserisci
4
.Nel campo Parallelismo, inserisci il numero di attività da eseguire contemporaneamente. Il numero non può essere superiore al numero totale di attività e deve essere un numero intero compreso tra
1
e il limite di attività parallele per job.Ad esempio, inserisci
2
.
Configura la pagina Specifiche delle risorse:
Nel riquadro a sinistra, fai clic su Specifiche della risorsa. Si apre la pagina Specifiche della risorsa.
Nella sezione Modello di provisioning delle VM, seleziona una delle seguenti opzioni per il modello di provisioning per le VM di questo job:
Se il tuo job è in grado di supportare il prerilascio e vuoi VM scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la località per questo lavoro:
Nel campo Regione, seleziona una regione.
Ad esempio, seleziona
us-central1 (Iowa)
(impostazione predefinita).Nel campo Zona, esegui una delle seguenti operazioni:
Se vuoi limitare l'esecuzione di questo job solo in una zona specifica, seleziona una zona.
In caso contrario, seleziona qualsiasi.
Ad esempio, seleziona qualsiasi (impostazione predefinita).
Seleziona una delle seguenti famiglie di macchine:
Per carichi di lavoro comuni, fai clic su Uso generico.
Per i carichi di lavoro che richiedono prestazioni elevate, fai clic su Ottimizzato per il calcolo.
Per carichi di lavoro che richiedono molta memoria, fai clic su Ottimizzato per la memoria.
Ad esempio, fai clic su Uso generico (impostazione predefinita).
Nel campo Serie, seleziona una serie di macchine per le VM di questo job.
Ad esempio, se hai selezionato Uso generico per la famiglia di macchine, seleziona E2 (valore predefinito).
Nel campo Tipo di macchina, seleziona un tipo di macchina per le VM di questo job.
Ad esempio, se hai selezionato E2 per la serie di macchine, seleziona e2-medium (2 vCPU, 4 GB di memoria) (valore predefinito).
Configura la quantità di risorse VM richieste per ogni attività:
Nel campo Core, inserisci la quantità di vCPUs per attività.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Memoria, inserisci la quantità di RAM in GB per attività.
Ad esempio, inserisci
0.5
(valore predefinito).
Facoltativo: per rivedere la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job creato.
gcloud
Per creare un job di script di base utilizzando gcloud CLI, segui questi passaggi:
Crea un file JSON che specifichi i dettagli di configurazione del job. Ad esempio, per creare un job di script di base, crea un file JSON con il contenuto seguente. Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa REST
projects.locations.jobs
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { SCRIPT } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
Sostituisci quanto segue:
SCRIPT
: lo script eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non viene specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non viene specificato, il valore viene impostato su2000
(2 GB).MAX_RETRY_COUNT
: facoltativo. Il numero massimo di nuovi tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non viene specificato, il valore è impostato su0
, il che significa che non puoi riprovare l'attività. Per saperne di più sul campomaxRetryCount
, consulta Automatizzare i nuovi tentativi di attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui un'attività può essere eseguita prima che l'attività venga ritentata o non vada a buon fine, formattato come valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per maggiori informazioni sul campomaxRunDuration
, consulta Limitare i tempi di esecuzione per attività ed eseguibili utilizzando i timeout.TASK_COUNT
: facoltativo. Il numero di attività per il job. Il valore deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non viene specificato, il valore è impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite contemporaneamente dal job. Il numero non può essere superiore al numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non viene specificato, il valore è impostato su1
.
Crea un job utilizzando il comando
gcloud batch jobs submit
.gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Sostituisci quanto segue:
JOB_NAME
: il nome del job.LOCATION
: la località del job.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
Ad esempio, per creare un job che esegue attività utilizzando uno script:
Crea un file JSON nella directory corrente denominata
hello-world-script.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Esegui questo comando:
gcloud batch jobs submit example-script-job \ --location us-central1 \ --config hello-world-script.json
API
Per creare un job di script di base utilizzando l'API Batch, utilizza il
metodo jobs.create
.
Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la risorsa REST projects.locations.jobs
.
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
SCRIPT
}
}
],
"computeResource": {
"cpuMilli": CORES,
"memoryMib": MEMORY
},
"maxRetryCount": MAX_RETRY_COUNT,
"maxRunDuration": "MAX_RUN_DURATION"
},
"taskCount": TASK_COUNT,
"parallelism": PARALLELISM
}
]
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.LOCATION
: la località del job.JOB_NAME
: il nome del job.SCRIPT
: lo script eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità di millisecondi. Se il campocpuMilli
non viene specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non viene specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: facoltativo. Il numero massimo di nuovi tentativi per un'attività. Il valore deve essere un numero intero compreso tra0
e10
. Se il campomaxRetryCount
non viene specificato, il valore è impostato su0
, il che significa che non puoi riprovare l'attività. Per saperne di più sul campomaxRetryCount
, consulta Automatizzare i nuovi tentativi di attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui un'attività può essere eseguita prima che l'attività venga ritentata o non vada a buon fine, formattato come valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per maggiori informazioni sul campomaxRunDuration
, consulta Limitare i tempi di esecuzione per attività ed eseguibili utilizzando i timeout.TASK_COUNT
: facoltativo. Il numero di attività per il job. Il valore deve essere un numero intero compreso tra1
e il limite di attività per gruppo di attività. Se il campotaskCount
non viene specificato, il valore è impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite contemporaneamente dal job. Il numero non può essere superiore al numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non viene specificato, il valore è impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando uno script, utilizza la richiesta seguente:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-script-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
},
"maxRetryCount": 2,
"maxRunDuration": "3600s"
},
"taskCount": 4,
"parallelism": 2
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
},
"labels": {
"department": "finance",
"env": "testing"
},
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
dove PROJECT_ID
è l'ID progetto del tuo progetto.
Go
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per maggiori informazioni, consulta la documentazione di riferimento dell'API C++ Batch.
Per eseguire l'autenticazione in modalità batch, configura le Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Utilizza le variabili di ambiente
Utilizza le variabili di ambiente quando scrivi un'immagine container o uno script che vuoi eseguire con un job. Puoi utilizzare qualsiasi variabile di ambiente predefinita per tutti i job batch e qualsiasi variabile di ambiente personalizzata definita durante la creazione del job.
Utilizza le variabili di ambiente predefinite
Per impostazione predefinita, gli elementi eseguibili nel job possono utilizzare le seguenti variabili di ambiente predefinite:
BATCH_TASK_COUNT
: il numero totale di attività in questo gruppo di attività.BATCH_TASK_INDEX
: il numero di indice di questa attività nel gruppo di attività. L'indice della prima attività è0
e viene incrementato per ogni attività aggiuntiva.BATCH_HOSTS_FILE
: il percorso di un file che elenca tutte le istanze VM in esecuzione in questo gruppo di attività. Per utilizzare questa variabile di ambiente, il camporequireHostsFile
deve essere impostato sutrue
.BATCH_TASK_RETRY_ATTEMPT
: il numero di volte in cui è già stata eseguita questa attività. Il valore è0
durante il primo tentativo di un'attività e viene incrementato a ogni tentativo successivo. Il numero totale di nuovi tentativi consentiti per un'attività è determinato dal valore del campomaxRetryCount
, che è0
se non è definito. Per saperne di più sui nuovi tentativi, vedi Automatizzare i nuovi tentativi delle attività.
Per un esempio di come utilizzare le variabili di ambiente predefinite, vedi gli esempi precedenti eseguibili in Creare un job di base di questo documento.
Definizione e utilizzo delle variabili di ambiente personalizzate
Se vuoi, puoi definire una o più variabili di ambiente personalizzate in un job.
Devi definire ogni variabile in un ambiente specifico in base all'ambito desiderato dei dati:
Per una variabile che ha lo stesso valore per tutte le attività, utilizza una delle seguenti opzioni:
Se la variabile ha lo stesso valore per tutti gli elementi eseguibili, utilizza l'ambiente di tutti gli elementi eseguibili (sottocampo
environment
ditaskSpec
).In caso contrario, se la variabile ha un valore separato per tutti gli elementi eseguibili, utilizza uno o più ambienti di elementi eseguibili specifici (campo secondario
environment
dirunnables[]
).
In caso contrario, per una variabile array che ha un valore separato per ogni attività, utilizza l'ambiente di tutte le attività (
taskEnvironment
).
Nell'ambiente selezionato, definisci il nome e i valori di ogni variabile utilizzando uno dei seguenti campi secondari di ambiente:
Per definire la variabile direttamente nel file JSON di configurazione del job, utilizza il sottocampo Variabili standard (
variables
), come mostrato in questa sezione. Questa opzione è consigliata per i dati che non vuoi criptare.Per definire la variabile utilizzando dati criptati, puoi utilizzare Secret Manager o Cloud Key Management Service:
Per utilizzare i contenuti criptati di un secret di Secret Manager esistente, utilizza il campo secondario delle variabili secret (
secretVariables
). Per maggiori informazioni sull'utilizzo dei secret in un job, consulta Proteggere i dati sensibili utilizzando Secret Manager.Per utilizzare i contenuti criptati di una chiave Cloud Key Management Service esistente, utilizza il campo secondario delle variabili criptate (
encryptedVariables
). Per ulteriori informazioni sulle chiavi Cloud KMS, consulta la documentazione di Cloud Key Management Service.
Puoi definire e utilizzare le variabili di ambiente personalizzate per il tuo job usando gcloud CLI o l'API Batch. I seguenti esempi spiegano come creare due job che definiscono e utilizzano variabili standard. Il primo job di esempio ha una variabile per uno specifico job eseguibile. Il secondo job di esempio ha una variabile array, che ha un valore diverso per ogni attività.
gcloud
Se vuoi definire un job che passa una variabile di ambiente a un eseguibile che viene eseguito da ogni attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per una variabile eseguibile. In caso contrario, se vuoi definire un job che passa un elenco di variabili di ambiente a diverse attività in base all'indice delle attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definisci e utilizza una variabile di ambiente per un'esecuzione eseguibile
Per creare un job che passa le variabili di ambiente a un elemento eseguibile utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
e specifica le variabili di ambiente nel file di configurazione del job.
Ad esempio, per creare un job di script che definisce una variabile di ambiente e la passa agli script di tre attività, effettua la seguente richiesta:
Crea un file JSON nella directory corrente denominata
hello-world-environment-variables.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello ${VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." }, "environment": { "variables": { "VARIABLE_NAME": "VARIABLE_VALUE" } } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 } }, "taskCount": 3, "parallelism": 1 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] } }
Sostituisci quanto segue:
VARIABLE_NAME
: il nome della variabile di ambiente passata a ogni attività. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.VARIABLE_VALUE
: facoltativo. Il valore della variabile di ambiente passata a ogni attività.
Esegui questo comando:
gcloud batch jobs submit example-environment-variables-job \ --location us-central1 \ --config hello-world-environment-variables.json
Definisci e utilizza una variabile di ambiente per ogni attività
Per creare un job che passa le variabili di ambiente a un'attività in base all'indice dell'attività utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
e specifica il campo dell'array taskEnvironments
nel file di configurazione del job.
Ad esempio, per creare un job che includa un array di tre variabili di ambiente con nomi corrispondenti e valori diversi e passa le variabili di ambiente agli script delle attività con indici corrispondenti agli indici delle variabili di ambiente nell'array:
Crea un file JSON nella directory corrente denominata
hello-world-task-environment-variables.json
con i seguenti contenuti:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello ${TASK_VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." }, } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 } }, "taskCount": 3, "taskEnvironments": [ { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_0" } }, { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_1" } }, { "variables": { "TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_2" } } ] } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] } }
Sostituisci quanto segue:
TASK_VARIABLE_NAME
: il nome delle variabili di ambiente delle attività passate alle attività con indici corrispondenti. Per convenzione, i nomi variabile di ambiente sono in lettere maiuscole.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passata alla prima attività, per la qualeBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore della variabile di ambiente passata alla seconda attività, per la qualeBATCH_TASK_INDEX
è uguale a1
.TASK_VARIABLE_VALUE_2
: il valore della variabile di ambiente passata alla terza attività, per la qualeBATCH_TASK_INDEX
è uguale a2
.
Esegui questo comando:
gcloud batch jobs submit example-task-environment-variables-job \ --location us-central1 \ --config hello-world-task-environment-variables.json
API
Se vuoi definire un job che passa una variabile di ambiente a un eseguibile che viene eseguito da ogni attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per una variabile eseguibile. In caso contrario, se vuoi definire un job che passa un elenco di variabili di ambiente a diverse attività in base all'indice delle attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definisci e utilizza una variabile di ambiente per un'esecuzione eseguibile
Per creare un job che passa le variabili di ambiente a un eseguibile
utilizzando l'API Batch, utilizza il
comando gcloud batch jobs submit
e specifica le variabili di ambiente nel campo environment
.
Ad esempio, per creare un job che includa una variabile di ambiente e la passi agli script di tre attività, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/us-central1/jobs?job_id=example-environment-variables-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello ${VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
"environment": {
"variables": {
"VARIABLE_NAME": "VARIABLE_VALUE"
}
}
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
}
},
"taskCount": 3,
"parallelism": 1
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
]
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.VARIABLE_NAME
: il nome della variabile ambiente passata a ogni attività. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.VARIABLE_VALUE
: il valore della variabile di ambiente passata a ogni attività.
Definisci e utilizza una variabile di ambiente per ogni attività
Per creare un job che passa le variabili di ambiente a un'attività in base all'indice dell'attività utilizzando l'API Batch, utilizza il metodo jobs.create
e specifica le variabili di ambiente nel campo dell'array taskEnvironments
.
Ad esempio, per creare un job che includa un array di tre variabili di ambiente con nomi corrispondenti e valori diversi e passa le variabili di ambiente agli script di tre attività in base ai relativi indici, effettua la seguente richiesta:
POST https://batch.googleapis.com/v1/projects/<var>PROJECT_ID</var>/locations/us-central1/jobs?job_id=example-task-environment-variables-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello ${TASK_VARIABLE_NAME}! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks."
},
}
],
"computeResource": {
"cpuMilli": 2000,
"memoryMib": 16
}
},
"taskCount": 3,
"taskEnvironments": [
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_0"
}
},
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_1"
}
},
{
"variables": {
"TASK_VARIABLE_NAME": "TASK_VARIABLE_VALUE_2"
}
}
]
}
],
"allocationPolicy": {
"instances": [
{
"policy": { "machineType": "e2-standard-4" }
}
]
}
}
Sostituisci quanto segue:
PROJECT_ID
: l'ID progetto del tuo progetto.TASK_VARIABLE_NAME
: il nome delle variabili di ambiente passate alle attività con indici corrispondenti. Per convenzione, i nomivariabile di ambientee sono in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passata alla prima attività, per la qualeBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore della variabile di ambiente passata alla seconda attività, per la qualeBATCH_TASK_INDEX
è uguale a1
.TASK_VARIABLE_VALUE_2
: il valore della variabile di ambiente passata alla terza attività, per la qualeBATCH_TASK_INDEX
è uguale a2
.
Passaggi successivi
- Se hai problemi durante la creazione o l'esecuzione di un job, consulta la sezione Risoluzione dei problemi.
- Visualizza lavori e attività.
- Scopri di più sulle opzioni per la creazione di offerte di lavoro.