Questo documento spiega 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 dei job, consulta Panoramica della creazione e dell'esecuzione di job.
Prima di iniziare
- Se non hai mai utilizzato Batch, consulta la Guida introduttiva all'utilizzo di 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
) sul progetto -
Utente account di servizio (
roles/iam.serviceAccountUser
) nell'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 essere in grado di 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 networking specifici per il carico di lavoro o il progetto e non hai modificato la rete predefinita per il progetto, non è richiesta alcuna azione da parte tua.
- In caso contrario, devi configurare il networking quando crei un job. Scopri come configurare il networking per un job prima di creare un job di base, così puoi modificare gli esempi riportati di seguito in base ai tuoi requisiti di networking.
-
Ogni volta che crei un job, assicurati che abbia un ambiente del sistema operativo (OS) valido.
- Se non hai requisiti specifici per l'immagine del sistema operativo VM o il disco di avvio per il tuo carico di lavoro o progetto, non è richiesta alcuna azione.
- In caso contrario, devi preparare un'opzione valida per l'ambiente del sistema operativo della 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
.
Per riepilogare, un job è costituito da un array di una o più attività che eseguono tutti uno o più eseguibili, ovvero gli script eseguibili e/o il container per il job.
Per trattare le nozioni di base, questa sezione spiega come creare un job di esempio con un solo elemento eseguibile, uno script o un'immagine container:
- Se vuoi usare Batch per scrivere job che eseguono un'immagine container, consulta Creare un job di container.
- In caso contrario, se non hai la certezza di voler utilizzare le immagini container o 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, che indica che il job deve essere eseguito su due VM per consentire l'esecuzione di due attività alla volta.
Crea un job di container di base
Puoi selezionare o creare un'immagine container per fornire il codice e le dipendenze necessari per l'esecuzione del job da qualsiasi ambiente di computing. Per maggiori informazioni, consulta Utilizzo delle immagini container e Esecuzione dei container sulle istanze VM.
Puoi creare un job di container 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 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 container per l'esecuzione di questo job.
Ad esempio, per aggiungere un container:
Seleziona Container image URL (URL immagine container) (impostazione predefinita).
Nel campo URL immagine container, inserisci l'URL di un'immagine container da eseguire per ogni attività in questo job.
Ad esempio, per utilizzare l'immagine del 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, separando 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 delle risorse.
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 tollerare 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 i carichi di lavoro più comuni, fai clic su Uso generico.
Per i carichi di lavoro che richiedono prestazioni elevate, fai clic su Ottimizzato per il calcolo.
Per i carichi di lavoro che richiedono molta memoria, fai clic su Ottimizzata 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 (impostazione predefinita).
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) (impostazione predefinita).
Configura la quantità di risorse VM necessarie 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 esaminare la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job che hai creato.
gcloud
Per creare un job di container di base utilizzando gcloud CLI, procedi come segue:
Crea un file JSON che specifichi i dettagli di configurazione del job. Ad esempio, per creare un job di container di base, crea un file JSON con i contenuti seguenti. Per saperne di più 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, nello specifico le vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non è specificato, il valore viene 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 è specificato, il valore viene impostato su0
, il che significa di non riprovare a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima di essere riprovata o non riuscita, formattata come valore espresso in secondi seguito das
. Se il campomaxRunDuration
non è specificato, il valore viene impostato su604800s
(7 giorni), che corrisponde al valore massimo.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 viene 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 viene 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 di container di base con l'API Batch, usa
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 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, nello specifico le vCPUs, che di solito rappresentano mezzo core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è 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 è specificato, il valore viene impostato su0
, il che significa di non riprovare a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima di essere riprovata o non riuscita, formattata come valore in secondi seguito das
. Se il campomaxRunDuration
non viene specificato, il valore viene impostato su604800s
(7 giorni), che è il valore massimo.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 viene 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 viene 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 progetto.
Go
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Batch Go.
Per eseguire l'autenticazione in Batch, configura 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 Batch Java.
Per eseguire l'autenticazione in Batch, configura 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 Batch Node.js.
Per eseguire l'autenticazione in Batch, configura 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 Batch Python.
Per eseguire l'autenticazione in Batch, configura 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 Batch C++.
Per eseguire l'autenticazione in Batch, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Creare 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:
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 container per l'esecuzione di questo job.
Ad esempio, per aggiungere uno script:
Seleziona Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci uno script da eseguire per ogni attività nel 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 delle risorse.
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 tollerare 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 i carichi di lavoro più comuni, fai clic su Uso generico.
Per i carichi di lavoro che richiedono prestazioni elevate, fai clic su Ottimizzato per il calcolo.
Per i carichi di lavoro che richiedono molta memoria, fai clic su Ottimizzata 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 (impostazione predefinita).
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) (impostazione predefinita).
Configura la quantità di risorse VM necessarie 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 esaminare la configurazione del job, nel riquadro a sinistra, fai clic su Anteprima.
Fai clic su Crea.
Nella pagina Dettagli job viene visualizzato il job che hai creato.
gcloud
Per creare un job di script di base utilizzando gcloud CLI, procedi nel seguente modo:
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 i contenuti seguenti. Per saperne di più 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, nello specifico le vCPUs, che di solito rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non è specificato, il valore viene 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 è specificato, il valore viene impostato su0
, il che significa di non riprovare a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima di essere riprovata o non riuscita, formattata come valore espresso in secondi seguito das
. Se il campomaxRunDuration
non è specificato, il valore viene impostato su604800s
(7 giorni), che corrisponde al valore massimo.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 viene 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 viene 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 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, nello specifico le vCPUs, che di solito rappresentano mezzo core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da allocare per ogni attività in MB. Se il campomemoryMib
non è 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 è specificato, il valore viene impostato su0
, il che significa di non riprovare a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima di essere riprovata o non riuscita, formattata come valore in secondi seguito das
. Se il campomaxRunDuration
non viene specificato, il valore viene impostato su604800s
(7 giorni), che è il valore massimo.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 viene 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 viene impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando uno script, utilizza la seguente richiesta:
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 progetto.
Go
Go
Per maggiori informazioni, consulta la documentazione di riferimento dell'API Batch Go.
Per eseguire l'autenticazione in Batch, configura 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 Batch Java.
Per eseguire l'autenticazione in Batch, configura 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 Batch Node.js.
Per eseguire l'autenticazione in Batch, configura 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 Batch Python.
Per eseguire l'autenticazione in Batch, configura 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 Batch C++.
Per eseguire l'autenticazione in Batch, configura 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 da eseguire su 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 di attività in un gruppo di attività.BATCH_TASK_INDEX
: il numero di indice di un'attività in un gruppo di attività. La numerazione dell'indice inizia da0
.BATCH_HOSTS_FILE
: facoltativo. Il percorso del file che elenca tutte le istanze VM in esecuzione in un gruppo di attività. Per utilizzare questa variabile di ambiente, il camporequireHostsFile
è obbligatorio e deve essere impostato su true.
Per un esempio di come utilizzare le variabili di ambiente predefinite, consulta l'esempio precedente di elementi eseguibili in Creare un job di base in questo documento.
Definisci e utilizza le variabili di ambiente personalizzate
Facoltativamente, puoi definire una o più variabili di ambiente personalizzate in un job.
Devi definire ogni variabile in un ambiente specifico in base all'ambito dei suoi dati desiderato:
Per una variabile con lo stesso valore per tutte le attività, utilizza uno dei seguenti valori:
Se la variabile presenta lo stesso valore per tutti gli elementi eseguibili, utilizza l'ambiente di tutti gli elementi eseguibili (sottocampo
environment
ditaskSpec
).Altrimenti, se la variabile ha un valore separato per tutti gli elementi eseguibili, utilizza uno o più ambienti di elementi eseguibili specifici (sottocampo
environment
dirunnables[]
).
Altrimenti, per una variabile array con 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 sottocampi di ambiente:
Per definire la variabile direttamente nel file JSON di configurazione del job, utilizza il sottocampo delle 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 sottocampo delle variabili secret (
secretVariables
). Per saperne di più 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 sottocampo delle variabili criptate (
encryptedVariables
). Per ulteriori informazioni sulle chiavi Cloud KMS, consulta la documentazione di Cloud Key Management Service.
Puoi definire e usare variabili di ambiente personalizzate per il tuo job con 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 un elemento eseguibile specifico. 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 elemento eseguibile eseguito da ogni attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per un elemento eseguibile. Altrimenti, se vuoi definire un job che passi un elenco di variabili di ambiente ad attività diverse in base all'indice delle attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definisci e utilizza una variabile di ambiente per un elemento eseguibile
Per creare un job che passi le variabili di ambiente a un elemento eseguibile mediante 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 definisca una variabile di ambiente e la passi 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 lettere maiuscole.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 passi le variabili di ambiente a un'attività in base all'indice delle attività utilizzando gcloud CLI, utilizza il comando gcloud batch jobs submit
e specifica il campo array taskEnvironments
nel file di configurazione del job.
Ad esempio, per creare un job che includa un array di 3 variabili di ambiente con nomi e valori diversi corrispondenti, poi passa le variabili di ambiente agli script delle attività a cui gli indici corrispondono 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 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 elemento eseguibile eseguito da ogni attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per un elemento eseguibile. Altrimenti, se vuoi definire un job che passi un elenco di variabili di ambiente ad attività diverse in base all'indice delle attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definisci e utilizza una variabile di ambiente per un elemento eseguibile
Per creare un job che passi le variabili di ambiente a un elemento eseguibile mediante 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 passa 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 progetto.VARIABLE_NAME
: il nome della variabile di ambiente passata a ogni attività. Per convenzione, i nomi variabile di ambiente sono in lettere maiuscole.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 passi le variabili di ambiente a un'attività in base all'indice delle 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 e valori diversi corrispondenti e che passi 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 progetto.TASK_VARIABLE_NAME
: il nome delle variabili di ambiente passate alle attività con indici corrispondenti. Per convenzione, i nomi variabile di ambiente sono con 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
.
Passaggi successivi
- In caso di problemi durante la creazione o l'esecuzione di un job, consulta Risoluzione dei problemi.
- Visualizzare lavori e attività.
- Scopri di più sulle opzioni per la creazione di job.