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 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:
-
Editor job batch (
roles/batch.jobsEditor
) del 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 la ruoli o altri ruoli predefiniti ruoli.
-
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 e non hai modificato la rete predefinita per il 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 modifica gli esempi riportati di seguito per soddisfare i requisiti di networking.
-
Ogni volta che crei un job, assicurati che abbia una VM valida
dell'ambiente del sistema operativo.
- Se non hai requisiti specifici per l'immagine del sistema operativo VM o il disco di avvio carico di lavoro o 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 quindi puoi modificare gli esempi 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
documentazione di riferimento per
projects.locations.jobs
risorsa REST.
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 affrontare 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 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 al e 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.
Crea un job container di base
Puoi selezionare o creare un'immagine container per fornire il codice e le dipendenze in modo che il tuo job venga eseguito da qualsiasi ambiente di computing. Per ulteriori informazioni, vedi Utilizzo delle immagini container e 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 container di base utilizzando la console Google Cloud, segui questi passaggi: seguenti:
Nella console Google Cloud, vai alla pagina Elenco job.
Fai clic su
Crea. La Si apre la pagina Crea job batch. Nel riquadro a sinistra, La pagina Dettagli job è selezionata.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 container, segui questi passaggi:
Seleziona Container image URL (URL immagine container) (impostazione predefinita).
Nel campo URL immagine container, inserisci l'URL di un che vuoi eseguire per ogni attività in questo un lavoro.
Ad esempio, per utilizzare il container Docker
busybox
immagine, inserisci seguente URL:gcr.io/google-containers/busybox
(Facoltativo) Per eseguire l'override del parametro
ENTRYPOINT
, inserisci un comando nel Punto di ingresso.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 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 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 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 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 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 opzioni 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 delle VM del 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, esegui la seguenti:
Crea un file JSON che specifichi i dettagli di configurazione del job. Per Ad esempio, per creare un job container di base, crea un file JSON seguenti. 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 contenitore dell'esecuzione di ogni attività.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 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 nuovi tentativi in un'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 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 è 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
busybox
Immagine container Docker:
Crea un file JSON nella directory corrente denominata
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 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
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 valore ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.CONTAINER
: il contenitore dell'esecuzione di ogni attività.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 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 nuovi tentativi in un'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 che 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à del job viene eseguito contemporaneamente. Il numero non può essere maggiore del numero di 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
.
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 API Java 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.
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, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta API Python 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.
C++
C++
Per ulteriori informazioni, consulta API C++ 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.
Crea un job di script di base
Puoi creare un job di script di base utilizzando la console Google Cloud, gcloud CLI, 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. La Si apre la pagina Crea job batch. Nel riquadro a sinistra, La pagina Dettagli job è selezionata.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 uno script, segui questi passaggi:
Seleziona Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci uno script da eseguire ogni attività in questo 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 per questo job. Il valore deve essere un numero intero compreso
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 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 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 solo in una zona specifica, seleziona una zona.
In caso contrario, seleziona qualsiasi.
Ad esempio, seleziona qualsiasi (impostazione predefinita).
Seleziona una delle seguenti opzioni 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 delle VM del 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, esegui la seguenti:
Crea un file JSON che specifichi i dettagli di configurazione del job. Per Ad esempio, per creare un job di script di base, crea un file JSON con seguenti. 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 dell'esecuzione di ogni attività.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 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 nuovi tentativi in un'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 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 è 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 la classe
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 valore ID progetto del tuo progetto.LOCATION
: la località del lavoro.JOB_NAME
: il nome del job.SCRIPT
: lo script dell'esecuzione di ogni attività.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 su2000
(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 nuovi tentativi in un'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 un lavoro. 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à del job viene eseguito contemporaneamente. Il numero non può essere maggiore del numero di 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
.
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 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 API Java 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.
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, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per ulteriori informazioni, consulta API Python 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.
C++
C++
Per ulteriori informazioni, consulta API C++ 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.
Utilizza 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 qualsiasi variabile di ambiente predefinita Job batch e qualsiasi variabile di ambiente personalizzata 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 per ogni attività aggiuntiva.BATCH_HOSTS_FILE
: il percorso di un file che elenca tutte le VM in esecuzione in questo gruppo di attività. Per utilizzare questa variabile di ambiente, 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 di il campomaxRetryCount
, che è0
se non definito. Per ulteriori informazioni sui nuovi tentativi, consulta Automatizzare i nuovi tentativi in un'attività.
Per un esempio di come utilizzare le variabili di ambiente predefinite, di esempi precedenti eseguibili in Creare un job di base in questo documento.
Definizione e utilizzo delle 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 gli elementi eseguibili, utilizza la classe ambiente di tutti gli elementi eseguibili (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[]
).
Altrimenti, per un array che abbia un valore separato per ogni attività, utilizza la dell'ambiente di tutte le attività (
taskEnvironment
).
Nell'ambiente selezionato, definisci il nome e i valori di ogni utilizzando uno dei seguenti campi secondari di ambiente:
Per definire la variabile direttamente nel file JSON di configurazione del job, utilizza la classe sottocampo variabili standard (
variables
), come mostrato in questa sezione. Questa opzione è consigliata per i dati che non che vuoi criptare.Per definire la variabile utilizzando dati criptati, puoi usare 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 ulteriori informazioni sull'utilizzo dei secret in un job, consulta Proteggi 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 di array, che ha un valore diverso per ogni attività.
gcloud
Se vuoi definire un job che passa una variabile di ambiente a un eseguibile quando viene eseguita ogni attività, vedi l'esempio su come Definisci e utilizza una variabile di ambiente per un elemento eseguibile. Se invece vuoi definire un job che trasmette un elenco di ambienti ad attività diverse in base all'indice delle attività, vedi l'esempio 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
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, variabile di ambiente I nomi sono in lettere maiuscole.VARIABLE_VALUE
: facoltativo. Il valore del parametro una 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à
Creare un job che passa le variabili di ambiente a un'attività in base all'attività stessa.
con gcloud CLI, utilizza
Comando gcloud batch jobs submit
e specificare il campo Array taskEnvironments
nella 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 corrente denominata
hello-world-task-environment-variables.json
con quanto segue 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 del parametro di variabile di ambiente passato alla prima attività, per cuiBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore del parametro di variabile di ambiente passato alla seconda attività, per cuiBATCH_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
.
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 quando viene eseguita ogni attività, vedi l'esempio su come Definisci e utilizza una variabile di ambiente per un elemento eseguibile. Se invece vuoi definire un job che trasmette un elenco di ambienti ad attività diverse in base all'indice delle attività, vedi l'esempio 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
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 lo passa agli script di tre attività, effettua la richiesta seguente:
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 valore ID progetto del tuo progetto.VARIABLE_NAME
: il nome del ambiente a ciascuna attività. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.VARIABLE_VALUE
: il valore dell'ambiente a ciascuna attività.
Definisci e utilizza una variabile di ambiente per ogni attività
Creare un job che passa le variabili di ambiente a un'attività in base all'attività stessa.
indicizzare utilizzando l'API Batch, usa il metodo jobs.create
e specificare 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 valore ID progetto del tuo progetto.TASK_VARIABLE_NAME
: il nome dell'ambiente passate alle attività con indici corrispondenti. Per convenzione, i nomi variabile di ambiente 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 del parametro di variabile di ambiente passato alla seconda attività, per cuiBATCH_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 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.