Ce document explique comment spécifier le compte de service d'une tâche par lot, qui a une influence sur les ressources et les applications auxquelles les VM d'une tâche peuvent accéder. Si vous ne spécifiez pas de compte de service personnalisé, les tâches utilisent par défaut le compte de service Compute Engine par défaut, qui est automatiquement associé par défaut à toutes les VM d'un projet. Par conséquent, l'utilisation d'un compte de service personnalisé offre un meilleur contrôle sur la gestion des autorisations d'un job et constitue une bonne pratique recommandée pour limiter les droits.
Apprenez-en plus sur le compte de service d'une tâche.
Avant de commencer
- Si vous n'avez jamais utilisé Batch, consultez la page Premiers pas avec Batch et activez Batch en remplissant les conditions préalables pour les projets et les utilisateurs.
-
Pour obtenir les autorisations dont vous avez besoin pour contrôler l'accès aux tâches à l'aide de comptes de service personnalisés, demandez à votre administrateur de vous attribuer les rôles IAM suivants:
-
Pour créer une tâche :
-
É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
-
Éditeur de tâches par lot (
-
Pour afficher les comptes de service : Afficher les comptes de service (
roles/iam.serviceAccountViewer
) du projet
Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.
-
Pour créer une tâche :
-
Identifiez le compte de service que vous souhaitez utiliser pour ce job. Assurez-vous que ce compte de service dispose de toutes les autorisations nécessaires pour exécuter votre tâche.
Découvrez comment afficher les comptes de service et les autorisations nécessaires pour le compte de service d'une tâche.
Créer un job qui utilise un compte de service personnalisé
Pour créer une tâche qui utilise un compte de service personnalisé, sélectionnez l'une des méthodes suivantes:
- Spécifiez le compte de service personnalisé dans la définition de votre job, comme indiqué dans cette section.
- Utilisez un modèle d'instance Compute Engine et spécifiez le compte de service personnalisé dans votre modèle d'instance et dans la définition de votre tâche.
Cette section fournit un exemple illustrant comment créer une tâche qui utilise un compte de service personnalisé. Vous pouvez créer un job qui utilise un compte de service personnalisé à l'aide de gcloud CLI ou de l'API Batch.
gcloud
Pour créer une tâche qui utilise un compte de service personnalisé à l'aide de gcloud CLI, exécutez la commande gcloud batch jobs submit
et spécifiez le compte de service personnalisé dans le fichier de configuration de la tâche.
Par exemple, pour créer une tâche de script qui utilise un compte de service personnalisé, procédez comme suit:
Créez un fichier JSON dans le répertoire actuel, nommé
hello-world-service-account.json
, avec le contenu suivant:{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello World! This is task $BATCH_TASK_INDEX." } } ] } } ], "allocationPolicy": { "serviceAccount": { "email": "SERVICE_ACCOUNT_EMAIL" } } }
où
SERVICE_ACCOUNT_EMAIL
est l'adresse e-mail de votre compte de service. Si le champserviceAccount
n'est pas spécifié, la valeur est définie sur le compte de service Compute Engine par défaut.Exécutez la commande suivante :
gcloud batch jobs submit example-service-account-job \ --location us-central1 \ --config hello-world-service-account.json
API
Pour créer une tâche qui utilise un compte de service personnalisé à l'aide de l'API Batch, utilisez la méthode jobs.create
et spécifiez votre compte de service personnalisé dans le champ allocationPolicy
.
Par exemple, pour créer une tâche de script qui utilise un compte de service personnalisé, exécutez la requête suivante:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/jobs?job_id=example-service-account-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
}
}
],
"allocationPolicy": {
"serviceAccount": {
"email": "SERVICE_ACCOUNT_EMAIL"
}
}
}
Remplacez les éléments suivants :
PROJECT_ID
: ID de projet de votre projet.SERVICE_ACCOUNT_EMAIL
: adresse e-mail de votre compte de service. Si le champserviceAccount
n'est pas spécifié, la valeur est définie sur le compte de service Compute Engine par défaut.
Étapes suivantes
- Si vous rencontrez des problèmes pour créer ou exécuter un job, consultez la section Dépannage.
- Affichez les tâches et les tâches.
- En savoir plus sur les options de création de missions