Ce document explique comment utiliser des libellés pour organiser vos ressources Batch.
Les libellés sont des paires clé-valeur appliquées aux ressources pour les regrouper et les décrire. Le traitement par lot comporte des libellés prédéfinis, qui sont automatiquement appliqués aux ressources, et des libellés personnalisés, que vous pouvez définir et appliquer lors de la création d'une tâche.
Les libellés vous permettent de filtrer les résultats des listes de ressources et des rapports Cloud Billing. Par exemple, vous pouvez utiliser des libellés pour:
Clarifiez et organisez la liste des tâches de votre projet.
Distinguez les exécutables d'une tâche à l'aide d'étiquettes pour décrire le type de conteneur ou de script qu'ils spécifient.
Analysez les coûts en filtrant les rapports sur la facturation Cloud pour les ressources créées par le traitement par lot ou des tâches spécifiques.
Pour en savoir plus sur les libellés, consultez également la documentation Compute Engine sur les libellés.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations nécessaires pour créer un job, demandez à votre administrateur de vous accorder les rôles IAM suivants:
-
Éditeur de tâches par lot (
roles/batch.jobsEditor
) sur le projet -
Utilisateur du compte de service (
roles/iam.serviceAccountUser
) sur le compte de service de la tâche, qui est par défaut le compte de service Compute Engine par défaut
Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Éditeur de tâches par lot (
Restrictions
En plus des exigences concernant les libellés spécifiées dans la documentation Compute Engine, l'application de libellés à un job par lot et à ses ressources est soumise aux restrictions suivantes:
Le traitement par lot n'est compatible qu'avec les libellés des ressources créées à l'aide de ce traitement et des types suivants:
Jobs
Runnables
Processeurs graphiques (GPU) pour une tâche (le cas échéant)
Disques persistants (disques de démarrage et volumes de stockage) pour une tâche
Instances de machine virtuelle (VM) pour une tâche
Après avoir pris en compte les libellés prédéfinis que Batch applique automatiquement à une tâche, vous pouvez définir les quantités de libellés personnalisés suivantes:
Vous pouvez définir jusqu'à 63 libellés personnalisés à appliquer au job et à ses exécutables.
Vous pouvez définir jusqu'à 61 libellés personnalisés à appliquer à chaque GPU, disque persistant et VM créés pour la tâche.
Batch n'accepte que la définition de libellés personnalisés avec des noms uniques. En conséquence:
Toute tentative de remplacement d'un libellé prédéfini entraîne des erreurs.
Si vous définissez un libellé personnalisé en double, il remplace le libellé personnalisé existant.
Batch n'accepte la définition de libellés que lors de la création d'une tâche.
Vous ne pouvez pas ajouter, mettre à jour ni supprimer de libellés pour les tâches et les exécutables.
Bien qu'il soit possible d'utiliser Compute Engine pour ajouter, mettre à jour ou supprimer des libellés pour les disques persistants et les VM créés pour les jobs, cela n'est pas recommandé. Il est impossible d'estimer de manière fiable la période d'existence des ressources d'une tâche, et les modifications apportées peuvent ne pas fonctionner correctement avec Batch.
Pour utiliser des libellés pour filtrer votre liste de tâches, vous devez afficher votre liste de tâches à l'aide de la gcloud CLI ou de l'API Batch.
Libellés prédéfinis
Chaque étiquette prédéfinie possède une clé commençant par le préfixe batch-
. Par défaut, Batch applique automatiquement les libellés prédéfinis suivants:
Pour chaque tâche que vous créez:
batch-job-id
: la valeur de ce libellé est définie sur le nom de l'offre d'emploi.
Pour chaque GPU, disque persistant et VM créés pour une tâche:
batch-job-id
: la valeur de ce libellé est définie sur le nom de l'offre d'emploi.batch-job-uid
: la valeur de ce libellé est définie sur l'identifiant unique (UID) de l'offre d'emploi.batch-node
: la valeur de ce libellé est nulle. Il regroupe simplement tous les GPU, disques persistants et VM créés pour les tâches. Par exemple, utilisez ce libellé lorsque vous consultez un rapport de facturation Cloud pour identifier les coûts de tous les GPU, disques persistants et VM créés par Batch.
Définir des étiquettes personnalisées
Vous pouvez éventuellement définir une ou plusieurs étiquettes personnalisées lorsque vous créez une tâche. Vous pouvez définir des libellés personnalisés avec de nouvelles clés ou des clés que votre projet utilise déjà. Pour définir des libellés personnalisés, sélectionnez une ou plusieurs des méthodes suivantes dans ce document en fonction de l'objectif du libellé:
Définissez des libellés personnalisés pour la tâche et ses ressources.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés au job et à chaque GPU, disque persistant et VM créés pour le job. Après avoir créé la tâche, vous pouvez utiliser ces libellés pour filtrer les rapports Cloud Billing et les listes de tâches, de disques persistants et de VM de votre projet.
Définissez des libellés personnalisés pour la tâche.
Cette section explique comment appliquer un ou plusieurs libellés personnalisés à la tâche. Après avoir créé la tâche, vous pouvez utiliser ces libellés pour filtrer les listes de tâches de votre projet.
Définir des libellés personnalisés pour les exécutables
Cette section explique comment appliquer un ou plusieurs libellés personnalisés à un ou plusieurs exécutables pour la tâche. Une fois la tâche créée, vous pouvez utiliser ces libellés pour filtrer les listes de tâches de votre projet.
Définir des libellés personnalisés pour la tâche et ses ressources
Les libellés définis dans le champ labels
pour la stratégie d'allocation d'une tâche sont appliqués à la tâche, ainsi qu'à chaque GPU (le cas échéant), disque persistant (tous les disques de démarrage et les nouveaux volumes de stockage) et VM créés pour la tâche.
Vous pouvez définir des libellés pour une tâche et ses ressources lorsque vous en créez une à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer une tâche de conteneur de base dans us-central1
qui définit deux étiquettes personnalisées qui s'appliquent à la tâche et aux ressources créées pour la tâche, procédez comme suit:
Créez un fichier JSON qui spécifie les détails de configuration de la tâche et le champ
allocationPolicy.labels
.{ "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }
Remplacez les éléments suivants :
VM_LABEL_NAME1
: nom du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE1
: valeur du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_NAME2
: nom du deuxième libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE2
: valeur de la deuxième étiquette à appliquer aux VM créées pour la tâche.
Créez la tâche dans
us-central1
à l'aide de la commandegcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Remplacez
JSON_CONFIGURATION_FILE
par le chemin d'accès au fichier JSON contenant les informations de configuration de la tâche que vous avez créée à l'étape précédente.
API
Par exemple, pour créer une tâche de conteneur de base dans us-central1
qui définit deux libellés personnalisés qui s'appliquent à la tâche et aux ressources créées pour la tâche, envoyez une requête POST
à la méthode jobs.create
et spécifiez le champ allocationPolicy.labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
],
"labels": {
"VM_LABEL_NAME1": "VM_LABEL_VALUE1",
"VM_LABEL_NAME2": "VM_LABEL_VALUE2"
}
},
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world!"
]
}
}
]
}
}
]
}
Remplacez les éléments suivants :
VM_LABEL_NAME1
: nom du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE1
: valeur du premier libellé à appliquer aux VM créées pour la tâche.VM_LABEL_NAME2
: nom du deuxième libellé à appliquer aux VM créées pour la tâche.VM_LABEL_VALUE2
: valeur de la deuxième étiquette à appliquer aux VM créées pour la tâche.
Java
Node.js
Python
Définir des libellés personnalisés pour le job
Les libellés définis dans le champ labels
pour la tâche ne sont appliqués qu'à la tâche.
Vous pouvez définir des libellés pour une tâche lorsque vous en créez une à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer une tâche de conteneur de base dans us-central1
qui définit deux libellés personnalisés qui s'appliquent à la tâche elle-même, procédez comme suit:
Créez un fichier JSON qui spécifie les détails de configuration de la tâche et le champ
labels
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }
Remplacez les éléments suivants :
JOB_LABEL_NAME1
: nom du premier libellé à appliquer à votre tâche.JOB_LABEL_VALUE1
: valeur du premier libellé à appliquer à votre tâche.JOB_LABEL_NAME2
: nom du deuxième libellé à appliquer à votre tâche.JOB_LABEL_VALUE2
: valeur de la deuxième étiquette à appliquer à votre tâche.
Créez la tâche dans
us-central1
à l'aide de la commandegcloud batch jobs submit
avec les options suivantes:gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Remplacez
JSON_CONFIGURATION_FILE
par le chemin d'accès au fichier JSON contenant les informations de configuration de la tâche que vous avez créée à l'étape précédente.
API
Par exemple, pour créer une tâche de conteneur dans us-central1
qui définit deux libellés personnalisés à appliquer aux tâches elles-mêmes, envoyez une requête POST
à la méthode jobs.create
et spécifiez le champ labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello World!"
]
}
}
]
}
}
],
"labels": {
"JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
"JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
}
}
Remplacez les éléments suivants :
JOB_LABEL_NAME1
: nom du premier libellé à appliquer à votre tâche.JOB_LABEL_VALUE1
: valeur du premier libellé à appliquer à votre tâche.JOB_LABEL_NAME2
: nom du deuxième libellé à appliquer à votre tâche.JOB_LABEL_VALUE2
: valeur de la deuxième étiquette à appliquer à votre tâche.
Java
Node.js
Python
Définir des libellés personnalisés pour les exécutables
Les libellés définis dans le champ labels
pour un exécutable ne sont appliqués qu'à cet exécutable.
Vous pouvez définir des libellés pour un ou plusieurs exécutables lorsque vous créez une tâche à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Par exemple, pour créer une tâche dans us-central1
qui définit deux libellés personnalisés, un pour chacun des exécutables de la tâche, procédez comme suit:
Créez un fichier JSON qui spécifie les détails de configuration de la tâche et les champs
runnables.labels
.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }
Remplacez les éléments suivants :
RUNNABLE1_LABEL_NAME1
: nom du libellé à appliquer au premier exécutable de la tâche.RUNNABLE1_LABEL_VALUE1
: valeur du libellé à appliquer au premier exécutable de la tâche.RUNNABLE2_LABEL_NAME1
: nom du libellé à appliquer au deuxième exécutable de la tâche.RUNNABLE2_LABEL_VALUE1
: valeur du libellé à appliquer au deuxième exécutable de la tâche.
Créez la tâche dans
us-central1
à l'aide de la commandegcloud batch jobs submit
.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
Remplacez
JSON_CONFIGURATION_FILE
par le chemin d'accès au fichier JSON contenant les informations de configuration de la tâche que vous avez créée à l'étape précédente.
API
Par exemple, pour créer une tâche dans us-central1
qui définit deux libellés personnalisés, un pour chacun des deux exécutables de la tâche, envoyez une requête POST
à la méthode jobs.create
et spécifiez les champs runnables.labels
.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello from ${BATCH_TASK_INDEX}!"
]
},
"labels": {
"RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
}
},
{
"script": {
"text": "echo Hello from ${BATCH_TASK_INDEX}!"
},
"labels": {
"RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
}
}
]
}
}
]
}
Remplacez les éléments suivants :
RUNNABLE1_LABEL_NAME1
: nom du libellé à appliquer à l'exécutable de la première tâche.RUNNABLE1_LABEL_VALUE1
: valeur du libellé à appliquer à l'exécutable de la première tâche.RUNNABLE2_LABEL_NAME1
: nom du libellé à appliquer à l'exécutable de la deuxième tâche.RUNNABLE2_LABEL_VALUE1
: valeur du libellé à appliquer à l'exécutable de la deuxième tâche.
Java
Node.js
Python
Étape suivante
Utilisez des libellés comme filtres lorsque vous effectuez les opérations suivantes:
Découvrez comment supprimer des tâches.