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 scoprire di più sulla creazione e l'esecuzione dei job, vedi Panoramica della creazione e dell'esecuzione dei job.
Prima di iniziare
- Se non hai ancora utilizzato Batch, consulta la Guida introduttiva all'utilizzo di Batch e abilitalo compilando 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
) sull'account di servizio del job, che per impostazione predefinita è l'account di servizio Compute Engine predefinito
Per maggiori informazioni sulla concessione dei ruoli, vedi Gestire l'accesso.
Potresti anche ottenere le autorizzazioni richieste tramite ruoli personalizzati o altri ruoli predefiniti.
-
Editor job batch (
-
Ogni volta che crei un job, assicurati che il job abbia una configurazione di rete valida.
- Se non hai requisiti di networking specifici e non hai modificato la rete predefinita per il progetto, non devi fare nulla.
- In caso contrario, se il tuo progetto o carico di lavoro richiede l'uso di una rete personalizzata, devi configurare il networking quando crei un job. Scopri come configurare il networking per un job prima di creare un job di base, quindi puoi modificare gli esempi di seguito per soddisfare i tuoi requisiti di networking.
Crea un job di base
Per informazioni su tutti i campi che puoi specificare per un job, consulta la
documentazione di riferimento per la
projects.locations.jobs
risorsa.
Riassumendo, un job è costituito da un array di una o più attività
che eseguono tutte una o più
eseguibili,
ossia gli script eseguibili e/o i container per il job.
Questa sezione spiega come creare un job di esempio con una sola eseguibile, ovvero uno script o un'immagine container:
- Se vuoi utilizzare Batch per scrivere job che eseguono un'immagine container, consulta la pagina Creare un job container.
- In caso contrario, se non hai la certezza di voler utilizzare le immagini container o se non hai dimestichezza con i container, ti consigliamo di creare un job di script.
Il job di esempio per entrambi i tipi di job contiene un gruppo di attività con una matrice di 4 attività. Ogni attività stampa un messaggio e il suo 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 container di base
Puoi selezionare o creare un'immagine container per fornire il codice e le dipendenze per l'esecuzione del tuo job da qualsiasi ambiente di computing. Per ulteriori informazioni, consulta Utilizzo delle immagini container e Eseguire i container sulle istanze VM.
Puoi creare un job di container di base utilizzando la console Google Cloud, l'interfaccia a riga di comando gcloud, l'API Batch, Go, Java, Node.js o Python.
Console
Per creare un job container di base utilizzando la console Google Cloud, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina Elenco job
Fai clic su
Crea. Si apre la pagina Crea job batch.Nel campo Nome job, inserisci un nome per il job.
Ad esempio, inserisci
example-basic-job
.Nel campo Regione, seleziona la località per questo job.
Ad esempio, seleziona
us-central1 (Iowa)
(valore predefinito).Nel campo Zona, esegui una delle seguenti operazioni:
Se vuoi limitare l'esecuzione del job solo in una zona specifica, seleziona una zona.
Altrimenti, seleziona
any
.
Ad esempio, seleziona
any
(valore predefinito).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 può resistere alla prerilascio e vuoi VM scontate, seleziona Spot.
Altrimenti, seleziona Standard.
Ad esempio, seleziona Standard (valore predefinito).
Seleziona una delle seguenti famiglie di macchine:
Per i carichi di lavoro comuni, fai clic su Per uso generico.
Per carichi di lavoro che richiedono prestazioni elevate, fai clic su Ottimizzato per 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 Per 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 della macchina, seleziona e2-medium (2 vCPU, 4 GB di memoria) (valore predefinito).
Nel riquadro Nuovo eseguibile, procedi nel seguente modo:
Seleziona URL immagine container (impostazione predefinita).
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 container di Docker di
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.
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 questo job. Il valore deve essere un numero intero compreso tra
1
e10000
.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
e1000
.Ad esempio, inserisci
2
.Nella sezione Risorse per le attività, specifica la quantità di risorse VM necessarie per ogni attività, seguendo questi passaggi:
Nel campo Core, inserisci la quantità di vCPU.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Memoria, inserisci la quantità di RAM (GB).
Ad esempio, inserisci
0.5
(valore predefinito).
Fai clic su Crea.
La pagina Elenco job mostra il job che hai creato.
gcloud
Per creare un job di container 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 container di base, crea un file JSON con i seguenti contenuti. Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa
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 contenitore eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare le vCPU, che di solito rappresentano la metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da 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 è specificato, il valore viene impostato su0
, quindi non riprovare a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima che venga eseguito un nuovo tentativo o un errore, formattato come valore in secondi seguito das
. Se il campomaxRunDuration
non è specificato, il valore è 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
e10000
. Se il campotaskCount
non è specificato, il valore viene impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite simultaneamente dal job. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e1000
. 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 job.JSON_CONFIGURATION_FILE
: il percorso di un file JSON con i dettagli di configurazione del job.
Ad esempio, per creare un job che esegua attività utilizzando l'immagine container Docker di busybox
:
Crea un file JSON nella directory corrente denominata
hello-world-container.json
con il seguente contenuto:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world! This is task ${BATCH_TASK_INDEX}. This job has a total of ${BATCH_TASK_COUNT} tasks." ] } } ], "computeResource": { "cpuMilli": 2000, "memoryMib": 16 }, "maxRetryCount": 2, "maxRunDuration": "3600s" }, "taskCount": 4, "parallelism": 2 } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ] }, "labels": { "department": "finance", "env": "testing" }, "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Esegui questo comando:
gcloud batch jobs submit example-container-job \ --location us-central1 \ --config hello-world-container.json
API
Per creare un job container di base utilizzando l'API Batch, utilizza il metodo jobs.create
.
Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa 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 contenitore eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare le vCPU, che di solito rappresentano la metà di un core fisico, da allocare per ogni attività in 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 è 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 che non riprova a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima che venga eseguito un nuovo tentativo o un errore, formattato come valore in secondi seguito das
. Se il campomaxRunDuration
non è specificato, il valore è 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
e10000
. 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 maggiore del numero di attività e deve essere un numero intero compreso tra1
e1000
. Se il campoparallelism
non è specificato, il valore viene impostato su1
.
Ad esempio, per creare un job che esegua attività utilizzando l'immagine container Docker busybox
, 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
è l'ID progetto
del tuo progetto.
Go
Go
Per scoprire di più, consulta la documentazione di riferimento per le API Go in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per scoprire di più, consulta la documentazione di riferimento per le API Java in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per scoprire di più, consulta la documentazione di riferimento per le API Node.js in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per scoprire di più, consulta la documentazione di riferimento per le API Python in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Crea un job di script di base
Puoi creare un job di script di base utilizzando la console Google Cloud, l'interfaccia a riga di comando gcloud, l'API Batch, Go, Java, Node.js o Python.
Console
Per creare un job di script di base utilizzando la console Google Cloud, procedi nel seguente modo:
Nella console Google Cloud, vai alla pagina Elenco job
Fai clic su
Crea. Si apre la pagina Crea job batch.Nel campo Nome job, inserisci un nome per il job.
Ad esempio, inserisci
example-basic-job
.Nel campo Regione, seleziona la località per questo job.
Ad esempio, seleziona
us-central1 (Iowa)
(valore predefinito).Nel campo Zona, esegui una delle seguenti operazioni:
Se vuoi limitare l'esecuzione del job solo in una zona specifica, seleziona una zona.
Altrimenti, seleziona
any
.
Ad esempio, seleziona
any
(valore predefinito).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 può resistere alla prerilascio e vuoi VM scontate, seleziona Spot.
Altrimenti, seleziona Standard.
Ad esempio, seleziona Standard (valore predefinito).
Seleziona una delle seguenti famiglie di macchine:
Per i carichi di lavoro comuni, fai clic su Per uso generico.
Per carichi di lavoro che richiedono prestazioni elevate, fai clic su Ottimizzato per 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 Per 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 della macchina, seleziona e2-medium (2 vCPU, 4 GB di memoria) (valore predefinito).
Nel riquadro Nuovo eseguibile, procedi nel seguente modo:
Seleziona Script. Viene visualizzata una casella di testo.
Nella casella di testo, inserisci uno script da eseguire per ogni attività in 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 Conteggio attività, inserisci il numero di attività per questo job. Il valore deve essere un numero intero compreso tra
1
e10000
.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
e1000
.Ad esempio, inserisci
2
.Nella sezione Risorse per le attività, specifica la quantità di risorse VM necessarie per ogni attività, seguendo questi passaggi:
Nel campo Core, inserisci la quantità di vCPU.
Ad esempio, inserisci
1
(valore predefinito).Nel campo Memoria, inserisci la quantità di RAM (GB).
Ad esempio, inserisci
0.5
(valore predefinito).
Fai clic su Crea.
La pagina Elenco job mostra 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 seguenti contenuti. Per ulteriori informazioni su tutti i campi che puoi specificare per un job, consulta la documentazione di riferimento per la risorsa
projects.locations.jobs
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { SCRIPT } } ], "computeResource": { "cpuMilli": CORES, "memoryMib": MEMORY }, "maxRetryCount": MAX_RETRY_COUNT, "maxRunDuration": "MAX_RUN_DURATION" }, "taskCount": TASK_COUNT, "parallelism": PARALLELISM } ] }
Sostituisci quanto segue:
SCRIPT
: lo script eseguito da ogni attività.CORES
: facoltativo. La quantità di core, in particolare le vCPU, che di solito rappresentano la metà di un core fisico, da allocare per ogni attività in unità milliCPU. Se il campocpuMilli
non è specificato, il valore è impostato su2000
(2 vCPU).MEMORY
: facoltativo. La quantità di memoria da 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 è specificato, il valore viene impostato su0
, quindi non riprovare a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima che venga eseguito un nuovo tentativo o un errore, formattato come valore in secondi seguito das
. Se il campomaxRunDuration
non è specificato, il valore è 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
e10000
. Se il campotaskCount
non è specificato, il valore viene impostato su1
.PARALLELISM
: facoltativo. Il numero di attività eseguite simultaneamente dal job. Il numero non può essere maggiore del numero di attività e deve essere un numero intero compreso tra1
e1000
. 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 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 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, in particolare le vCPU, che di solito rappresentano la metà di un core fisico, da allocare per ogni attività in 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 è 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 che non riprova a eseguire l'attività.MAX_RUN_DURATION
: facoltativo. Il tempo massimo consentito per l'esecuzione di un'attività prima che venga eseguito un nuovo tentativo o un errore, formattato come valore in secondi seguito das
. Se il campomaxRunDuration
non è specificato, il valore è 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
e10000
. 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 maggiore del numero di attività e deve essere un numero intero compreso tra1
e1000
. 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
è l'ID progetto
del tuo progetto.
Go
Go
Per scoprire di più, consulta la documentazione di riferimento per le API Go in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Java
Per scoprire di più, consulta la documentazione di riferimento per le API Java in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Node.js
Per scoprire di più, consulta la documentazione di riferimento per le API Node.js in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Python
Per scoprire di più, consulta la documentazione di riferimento per le API Python in batch.
Per eseguire l'autenticazione in batch, configura le Credenziali predefinite dell'applicazione. Per saperne di più, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Utilizza le variabili di ambiente
Utilizza le variabili di ambiente quando scrivi un'immagine container o uno script che vuoi eseguire in un job. Puoi utilizzare una qualsiasi delle variabili di ambiente predefinite per tutti i job batch e qualsiasi variabile di ambiente personalizzata che definisci durante la creazione del job.
Utilizza variabili di ambiente predefinite
Per impostazione predefinita, i runnable nel tuo job possono utilizzare le seguenti variabili di ambiente predefinite:
BATCH_TASK_COUNT
: numero di attività di un gruppo.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 vero.
Per un esempio di come utilizzare le variabili di ambiente predefinite, vedi l'esempio eseguibile precedente in Creare un job di base in questo documento.
Definisci e utilizza le variabili di ambiente personalizzate
Facoltativamente, puoi definire i seguenti tipi di variabili di ambiente personalizzate per uno o più eseguibili in un job:
- Una variabile per un eseguibile, che ha lo stesso valore per tutte le attività che possono essere eseguite.
- Un array per un eseguibile, che ha un valore separato per ogni attività che viene eseguito.
Questa sezione fornisce esempi su come creare due job che definiscono e utilizzano variabili di ambiente personalizzate. Il primo job di esempio trasmette una variabile di ambiente a un eseguibile eseguito da ogni attività. Il secondo job di esempio trasmette un array di variabili di ambiente, con nomi corrispondenti ma valori diversi, alle attività in cui gli indici corrispondono agli indici della variabile di ambiente nell'array.
Questa sezione descrive come definire e utilizzare le variabili di ambiente personalizzate per il job utilizzando l'interfaccia a riga di comando gcloud o l'API batch.
gcloud
Se vuoi definire un job che trasmette una variabile di ambiente a un eseguibile che funzioni ogni attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per una eseguibile. In caso contrario, se vuoi definire un job che passi un elenco di variabili di ambiente a diverse attività 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 eseguibile
Per creare un job che passi le variabili di ambiente a un eseguibile utilizzando l'interfaccia a riga di comando gcloud, 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 invii 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 passato a ogni attività. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.VARIABLE_VALUE
: facoltativo. Il valore della variabile di ambiente passato 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 l'interfaccia alla 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 variabili di ambiente con nomi corrispondenti e valori diversi, e passi le variabili di ambiente agli script delle attività che 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 il seguente contenuto:{ "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 di attività passate alle attività con indici corrispondenti. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passato all'attività cheBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore della variabile di ambiente passato all'attività cheBATCH_TASK_INDEX
è uguale a1
.TASK_VARIABLE_VALUE_2
: il valore della variabile di ambiente passato all'attività cheBATCH_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 eseguibile che funzioni ogni attività, vedi l'esempio su come definire e utilizzare una variabile di ambiente per una eseguibile. In caso contrario, se vuoi definire un job che passi un elenco di variabili di ambiente a diverse attività 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 eseguibile
Per creare un job che passi le variabili di ambiente a un eseguibile utilizzando l'API Batch, utilizza il comando gcloud batch jobs submit
e specifica le variabili di ambiente nel campo environment
.
Ad esempio, per creare un job che includa una variabile di ambiente e la trasferisca 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 environment trasmesso a ogni attività. Per convenzione, i nomi variabile di ambiente sono in maiuscolo.VARIABLE_VALUE
: il valore della variabile di ambiente passato 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 3 variabili di ambiente con nomi corrispondenti e valori diversi e che passi le variabili di ambiente agli script di 3 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 in maiuscolo.TASK_VARIABLE_VALUE_0
: il valore della variabile di ambiente passato all'attività cheBATCH_TASK_INDEX
è uguale a0
.TASK_VARIABLE_VALUE_1
: il valore della variabile di ambiente passato all'attività cheBATCH_TASK_INDEX
è uguale a1
.TASK_VARIABLE_VALUE_2
: il valore della variabile di ambiente passato all'attività cheBATCH_TASK_INDEX
è uguale a2
.
Passaggi successivi
- Se hai problemi durante la creazione o l'esecuzione di un job, vedi Risoluzione dei problemi.
- Visualizza job e attività.
- Scopri di più sulle opzioni per la creazione di offerte di lavoro.