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 del job.
Prima di iniziare
- Se non hai mai utilizzato Batch, rivedi Inizia a utilizzare Batch e abilita Batch, completando prerequisiti per progetti e utenti.
-
Per ottenere le autorizzazioni necessarie per creare un job, chiedi all'amministratore di concederti seguenti ruoli IAM:
-
Batch Job Editor (
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 a progetti, cartelle e organizzazioni.
Potresti anche riuscire a ottenere le autorizzazioni richieste tramite la ruoli o altri ruoli predefiniti ruoli.
-
Batch Job Editor (
-
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 e non hai modificato la rete predefinita per il progetto, non è richiesta alcuna azione da parte tua.
- In caso contrario, devi configurare la rete quando crei un job. Scopri come configurare il networking per un job prima di crearne uno di base, in modo da poter modifica 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 (OS) VM valido.
- Se non hai requisiti specifici per l'immagine del sistema operativo o il disco di avvio della VM per il tuo workload o progetto, non devi fare nulla.
- In caso contrario, devi preparare un'opzione di ambiente OS VM valida. Prima di creare un job di base, consenti la configurazione predefinita per l'ambiente del sistema operativo della VM o scopri come personalizzare l'ambiente del sistema operativo della VM in modo da poter modificare gli esempi riportati di seguito in base alle tue esigenze.
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 tutte una o più
eseguibili,
che sono gli script eseguibili e/o i container per il job.
Per trattare le nozioni di base, questa sezione spiega come creare un job di esempio con
solo un'immagine eseguibile, uno script o un'immagine container:
- Se vuoi utilizzare Batch per scrivere job che eseguono un'immagine container, consulta la sezione Creare un job container.
- In caso contrario, se non sai con certezza se vuoi utilizzare le immagini container non hai familiarità con i container, come creare un job di script è consigliato.
Il job di esempio per entrambi i tipi di job contiene un gruppo di attività con un 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 parallelismo di 2, che indica che il job deve essere eseguito su 2 VM per consentire 2 attività da eseguire alla volta.
Creare un job di container di base
Puoi selezionare o creare un'immagine contenitore per fornire il codice e le dipendenze necessarie per l'esecuzione del tuo job da qualsiasi ambiente di calcolo. Per ulteriori informazioni, consulta Utilizzare le immagini container e Eseguire i 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 contenitore 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 container per l'esecuzione di questo job.
Ad esempio, per aggiungere un contenitore:
Seleziona URL immagine container (predefinito).
Nel campo URL immagine container, inserisci l'URL di un'immagine container che vuoi eseguire per ogni attività in questo job.
Ad esempio, per utilizzare l'immagine del contenitore 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 Entry point.Ad esempio, inserisci quanto segue:
/bin/sh
(Facoltativo) Per eseguire l'override del comando
CMD
dell'immagine container, procedi nel seguente modo:Seleziona Esegui l'override del comando CMD dell'immagine container. casella di controllo. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci uno o più comandi, separando ciascun 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 questa un lavoro. 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 maggiore del 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 delle VM di questo job:
Se il tuo job può resistere al prerilascio e vuoi 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 in una zona specifica, selezionane una.
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 i carichi di lavoro che richiedono molta memoria, fai clic su Ottimizzato per la memoria.
Ad esempio, fai clic su Uso generico (valore predefinito).
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 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 creato.
gcloud
Per creare un job container di base utilizzando gcloud CLI, esegui la seguenti:
Crea un file JSON che specifichi i dettagli di configurazione del job. Ad esempio, per creare un job contenitore di base, crea un file JSON con i seguenti contenuti. Per ulteriori informazioni su tutti i campi che puoi per un job, consulta la documentazione di riferimento
projects.locations.jobs
risorsa REST.{ "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à. Come minimo, un contenitore deve specificare un'immagine nel sottocampoimageUri
, ma potrebbero essere necessari anche sottocampi aggiuntivi. Per maggiori informazioni informazioni, consultacontainer
campi secondari e il job container di esempio in questa sezione.CORES
: facoltativo. La quantità di core, in particolare vCPU, che solitamente rappresentano metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore viene impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da utilizzare allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: facoltativo. Il numero massimo di 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 dovrai riprovare l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo l'esecuzione di un'attività può essere eseguita prima di altri tentativi o errori, formattata un valore in secondi seguito das
, ad esempio,3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore è impostato su tempo di esecuzione massimo per un job. Per ulteriori informazioni sul campomaxRunDuration
, consulta Limitare i tempi di esecuzione di attività e elementi 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 è specificato, il valore viene impostato su1
.PARALLELISM
: facoltativo. Il numero di attività che il job esegue contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non è 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 lavoro.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'busybox
immagine del container Docker:
Crea un file JSON nella directory attuale denominato
hello-world-container.json
con i seguenti contenuti:{ "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 contenitore 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
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.CONTAINER
: il container eseguito da ogni attività. Come minimo, un contenitore deve specificare un'immagine nel sottocampoimageUri
, ma potrebbero essere necessari anche sottocampi aggiuntivi. Per maggiori informazioni informazioni, consultacontainer
campi secondari e il job container di esempio in questa sezione.CORES
: facoltativo. La quantità di e in particolare le vCPUs, che di solito rappresentano la metà di un core fisico, da allocare per ciascuna attività milliCPU. Se il campocpuMilli
non viene specificato, il valore viene impostato a2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da utilizzare 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 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 dovrai riprovare l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo l'esecuzione di un'attività può essere eseguita prima di altri tentativi o errori, formattata un valore in secondi seguito das
, ad esempio,3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore è impostato su tempo di esecuzione massimo per un job. Per ulteriori informazioni sul campomaxRunDuration
, consulta Limitare i tempi di esecuzione di attività e elementi 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 è specificato, il valore viene impostato su1
.PARALLELISM
: facoltativo. Il numero di attività del job viene eseguito contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se il campoparallelism
non è specificato, il valore viene impostato su1
.
Ad esempio, per creare un job che esegue attività utilizzando
busybox
immagine container Docker,
utilizza la seguente richiesta:
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
è il
ID progetto
del tuo progetto.
Vai
Go
Per ulteriori informazioni, consulta API Go Batch documentazione di riferimento.
Per eseguire l'autenticazione in modalità batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Java.
Per eseguire l'autenticazione in modalità batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per ulteriori informazioni, consulta API Node.js Batch documentazione di riferimento.
Per eseguire l'autenticazione in modalità batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta API Python Batch documentazione di riferimento.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch C++.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura 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, segui questi passaggi: seguenti:
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 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à di questo job.
Ad esempio, inserisci il seguente script:
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 Numero di 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 maggiore del 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. Viene visualizzata la pagina Specifiche delle risorse.
Nella sezione Modello di provisioning delle VM, seleziona una delle le seguenti opzioni per modello di provisioning per le VM di questo job:
Se il tuo job può resistere al prerilascio e vuoi scontate, seleziona Spot.
In caso contrario, seleziona Standard.
Ad esempio, seleziona Standard (impostazione predefinita).
Seleziona la località per questo job:
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 in una 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 i carichi di lavoro che richiedono molta memoria, fai clic su Ottimizzato per la memoria.
Ad esempio, fai clic su Uso generico (valore predefinito).
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 il numero di vCPU 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 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 seguenti contenuti. Per ulteriori informazioni su tutti i campi che puoi per un job, consulta la documentazione di riferimento
projects.locations.jobs
risorsa REST.{ "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à. R lo script deve essere definito come testo utilizzando il sottocampotext
oppure come percorso di un file accessibile utilizzando il sottocampofile
. Per ulteriori informazioni, consulta i subcampiscript
e il job di script di esempio in questa sezione.CORES
: facoltativo. La quantità di e in particolare le vCPUs, che di solito rappresentano la metà di un core fisico, da allocare per ciascuna attività in milliCPU. Se il campocpuMilli
non viene specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da utilizzare allocare per ogni attività in MB. Se il campomemoryMib
non è specificato, il valore è impostato su2000
(2 GB).MAX_RETRY_COUNT
: facoltativo. Il numero massimo di 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 dovrai riprovare l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo l'esecuzione di un'attività può essere eseguita prima di altri tentativi o errori, formattata un valore in secondi seguito das
, ad esempio,3600s
per 1 ora. Se il campomaxRunDuration
non viene specificato, il valore è impostato su tempo di esecuzione massimo per un job. Per ulteriori informazioni sul campomaxRunDuration
, consulta Limita i tempi di esecuzione per le attività e gli elementi 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 è specificato, il valore è impostato su1
.PARALLELISM
: facoltativo. Il numero di attività il job viene eseguito contemporaneamente. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e il limite di attività parallele per job. Se Il campoparallelism
non è 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 lavoro.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 i seguenti contenuti:{ "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
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
: il ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.SCRIPT
: lo script eseguito da ogni attività. Uno script deve essere definito come testo utilizzando il sottocampotext
o come percorso di un file accessibile utilizzando il sottocampofile
. Per maggiori informazioni informazioni, consultascript
campi secondari e il job di script di esempio in questa sezione.CORES
: facoltativo. La quantità di core, in particolare vCPU, che solitamente rappresentano metà di un core fisico, da allocare per ogni attività in unità di milliCPU. Se il campocpuMilli
non viene specificato, il valore viene impostato a2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da utilizzare 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 dovrai riprovare l'attività. Per ulteriori informazioni sul campomaxRetryCount
, consulta Automatizzare i tentativi di esecuzione delle attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo per cui è consentita l'esecuzione di un'attività prima di riprovare o di non riuscire, formattato come un valore in secondi seguito das
, ad esempio3600s
per 1 ora. Se il campomaxRunDuration
non è specificato, il valore viene impostato sul tempo di esecuzione massimo per un job. Per ulteriori informazioni sul campomaxRunDuration
, consulta Limita i tempi di esecuzione per le attività e gli elementi 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 è 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 è 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
è il
ID progetto
del tuo progetto.
Vai
Go
Per ulteriori informazioni, consulta API Go Batch documentazione di riferimento.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per ulteriori informazioni, consulta API Java Batch documentazione di riferimento.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per ulteriori informazioni, consulta API Node.js Batch documentazione di riferimento.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Batch Python.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C++
C++
Per ulteriori informazioni, consulta API C++ Batch documentazione di riferimento.
Per autenticarti a Batch, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Utilizzare le variabili di ambiente
Utilizza le variabili di ambiente quando scrivi un'immagine container o uno script che vuoi venga eseguito da un job. Puoi utilizzare una delle variabili di ambiente predefinite per tutti i job batch e le eventuali variabili di ambiente personalizzate che definisci durante la creazione del job.
Utilizza le variabili di ambiente predefinite
Per impostazione predefinita, gli elementi eseguibili nel tuo job possono utilizzare quanto segue 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 questa attività ha già un tentativo di eseguire l'operazione. 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 ulteriori informazioni sui tentativi ripetuti, consulta Automatizzare i tentativi ripetuti delle attività.
Per un esempio di come utilizzare le variabili di ambiente predefinite, consulta gli esempi di eseguibili precedenti in Creare un job di base in questo documento.
Definire e utilizzare variabili di ambiente personalizzate
Se vuoi, puoi definire una o più variabili di ambiente personalizzate in un job.
Definisci ogni variabile in un ambiente specifico in base all'ambito desiderato dei suoi 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 i runnable, utilizza l'ambiente di tutti i runnable (campo secondario
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 (
environment
sottocampo 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 sottocampi dell'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 che si desidera crittografare.Per definire la variabile utilizzando dati criptati, puoi utilizzare Secret Manager o Cloud Key Management Service:
Per utilizzare i contenuti criptati di un file il secret di Secret Manager, utilizza campo secondario variabili segrete (
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 un file chiave Cloud Key Management Service, utilizza campo secondario variabili criptate (
encryptedVariables
). Per saperne di più sulle chiavi Cloud KMS, consulta la documentazione per Cloud Key Management Service.
Puoi definire e utilizzare le variabili di ambiente il tuo job utilizzando gcloud CLI o l'API Batch. I seguenti esempi spiegano come creare due job che definiscono e usano 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 trasmette una variabile di ambiente a un programma eseguibile eseguito da ogni attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per un programma eseguibile. In caso contrario, se vuoi definire un job che trasmette un elenco di variabili di ambiente a diverse attività in base all'indice dell'attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definire e utilizzare una variabile di ambiente per un file eseguibile
Per creare un job che passa le variabili di ambiente a un elemento eseguibile utilizzando
gcloud CLI, utilizza
Comando gcloud batch jobs submit
e specificare 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 passa agli script di tre attività, effettua la richiesta seguente:
Crea un file JSON nella directory corrente denominata
hello-world-environment-variables.json
con i seguenti contenuti:{ "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 del variabile di ambiente a ciascuna attività. Per convenzione, i nomi delle variabili di ambiente sono scritti 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
Definire e utilizzare una variabile di ambiente per ogni attività
Per creare un job che trasmette le variabili di ambiente a un'attività in base all'indice della task 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 3 ambienti variabili con nomi corrispondenti e valori diversi e trasmette le variabili di ambiente agli script delle attività con indici corrispondenti variabili di ambiente indici nell'array:
Crea un file JSON nella directory attuale denominato
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 del variabili di ambiente delle attività passate alle attività con indici corrispondenti. Di convenzione, i nomi variabile di ambiente 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
.
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 trasmette una variabile di ambiente a un programma eseguibile eseguito da ogni attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per un programma eseguibile. In caso contrario, se vuoi definire un job che trasmette un elenco di variabili di ambiente a diverse attività in base all'indice dell'attività, consulta l'esempio su come definire e utilizzare una variabile di ambiente per ogni attività.
Definire e utilizzare una variabile di ambiente per un file eseguibile
Per creare un job che passa le variabili di ambiente a un elemento eseguibile utilizzando
API Batch, utilizza
Comando gcloud batch jobs submit
e specificare le variabili di ambiente nel campo environment
.
Ad esempio, per creare un job che includa una variabile di ambiente e la trasmetta 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
: il ID progetto del tuo progetto.VARIABLE_NAME
: il nome della variabile di ambiente passata a ogni attività. Per convenzione, i nomi delle variabili di ambiente sono scritti 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 trasmette 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 3 ambienti variabili con nomi corrispondenti e valori diversi e trasmette 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
: il ID progetto del tuo progetto.TASK_VARIABLE_NAME
: il nome dell'ambiente passate alle attività con indici corrispondenti. Per convenzione, i nomi delle variabili di ambiente sono scritti in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore del parametro di variabile di ambiente passato alla prima attività, per cuiBATCH_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 del parametro di variabile di ambiente passato alla terza attività, per cuiBATCH_TASK_INDEX
è uguale a2
.
Passaggi successivi
- Se hai problemi a creare o eseguire un job, consulta la sezione Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni di creazione dei job.