Ce document explique comment spécifier le compte de service d'une tâche Batch, qui influe 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 jobs utilisent par défaut le compte de service Compute Engine par défaut, qui est automatiquement associé à toutes les VM d'un projet par défaut. Par conséquent, l'utilisation d'un compte de service personnalisé offre un meilleur contrôle de la gestion des autorisations d'une tâche et constitue une bonne pratique recommandée pour limiter les droits.
En savoir plus sur le compte de service d'une tâche
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 contrôler l'accès aux jobs à l'aide de comptes de service personnalisés, demandez à votre administrateur de vous accorder 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 du job, 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
) sur le projet.
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.
-
Pour créer une tâche :
-
Identifiez le compte de service que vous souhaitez utiliser pour cette tâche. 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 requises 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 tâche, comme indiqué dans cette section.
- Utilisez un modèle d'instance Compute Engine et spécifiez le compte de service personnalisé à la fois dans votre modèle d'instance et dans la définition de votre tâche.
Cette section fournit un exemple de création d'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 la Google Cloud CLI, de l'API Batch, de Java, de Node.js ou de Python.
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é:
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é, effectuez 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.
Java
Node.js
Python
Étape suivante
- Si vous rencontrez des difficultés pour créer ou exécuter une tâche, consultez la section Dépannage.
- Afficher les jobs et les tâches
- Découvrez d'autres options de création de tâches.