

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Définitions des emplois
<a name="job_definitions"></a>

AWS Batch les définitions de tâches spécifient la manière dont les tâches doivent être exécutées. Bien que chaque tâche doive faire référence à une définition de tâche, de nombreux paramètres spécifiés dans la définition de tâche peuvent être remplacés lors de l'exécution. 

Parmi les attributs spécifiés dans une définition de tâche figurent les suivants :
+ Quelle image Docker utiliser avec le conteneur dans votre travail.
+ Combien de v CPUs et quelle quantité de mémoire utiliser avec le conteneur.
+ La commande que le conteneur doit exécuter au démarrage.
+ Quelles variables d'environnement (le cas échéant) doivent être transmises au conteneur lors de son démarrage.
+ Tous les volumes de données à utiliser avec le conteneur.
+ Quel rôle IAM (le cas échéant) votre travail doit utiliser pour les AWS autorisations.

**Topics**
+ [Création d'une définition de tâche à nœud unique](create-job-definition.md)
+ [Création d'une définition de tâche parallèle à nœuds multiples](create-multi-node-job-def.md)
+ [Modèle de définition de travail qui utilise ContainerProperties](job-definition-template.md)
+ [Créez des définitions de tâches à l'aide de EcsProperties](multi-container-jobs.md)
+ [Utiliser le pilote de journal awslogs](using_awslogs.md)
+ [Spécifier les données sensibles](specifying-sensitive-data.md)
+ [Authentification par registre privé pour les tâches](private-registry.md)
+ [Volumes Amazon EFS](efs-volumes.md)
+ [Exemples de définitions de tâches](example-job-definitions.md)

# Création d'une définition de tâche à nœud unique
<a name="create-job-definition"></a>

Avant de pouvoir exécuter des tâches AWS Batch, vous devez créer une définition de tâche. Ce processus varie légèrement entre les tâches parallèles à nœud unique et à nœuds multiples. Cette rubrique explique spécifiquement comment créer une définition de tâche pour une tâche qui n'est pas une AWS Batch tâche parallèle à plusieurs nœuds (également connue sous le nom de *planification en groupe*).

Vous pouvez créer une définition de tâche parallèle à plusieurs nœuds sur les ressources Amazon Elastic Container Service. Pour de plus amples informations, veuillez consulter [Création d'une définition de tâche parallèle à nœuds multiples](create-multi-node-job-def.md). 

**Topics**
+ [Création d'une définition de tâche à nœud unique sur les ressources Amazon EC2](create-job-definition-EC2.md)
+ [Création d'une définition de tâche à nœud unique sur les ressources Fargate](create-job-definition-Fargate.md)
+ [Création d'une définition de tâche à nœud unique sur les ressources Amazon EKS](create-job-definition-eks.md)
+ [Création d'une définition de tâche à nœud unique avec plusieurs conteneurs sur les ressources Amazon EC2](create-job-definition-single-node-multi-container.md)

# Création d'une définition de tâche à nœud unique sur les ressources Amazon EC2
<a name="create-job-definition-EC2"></a>

Procédez comme suit pour créer une définition de tâche à nœud unique sur les ressources Amazon Elastic Compute Cloud (Amazon EC2).

**Pour créer une nouvelle définition de tâche sur les ressources Amazon EC2 :**

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans la barre de navigation, choisissez le Région AWS à utiliser.

1. Dans le volet de navigation de gauche, choisissez **Job definitions**.

1. Choisissez **Créer**.

1. Pour le **type d'orchestration,** choisissez **Amazon Elastic Compute Cloud (Amazon EC2).**

1. Pour la **configuration de la plate-forme EC2**, désactivez l'**option Activer le traitement parallèle à nœuds multiples**.

1. Dans **Nom**, entrez un nom unique pour votre définition de tâche. Le nom peut comporter jusqu'à 128 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (\$1).

1. (Facultatif) Pour le **délai d'exécution**, entrez la valeur du délai d'expiration (en secondes). Le délai d'exécution est le délai avant la fin d'une tâche inachevée. Si une tentative dépasse le délai imparti, elle est arrêtée et passe à un `FAILED` statut. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md). La valeur minimale est 60 secondes.

1. (Facultatif) Activez la **priorité de planification**. Entrez une valeur de priorité de planification comprise entre 0 et 100. Les valeurs les plus élevées reçoivent une priorité plus élevée.

1. (Facultatif) Pour les **tentatives de tâche**, entrez le nombre de AWS Batch tentatives de transfert de la tâche vers le `RUNNABLE` statut. Entrez un nombre compris entre 1 et 10.

1. (Facultatif) Pour les **conditions de la stratégie Réessayer**, choisissez **Ajouter une évaluation à la sortie**. Entrez au moins une valeur de paramètre, puis choisissez une **action**. Pour chaque ensemble de conditions, l'**action** doit être définie sur **Réessayer** ou sur **Quitter**. Ces actions signifient ce qui suit :
   + **Réessayer** — AWS Batch Réessaie jusqu'à ce que le nombre de tentatives de travail que vous avez spécifié soit atteint.
   + **Quitter** : AWS Batch arrête de réessayer la tâche.
**Important**  
Si vous choisissez **Ajouter une évaluation à la sortie**, vous devez configurer au moins un paramètre et soit choisir une **action**, soit choisir **Supprimer l'évaluation à la sortie**.

1. (Facultatif) Développez les **balises**, puis choisissez **Ajouter une balise** pour ajouter des balises à la ressource. Entrez une clé et une valeur facultative, puis choisissez **Ajouter une étiquette**.

1. (Facultatif) Activez les **balises de propagation** pour propager les balises de la tâche et de la définition de la tâche vers la tâche Amazon ECS.

1. Choisissez **Page suivante**.

1. Dans la section **Configuration du conteneur** :

   1. Dans **Image**, choisissez l'Dockerimage à utiliser pour votre travail. Par défaut, les images dans le registre Docker Hub sont disponibles. Vous pouvez également spécifier d'autres référentiels avec `repository-url/image:tag`. Le nom peut comporter jusqu'à 225 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-), des traits de soulignement (\$1), des deux-points (:), des barres obliques (/) et des signes numériques (\$1). Ce paramètre se mappe à `Image` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Création d'un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) (L'API Docker à distance) et le paramètre `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**Note**  
L'architecture des images Docker doit correspondre à l'architecture du processeur des ressources de calcul sur lesquelles elles sont planifiées. Par exemple, les images Docker basées sur ARM ne peuvent s'exécuter que sur des ressources de calcul basées sur ARM.
      + Les images contenues dans les référentiels publics Amazon ECR utilisent les conventions complètes `registry/repository[:tag]` ou de `registry/repository[@digest]` dénomination (par exemple,`public.ecr.aws/registry_alias/my-web-app:latest`).
      + Les images contenues dans les référentiels Amazon ECR utilisent la convention de `registry/repository[:tag]` dénomination complète (par exemple, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
      + Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, `ubuntu` ou `mongo`).
      + Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, `amazon/amazon-ecs-agent`).
      + Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, `quay.io/assemblyline/ubuntu`).

   1. Pour **Command**, entrez les commandes dans le champ en tant qu'équivalent dans un tableau de chaînes **JSON**.

      Ce paramètre correspond à `Cmd` dans la section [Create a container (Création d'un conteneur)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de [Docker Remote API (API distante Docker)](https://docs.docker.com/engine/api/v1.38/) et au paramètre `COMMAND` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Pour plus d'informations sur le Docker `CMD` paramètre, consultez [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/#cmd) \$1cmd.
**Note**  
Vous pouvez utiliser des valeurs par défaut pour la substitution de paramètres et des espaces réservés dans votre commande. Pour de plus amples informations, veuillez consulter [Paramètres](job_definition_parameters.md#parameters).

   1. (Facultatif) Pour **le rôle d'exécution**, spécifiez un rôle IAM qui autorise les agents de conteneur Amazon ECS à effectuer des appels d' AWS API en votre nom. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour les tâches. Pour plus d'informations, consultez les [rôles IAM d'exécution de tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) dans le manuel *Amazon Elastic Container Service Developer Guide*. 

   1. Pour la **configuration du rôle Job**, choisissez un rôle IAM autorisé à accéder au AWS APIs. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour les tâches. Pour plus d’informations, consultez [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *Guide du développeur Amazon Elastic Container Service*.
**Note**  
Seuls les rôles dotés d'une relation de confiance avec **Amazon Elastic Container Service Task** Role sont présentés ici. Pour plus d'informations sur la création d'un rôle IAM pour vos AWS Batch tâches, consultez la section [Création d'un rôle IAM et d'une politique pour vos tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) dans le manuel *Amazon Elastic Container Service Developer Guide*.

1. Pour **Paramètres**, choisissez **Ajouter des paramètres** pour ajouter des espaces réservés de substitution de paramètres sous forme de paires **clé** et **valeur** facultatives.

1. Dans la section **Configuration de l'environnement** :

   1. Pour **v CPUs**, entrez le nombre de v CPUs à réserver pour le conteneur. Ce paramètre correspond à `CpuShares` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--cpu-shares` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Chaque processeur virtuel est équivalente à 1 024 parts de processeur. Vous devez spécifier au moins un vCPU.

   1. Pour **Mémoire**, entrez la limite de mémoire disponible pour le conteneur. Si votre conteneur tente de dépasser la quantité de mémoire spécifiée ici, il est arrêté. Ce paramètre correspond à `Memory` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--memory` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Vous devez spécifier au moins 4 Mio de mémoire pour une tâche.
**Note**  
Pour optimiser l'utilisation de vos ressources, donnez la priorité à la mémoire pour les tâches d'un type d'instance spécifique. Pour de plus amples informations, veuillez consulter [Gestion de la mémoire des ressources informatiques](memory-management.md).

   1. Dans **le champ Nombre de GPUs**, choisissez le nombre de GPUs à réserver pour le conteneur.

   1. (Facultatif) Pour les **variables d'environnement**, choisissez **Ajouter une variable d'environnement** pour ajouter des variables d'environnement sous forme de paires nom-valeur. Ces variables sont transmises au conteneur.

   1. (Facultatif) Pour **les secrets**, choisissez **Ajouter un secret** pour ajouter des secrets sous forme de paires nom-valeur. Ces secrets sont exposés dans le contenant. [Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Choisissez **Page suivante**.

1. Dans la section **de configuration Linux** :

   1. Dans **Interface**, saisissez le nom d'utilisateur à utiliser à l'intérieur du conteneur. Ce paramètre correspond à `User` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--user` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Facultatif) Pour accorder au conteneur de tâches des autorisations élevées sur l'instance hôte (comme pour l'`root`utilisateur), faites glisser le curseur **Privileged** vers la droite. Ce paramètre correspond à `Privileged` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--privileged` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Facultatif) **Activez Activer le processus d'initialisation** pour exécuter un `init` processus dans le conteneur. Ce processus transmet les signaux et récolte les processus.

1. (Facultatif) Dans la section **Configuration du système de fichiers** :

   1. **Activez l'option Activer le système de fichiers en lecture seule** pour supprimer l'accès en écriture au volume.

   1. Pour **Taille de la mémoire partagée**, entrez la taille (en MiB) du `/dev/shm` volume.

   1. Pour **Taille maximale de swap**, entrez la quantité totale de mémoire d'échange (en MiB) que le conteneur peut utiliser.

   1. Pour **Swappiness**, entrez une valeur comprise entre 0 et 100 pour indiquer le comportement de swappiness du conteneur. Si vous ne spécifiez aucune valeur et que le swap est activé, la valeur par défaut est 60. [Pour plus d'informations, consultez : LinuxParameters swappiness.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)

   1. (Facultatif) Développez **la configuration supplémentaire**.

   1. (Facultatif) Pour les fichiers **Tmpfs**, choisissez **Ajouter des fichiers tmpfs** pour ajouter un montage. `tmpfs`

   1. (Facultatif) Pour **Appareils**, choisissez **Ajouter un appareil** pour ajouter un appareil :

      1. Sous **Chemin du conteneur**, spécifiez le chemin d'accès de l'instance du conteneur pour exposer l'appareil mappé à l'instance de l'hôte. Si vous laissez ce champ vide, le chemin de l'hôte est utilisé dans le conteneur.

      1. Sous **Host path (Chemin de l'hôte)**, spécifiez le chemin d'accès d'un appareil dans l'instance de l'hôte.

      1. Pour **Autorisations**, choisissez une ou plusieurs autorisations à appliquer à l'appareil. Les autorisations disponibles sont **READ**, **WRITE** et **MKNOD**.

   1. (Facultatif) Pour **la configuration des volumes**, choisissez **Ajouter un volume** pour créer une liste de volumes à transmettre au conteneur. Entrez **le nom** et le **chemin source** du volume, puis choisissez **Ajouter un volume**. Vous pouvez également choisir d'activer **Activer EFS**.

   1. (Facultatif) Pour les **points de montage**, choisissez **Ajouter une configuration de points de montage** pour ajouter des points de montage pour les volumes de données. Vous devez spécifier le volume source et le chemin du conteneur. Ces points de montage sont transmis Docker daemon à une instance de conteneur. Vous pouvez également choisir de rendre le volume en **lecture seule**.

   1. (Facultatif) Pour **la configuration Ulimits**, choisissez **Add ulimit** pour ajouter une `ulimits` valeur au conteneur. Entrez les valeurs **Nom**, **Limite souple** et **Limite stricte**, puis choisissez **Ajouter une limite**.

1. Dans la section **Propriétés de la tâche** :

   1. Pour **Rôle d'exécution - conditionnel**, choisissez un rôle pour autoriser les agents Amazon ECS à effectuer des appels d' AWS API en votre nom. Pour plus d'informations sur la création d'un **rôle d'exécution**, consultez[Tutoriel : Création du rôle d'exécution IAM](create-execution-role.md).

   1. Choisissez la **commande Enable ECS execute** pour permettre l'accès direct au shell du conteneur Amazon ECS et contourner le système d'exploitation hôte. Vous devez choisir un **rôle de tâche**.
**Important**  
La commande **ECS execute** nécessite que le système de fichiers soit accessible en écriture. 

   1. Pour **le rôle Task**, choisissez un rôle Amazon ECS Identity and Access Management (IAM) pour autoriser le conteneur à effectuer des appels d' AWS API en votre nom. Pour plus d'informations, consultez le [rôle IAM de la tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *manuel du développeur Amazon Elastic Container Service*.

1. (Facultatif) Dans la section **Configuration de la journalisation** :

   1. Pour **Log driver**, choisissez le log driver à utiliser. [Pour plus d'informations sur les pilotes de journal disponibles, voir : LogDriverLogConfiguration.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**Note**  
Par défaut, le pilote de `awslogs` journal est utilisé.

   1. Pour **Options**, choisissez **Ajouter une option** pour ajouter une option. Entrez une paire nom-valeur, puis choisissez **Ajouter** une option.

   1. Pour **Secrets**, choisissez **Ajouter un secret**. Entrez une paire nom-valeur, puis choisissez **Ajouter un secret** pour ajouter un secret.
**Astuce**  
[Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Choisissez **Page suivante**.

1. Pour la **révision de la définition du Job**, passez en revue les étapes de configuration. Si vous devez apporter des modifications, choisissez **Modifier**. Lorsque vous avez terminé, choisissez **Créer une définition de tâche**.

# Création d'une définition de tâche à nœud unique sur les ressources Fargate
<a name="create-job-definition-Fargate"></a>

Procédez comme suit pour créer une définition de tâche à nœud unique sur les AWS Fargate ressources.

**Pour créer une nouvelle définition de tâche sur les ressources Fargate :**

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans la barre de navigation supérieure, choisissez le Région AWS à utiliser.

1. Dans le volet de navigation de gauche, choisissez **Job definitions**.

1. Choisissez **Créer**.

1. Pour le **type d'orchestration**, choisissez **Fargate**. Pour de plus amples informations, veuillez consulter [Environnements informatiques Fargate](fargate.md).

1. Dans **Nom**, entrez un nom unique pour votre définition de tâche. Le nom peut comporter jusqu'à 128 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (\$1).

1. (Facultatif) Pour le **délai d'exécution**, entrez la valeur du délai d'expiration (en secondes). Le délai d'exécution est le délai avant la fin d'une tâche inachevée. Si une tentative dépasse le délai imparti, elle est arrêtée et passe à un `FAILED` statut. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md). La valeur minimale est 60 secondes.

1. (Facultatif) Activez la **priorité de planification**. Entrez une valeur de priorité de planification comprise entre 0 et 100. Les valeurs les plus élevées ont une priorité plus élevée que les valeurs faibles.

1. (Facultatif) Développez les **balises**, puis choisissez **Ajouter une balise** pour ajouter des balises à la ressource. Activez **Propager les balises pour propager les balises** à partir de la tâche et de la définition de la tâche.

1. Dans la section de **configuration de la plateforme Fargate** :

   1. Pour **Runtime Platform**, choisissez l'architecture de l'environnement de calcul.

   1. Pour **Famille de systèmes d'exploitation**, choisissez le système d'exploitation pour l'environnement informatique.

   1. Pour **Architecture du processeur**, choisissez l'architecture vCPU.

   1. Pour la version **de la plateforme Fargate**, `LATEST` entrez ou une version d'environnement d'exécution spécifique.

   1. (Facultatif) Activez l'option **Attribuer une adresse IP publique** pour attribuer une adresse IP publique à une interface réseau de tâches Fargate. Pour qu'une tâche exécutée dans un sous-réseau privé envoie du trafic sortant vers Internet, le sous-réseau privé nécessite qu'une passerelle NAT soit attachée pour acheminer les demandes vers Internet. Vous pouvez le faire afin de pouvoir extraire des images de conteneurs. Pour plus d'informations, consultez [Mise en réseau des tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html) dans le *Guide du développeur Amazon Elastic Container Service*.

   1. (Facultatif) Pour **Stockage éphémère, entrez la quantité de stockage** éphémère à allouer à la tâche. La quantité de stockage éphémère doit être comprise entre 21 GiB et 200 GiB. Par défaut, 20 GiB de stockage éphémère sont alloués si vous ne saisissez aucune valeur.
**Note**  
Le stockage éphémère nécessite la version 1.4 ou ultérieure de la plateforme Fargate.

   1. Pour **le rôle d'exécution**, spécifiez un rôle IAM qui autorise le conteneur Amazon ECS et les agents Fargate à AWS effectuer des appels d'API en votre nom. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d'informations, notamment sur les prérequis de configuration, consultez les [rôles IAM d'exécution de tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) dans le manuel *Amazon Elastic Container Service Developer Guide*. 

   1. Pour les **tentatives de tâche**, entrez le nombre de AWS Batch tentatives de transfert de la tâche vers un `RUNNABLE` statut. Entrez un nombre compris entre 1 et 10.

   1. (Facultatif) Pour les **conditions de la stratégie Réessayer**, choisissez **Ajouter une évaluation à la sortie**. Entrez au moins une valeur de paramètre, puis choisissez une **action**. Pour chaque ensemble de conditions, l'**action** doit être définie sur **Réessayer** ou sur **Quitter**. Ces actions signifient ce qui suit :
      + **Réessayer** — AWS Batch Réessaie jusqu'à ce que le nombre de tentatives de travail que vous avez spécifié soit atteint.
      + **Quitter** : AWS Batch arrête de réessayer la tâche.
**Important**  
Si vous choisissez **Ajouter une évaluation à la sortie**, vous devez configurer au moins un paramètre et choisir une **action** ou choisir **Supprimer l'évaluation à la sortie**.

1. Choisissez **Page suivante**.

1. Dans la section **Configuration du conteneur** :

   1. Dans **Image**, choisissez l'image Docker à utiliser pour votre travail. Par défaut, les images dans le registre Docker Hub sont disponibles. Vous pouvez également spécifier d'autres référentiels avec `repository-url/image:tag`. Le nom peut comporter jusqu'à 225 caractères. Il peut contenir des majuscules et des minuscules, des chiffres, des tirets (-), des traits de soulignement (\$1), deux points (:), des points (.), des barres obliques (/) et des signes dièse (\$1). Ce paramètre se mappe à `Image` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Création d'un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) (L'API Docker à distance) et le paramètre `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**Note**  
L'architecture des images Docker doit correspondre à l'architecture du processeur des ressources de calcul sur lesquelles elles sont planifiées. Par exemple, les images Docker basées sur ARM ne peuvent s'exécuter que sur des ressources de calcul basées sur ARM.
      + Les images contenues dans les référentiels publics Amazon ECR utilisent les conventions complètes `registry/repository[:tag]` ou de `registry/repository[@digest]` dénomination (par exemple,`public.ecr.aws/registry_alias/my-web-app:latest`).
      + Les images contenues dans les référentiels Amazon ECR utilisent la convention de `registry/repository[:tag]` dénomination complète (par exemple, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
      + Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, `ubuntu` ou `mongo`).
      + Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, `amazon/amazon-ecs-agent`).
      + Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, `quay.io/assemblyline/ubuntu`).

   1. Pour **Command**, entrez les commandes dans le champ en tant qu'équivalent dans un tableau de chaînes JSON.

      Ce paramètre correspond à `Cmd` dans la section [Create a container (Création d'un conteneur)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de [Docker Remote API (API distante Docker)](https://docs.docker.com/engine/api/v1.38/) et au paramètre `COMMAND` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Pour plus d'informations sur le Docker `CMD` paramètre, consultez [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/#cmd) \$1cmd.
**Note**  
Vous pouvez utiliser des valeurs par défaut pour la substitution de paramètres et des espaces réservés dans votre commande. Pour de plus amples informations, veuillez consulter [Paramètres](job_definition_parameters.md#parameters).

   1. (Facultatif) Ajoutez des paramètres à la définition de tâche sous forme de mappages nom-valeur pour remplacer les valeurs par défaut de définition de tâche. Pour ajouter un paramètre :

      1. Pour **Paramètres**, choisissez **Ajouter des paramètres**, entrez une paire nom-valeur, puis choisissez **Ajouter** un paramètre.
**Important**  
Si vous choisissez **Ajouter un paramètre**, vous devez configurer au moins un paramètre ou choisir **Supprimer le paramètre**

   1. Dans la section **Configuration de l'environnement** :

      

      1. Pour la **configuration du rôle Job**, choisissez un rôle IAM autorisé à. AWS APIs Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d’informations, consultez [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *Guide du développeur Amazon Elastic Container Service*.
**Note**  
Seuls les rôles dotés d'une relation de confiance avec **Amazon Elastic Container Service Task** Role sont présentés ici. Pour plus d'informations sur la création d'un rôle IAM pour vos AWS Batch tâches, consultez la section [Création d'un rôle IAM et d'une politique pour vos tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) dans le manuel *Amazon Elastic Container Service Developer Guide*.

      1. Pour **v CPUs**, entrez le nombre de v CPUs à réserver pour le conteneur. Ce paramètre correspond à `CpuShares` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--cpu-shares` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Chaque processeur virtuel est équivalente à 1 024 parts de processeur. Vous devez spécifier au moins un vCPU.

      1. Pour **Mémoire**, entrez la limite de mémoire disponible pour le conteneur. Si votre conteneur tente de dépasser la mémoire spécifiée ici, il est arrêté. Ce paramètre correspond à `Memory` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--memory` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Vous devez spécifier au moins 4 Mio de mémoire pour une tâche.

         Si vous utilisez la surveillance du temps GuardDuty d'exécution, l'agent de GuardDuty sécurité est légèrement surchargé en mémoire. La limite de mémoire doit donc inclure la taille de l'agent GuardDuty de sécurité. Pour plus d'informations sur les limites de mémoire des agents de GuardDuty sécurité, consultez la section [Limites de processeur et de mémoire](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits) dans le *Guide de GuardDuty l'utilisateur*. Pour plus d'informations sur les meilleures pratiques, consultez la section [Comment corriger les erreurs liées au manque de mémoire sur mes tâches Fargate après avoir activé la surveillance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-troubleshooting.html#memory-error) du temps d'exécution dans le manuel *Amazon* ECS Developer Guide.
**Note**  
Pour optimiser l'utilisation de vos ressources, donnez la priorité à la mémoire pour les tâches d'un type d'instance spécifique. Pour de plus amples informations, veuillez consulter [Gestion de la mémoire des ressources informatiques](memory-management.md).

   1. (Facultatif) Pour les **variables d'environnement**, choisissez **Ajouter une variable d'environnement** pour ajouter des variables d'environnement sous forme de paires nom-valeur. Ces variables sont transmises au conteneur.

   1. (Facultatif) Pour **les secrets**, choisissez **Ajouter un secret** pour ajouter des secrets sous forme de paires nom-valeur. Ces secrets sont exposés dans le contenant. [Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. Choisissez **Page suivante**.

1. (Facultatif) Dans la section **de configuration Linux** :

   1. Pour **Utilisateur**, entrez un nom d'utilisateur à utiliser dans le conteneur.

   1. **Activez Activer le processus d'initialisation** pour exécuter un processus d'initialisation dans le conteneur. Ce processus transmet les signaux et récolte les processus.

   1. **Activez l'option Activer le système de fichiers en lecture seule** pour supprimer l'accès en écriture au volume.

   1. (Facultatif) Développez **la configuration supplémentaire**.

   1. Pour la **configuration des points de montage**, choisissez **Ajouter une configuration de points de montage** pour ajouter des points de montage pour les volumes de données. Vous devez spécifier le volume source et le chemin du conteneur. Ces points de montage sont transmis Docker daemon à une instance de conteneur.

   1. Pour **la configuration des volumes**, choisissez **Ajouter un volume** pour créer une liste de volumes à transmettre au conteneur. Entrez un **nom** et un **chemin source** pour le volume, puis choisissez **Ajouter un volume**. 

   1. Dans la section **Propriétés de la tâche** :

      1. Pour **Rôle d'exécution - conditionnel**, choisissez un rôle pour autoriser les agents Amazon ECS à effectuer des appels d' AWS API en votre nom. Pour plus d'informations sur la création d'un **rôle d'exécution**, consultez[Tutoriel : Création du rôle d'exécution IAM](create-execution-role.md).

      1. Choisissez la **commande Enable ECS execute** pour permettre l'accès direct au shell du conteneur Amazon ECS et contourner le système d'exploitation hôte. Vous devez choisir un **rôle de tâche**.
**Important**  
La commande **ECS execute** nécessite que le système de fichiers soit accessible en écriture. 

      1. Pour **le rôle Task**, choisissez un rôle Amazon ECS Identity and Access Management (IAM) pour autoriser le conteneur à effectuer des appels d' AWS API en votre nom. Pour plus d'informations, consultez le [rôle IAM de la tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *manuel du développeur Amazon Elastic Container Service*.

   1. Dans la section **Configuration de la journalisation** :

      1. (Facultatif) Pour **Log driver**, choisissez le log driver à utiliser. [Pour plus d'informations sur les pilotes de journal disponibles, voir : LogDriverLogConfiguration.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**Note**  
Par défaut, le pilote de `awslogs` journal est utilisé.

      1. (Facultatif) Pour **Options**, choisissez **Ajouter une option** pour ajouter une option. Entrez une paire nom-valeur, puis choisissez **Ajouter** une option.

      1. (Facultatif) Pour **Secrets**, choisissez **Ajouter un secret** pour ajouter un secret. Entrez ensuite une paire nom-valeur, puis choisissez **Ajouter** un secret.
**Astuce**  
[Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Choisissez **Page suivante**.

1. Pour la **révision de la définition du Job**, passez en revue les étapes de configuration. Si vous devez apporter des modifications, choisissez **Modifier**. Lorsque vous avez terminé, choisissez **Créer une définition de tâche**.

# Création d'une définition de tâche à nœud unique sur les ressources Amazon EKS
<a name="create-job-definition-eks"></a>

Procédez comme suit pour créer une définition de tâche à nœud unique sur Amazon Elastic Kubernetes Service (Amazon EKS).

**Pour créer une nouvelle définition de tâche sur les ressources Amazon EKS :**

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans la barre de navigation supérieure, choisissez le Région AWS à utiliser.

1. Dans le volet de navigation de gauche, choisissez **Job definitions**.

1. Choisissez **Créer**.

1. Pour le **type d'orchestration**, choisissez **Elastic Kubernetes Service** (EKS).

1. Dans **Nom**, entrez un nom unique pour votre définition de tâche. Le nom peut comporter jusqu'à 128 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (\$1).

1. (Facultatif) Pour le **délai d'exécution**, entrez la valeur du délai d'expiration (en secondes). Le délai d'exécution est le délai avant la fin d'une tâche inachevée. Si une tentative dépasse le délai imparti, elle est arrêtée et passe à un `FAILED` statut. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md). La valeur minimale est 60 secondes.

1. (Facultatif) Activez la **priorité de planification**. Entrez une valeur de priorité de planification comprise entre 0 et 100. Les valeurs les plus élevées ont une priorité plus élevée que les valeurs faibles.

1. (Facultatif) Développez les **balises**, puis choisissez **Ajouter une balise** pour ajouter des balises à la ressource.

1. Choisissez **Page suivante**.

1. Dans la section des **podpropriétés d'EKS** :

   1. Pour le **nom du compte de service**, entrez un compte qui fournit une identité pour les processus exécutés dans unpod.

   1. Activez le **réseau hôte** pour utiliser le modèle de Kubernetes pod réseau et ouvrez un port d'écoute pour les connexions entrantes. Désactivez ce paramètre pour les communications sortantes uniquement.

   1. Pour la **politique DNS**, choisissez l'une des options suivantes :
      + **Aucune valeur (null)** : pod ignore les paramètres DNS de l'Kubernetesenvironnement.
      + **Par défaut** : pod hérite de la configuration de résolution des noms du nœud sur lequel il s’exécute.
**Note**  
Si aucune politique DNS n’est spécifiée, **Valeur par défaut** n’est pas la politique DNS par défaut. Au lieu de cela, **ClusterFirst**est utilisé.
      + **ClusterFirst**— Toute requête DNS qui ne correspond pas au suffixe de domaine du cluster configuré est transmise au serveur de noms en amont hérité du nœud. 
      + **ClusterFirstWithHostNet**— À utiliser si le **réseau hôte** est activé.

   1. (Facultatif) Pour **Volumes**, sélectionnez **Ajouter un volume**, puis :

      1. Ajoutez un **nom** à votre volume.

      1. (Facultatif) Ajoutez le **chemin de l'hôte** pour le répertoire sur l'hôte. 

      1. (Facultatif) Ajoutez une limite de **taille** et une **limite de taille** pour configurer un [Kubernetes](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) EmptyDir.

      1. (Facultatif) Indiquez un **nom secret** pour le module et indiquez si le secret est **facultatif**.

      1. **(Facultatif) Définissez un **nom de réclamation** pour associer une [réclamation de volume persistant](https://kubernetes.io/docs/concepts/storage/persistent-volumes/) Kubernetes au pod, et indiquez si elle est en lecture seule.**

   1. (Facultatif) Pour les **étiquettes du module**, choisissez **Ajouter des étiquettes du module**, puis entrez une paire nom-valeur. 
**Important**  
Le préfixe d'une étiquette de module ne peut pas contenir `kubernetes.io/``k8s.io/`, ou`batch.amazonaws.com/`.

   1. (Facultatif) Pour les **annotations Pod**, choisissez **Ajouter des annotations**, puis entrez une paire nom-valeur. 
**Important**  
Le préfixe d'une annotation de module ne peut pas contenir `kubernetes.io/``k8s.io/`, ou`batch.amazonaws.com/`.

   1. Choisissez **Page suivante**.

   1. Dans la section **Configuration du conteneur** :

      1. Dans **Nom**, entrez un nom unique pour le conteneur. Le nom doit commencer par une lettre ou un chiffre et peut comporter jusqu'à 63 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres et des traits d'union (-).

      1. Dans **Image**, choisissez l'Dockerimage à utiliser pour votre travail. Par défaut, les images dans le registre Docker Hub sont disponibles. Vous pouvez également spécifier d'autres référentiels avec `repository-url/image:tag`. Le nom peut comporter jusqu’à 255 caractères. Il peut contenir des majuscules et des minuscules, des chiffres, des tirets (-), des traits de soulignement (\$1), deux points (:), des points (.), des barres obliques (/) et des signes dièse (\$1). Ce paramètre correspond `Image` à la section [Créer un conteneur](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de l'[API Docker Remote](https://docs.docker.com/engine/api/v1.38/) et au `IMAGE` paramètre de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/)
**Note**  
L'architecture des images Docker doit correspondre à l'architecture du processeur des ressources de calcul sur lesquelles elles sont planifiées. Par exemple, les images Docker basées sur ARM ne peuvent s'exécuter que sur des ressources de calcul basées sur ARM.
         + Les images contenues dans les référentiels publics Amazon ECR utilisent les conventions complètes `registry/repository[:tag]` ou de `registry/repository[@digest]` dénomination (par exemple,`public.ecr.aws/registry_alias/my-web-app:latest`).
         + Les images contenues dans les référentiels Amazon ECR utilisent la convention de `registry/repository[:tag]` dénomination complète (par exemple, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
         + Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, `ubuntu` ou `mongo`).
         + Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, `amazon/amazon-ecs-agent`).
         + Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, `quay.io/assemblyline/ubuntu`).

      1. (Facultatif) Pour la **politique d'extraction** d'images, choisissez quand les images sont extraites.

      1. (Facultatif) Dans **Commande**, entrez une JSON commande à transmettre au conteneur.

      1. (Facultatif) **Dans Arguments**, entrez les arguments à transmettre au conteneur. Si aucun argument n'est fourni, la commande container image est utilisée.

   1. (Facultatif) Vous pouvez ajouter des paramètres à la définition de tâche sous forme de mappages nom-valeur pour remplacer les valeurs par défaut de définition de tâche. Pour ajouter un paramètre :

      1. Pour **Paramètres**, entrez une paire nom-valeur, puis choisissez **Ajouter** un paramètre.
**Important**  
Si vous choisissez **Ajouter un paramètre**, vous devez configurer au moins un paramètre ou choisir **Supprimer le paramètre**

   1. Dans la section **Configuration de l'environnement** :

      1. Pour **v CPUs**, entrez le nombre de v CPUs à réserver pour le conteneur. Ce paramètre correspond à `CpuShares` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--cpu-shares` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Chaque processeur virtuel est équivalente à 1 024 parts de processeur. Vous devez spécifier au moins un vCPU.

      1. Pour **Mémoire**, entrez la limite de mémoire disponible pour le conteneur. Si votre conteneur tente de dépasser la mémoire spécifiée ici, il est arrêté. Ce paramètre correspond à `Memory` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--memory` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Vous devez spécifier au moins 4 Mio de mémoire pour une tâche.
**Note**  
Pour optimiser l'utilisation de vos ressources, donnez la priorité à la mémoire pour les tâches d'un type d'instance spécifique. Pour de plus amples informations, veuillez consulter [Gestion de la mémoire des ressources informatiques](memory-management.md).

   1. (Facultatif) Pour les **variables d'environnement**, choisissez **Ajouter une variable d'environnement** pour ajouter des variables d'environnement sous forme de paires nom-valeur. Ces variables sont transmises au conteneur.

   1. (Facultatif) Pour **le montage du volume** :

      1. Choisissez **Ajouter un montage de volume**.

      1. Entrez un **nom**, puis un **chemin de montage** dans le conteneur dans lequel le volume est monté. Entrez a **SubPath**pour spécifier un sous-chemin à l'intérieur du volume référencé au lieu de sa racine. 

      1. Choisissez **Lecture seule** pour supprimer les autorisations d'écriture sur le volume.

      1. Choisissez **Ajouter un montage de volume**.

   1. (Facultatif) Pour **Exécuter en tant qu'utilisateur**, entrez un ID utilisateur pour exécuter le processus de conteneur.
**Note**  
L'ID utilisateur doit figurer dans l'image pour que le conteneur puisse fonctionner.

   1. (Facultatif) Pour **Exécuter en tant que groupe**, entrez un ID de groupe pour exécuter le runtime du processus de conteneur.
**Note**  
L'ID de groupe doit exister dans l'image pour que le conteneur puisse fonctionner.

   1. (Facultatif) Pour accorder au conteneur de votre tâche des autorisations élevées sur l'instance hôte (comme pour l'`root`utilisateur), faites glisser le curseur **Privileged** vers la droite. Ce paramètre correspond à `Privileged` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--privileged` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Facultatif) Activez le système de **fichiers racine en lecture seule pour supprimer l'accès en écriture au système** de fichiers racine.

   1. (Facultatif) Activez **Exécuter en tant qu'utilisateur non-root** pour exécuter les conteneurs en pod tant qu'utilisateur non-root.
**Note**  
Si l'**option Exécuter en tant que non-root** est activée, l'image est kubelet validée au moment de l'exécution pour vérifier qu'elle ne s'exécute pas avec l'UID 0. 

   1. Choisissez **Page suivante**.

1. Pour la **révision de la définition du Job**, passez en revue les étapes de configuration. Si vous devez apporter des modifications, choisissez **Modifier**. Lorsque vous avez terminé, choisissez **Créer une définition de tâche**.

# Création d'une définition de tâche à nœud unique avec plusieurs conteneurs sur les ressources Amazon EC2
<a name="create-job-definition-single-node-multi-container"></a>

Procédez comme suit pour créer une définition de tâche à nœud unique avec plusieurs conteneurs sur les ressources Amazon Elastic Compute Cloud (Amazon EC2).

**Pour créer une nouvelle définition de tâche sur les ressources Amazon EC2 :**

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans la barre de navigation, choisissez le Région AWS à utiliser.

1. Dans le volet de navigation de gauche, choisissez **Job definitions**.

1. Choisissez **Créer**.

1. Pour le **type d'orchestration,** choisissez **Amazon Elastic Compute Cloud (Amazon EC2).**

1. Pour la **structure de définition du Job**, désactivez le traitement de la **structure Use legacy ContainerProperties**.

1. Pour la **configuration de la plate-forme EC2**, désactivez l'**option Activer le traitement parallèle à nœuds multiples**.

1. Choisissez **Suivant**.

1. Dans la section **Configuration générale**, entrez ce qui suit :

   1. Dans **Nom**, entrez un nom unique pour votre définition de tâche. Le nom peut comporter jusqu'à 128 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (\$1).

   1. Pour **Execution timeout (*facultatif)***, entrez la valeur du délai (en secondes). Le délai d'exécution est le délai avant la fin d'une tâche inachevée. Si une tentative dépasse le délai imparti, elle est arrêtée et passe à un `FAILED` statut. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md). La valeur minimale est 60 secondes.

   1. Activez la **priorité de planification *(facultatif)***. Entrez une valeur de priorité de planification comprise entre 0 et 100. Les valeurs les plus élevées reçoivent une priorité plus élevée.

   1. Développer les **balises : *facultatif***, puis choisissez **Ajouter une balise** pour ajouter des balises à la ressource. Entrez une clé et une valeur facultative, puis choisissez **Ajouter une étiquette**.

   1. Activez les **balises de propagation** pour propager les balises de la tâche et de la définition de la tâche vers la tâche Amazon ECS.

1. Dans la section **Stratégie de réessayer - *facultatif***, entrez ce qui suit :

   1. Pour les **tentatives de tâche**, entrez le nombre de AWS Batch tentatives de transfert de la tâche vers le `RUNNABLE` statut. Entrez un nombre compris entre 1 et 10.

   1. Pour les **conditions de la stratégie Réessayer**, choisissez **Ajouter une évaluation à la sortie**. Entrez au moins une valeur de paramètre, puis choisissez une **action**. Pour chaque ensemble de conditions, l'**action** doit être définie sur **Réessayer** ou sur **Quitter**. Ces actions signifient ce qui suit :
      + **Réessayer** — AWS Batch Réessaie jusqu'à ce que le nombre de tentatives de travail que vous avez spécifié soit atteint.
      + **Quitter** : AWS Batch arrête de réessayer la tâche.
**Important**  
Si vous choisissez **Ajouter une évaluation à la sortie**, vous devez configurer au moins un paramètre et soit choisir une **action**, soit choisir **Supprimer l'évaluation à la sortie**.

1. Dans la section **Propriétés de la tâche**, entrez les informations suivantes :

   1. Pour **Rôle d'exécution - *conditionnel***, choisissez un rôle pour autoriser les agents Amazon ECS à effectuer des appels d' AWS API en votre nom. Pour plus d'informations sur la création d'un **rôle d'exécution**, consultez[Tutoriel : Création du rôle d'exécution IAM](create-execution-role.md).

   1. Choisissez la **commande Enable ECS execute** pour permettre l'accès direct au shell du conteneur Amazon ECS et contourner le système d'exploitation hôte. Vous devez choisir un **rôle de tâche**.
**Important**  
La commande **ECS execute** nécessite que le système de fichiers soit accessible en écriture. 

   1. Pour **le rôle Task**, choisissez un rôle Amazon ECS Identity and Access Management (IAM) pour autoriser le conteneur à effectuer des appels d' AWS API en votre nom. Pour plus d'informations, consultez le [rôle IAM de la tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *manuel du développeur Amazon Elastic Container Service*.

   1. Pour le **mode IPC**`host`, sélectionnez`task`, ou`none`. Si cette option `host` est spécifiée, tous les conteneurs inclus dans les tâches qui ont spécifié le mode IPC hôte sur la même instance de conteneur partagent les mêmes ressources IPC avec l'instance hôte Amazon EC2. Si une tâche est spécifiée, tous les conteneurs qui se trouvent dans la tâche spécifiée partagent les mêmes ressources IPC. Si aucune n'est spécifiée, les ressources IPC présentes dans les conteneurs d'une tâche sont privées et ne sont pas partagées avec les autres conteneurs d'une tâche ou de l'instance de conteneur. Si aucune valeur n'est spécifiée, le partage de l'espace de noms de ressource IPC dépend du paramètre du démon Docker sur l'instance de conteneur.

   1. Pour le **mode PID**, choisissez `host` ou`task`. Par exemple, la surveillance des sidecars peut avoir besoin de `pidMode` pour accéder à des informations sur d'autres conteneurs exécutés dans le cadre de la même tâche. Si cette `host` option est spécifiée, tous les conteneurs des tâches qui ont spécifié le mode PID hôte sur la même instance de conteneur partagent le même espace de noms de processus avec l'instance hôte Amazon EC2. Si `task` est spécifié, tous les conteneurs de la tâche spécifiée partagent le même espace de noms de processus. Si aucune valeur n'est spécifiée, la valeur par défaut est un espace de noms privé pour chaque conteneur. 

1. Dans la section **Ressources consommables**, entrez ce qui suit :

   1. Entrez un **nom** unique et la **valeur demandée**.

   1. Vous pouvez ajouter d'autres ressources consommables en choisissant **Ajouter une ressource consommable**.

1. Dans la section **Stockage**, entrez les informations suivantes :

   1. Entrez un **nom** et un **chemin source** pour le volume, puis choisissez **Ajouter un volume**. Vous pouvez également choisir d'activer Activer EFS.

   1. Vous pouvez ajouter d'autres volumes en choisissant **Ajouter un volume**.

1. Pour **Paramètres**, choisissez **Ajouter des paramètres** pour ajouter des espaces réservés de substitution de paramètres sous forme de paires **clé** et **valeur** facultatives.

1. Choisissez **Page suivante**.

1. Dans la section **Configuration du conteneur** :

   1. Pour **Name** (Nom), saisissez un nom pour le conteneur.

   1. Pour **le conteneur essentiel**, activez si le contenant est essentiel.

   1. Dans **Image**, choisissez l'Dockerimage à utiliser pour votre travail. Par défaut, les images dans le registre Docker Hub sont disponibles. Vous pouvez également spécifier d'autres référentiels avec `repository-url/image:tag`. Le nom peut comporter jusqu'à 225 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-), des traits de soulignement (\$1), des deux-points (:), des barres obliques (/) et des signes numériques (\$1). Ce paramètre se mappe à `Image` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Création d'un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) (L'API Docker à distance) et le paramètre `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**Note**  
L'architecture des images Docker doit correspondre à l'architecture du processeur des ressources de calcul sur lesquelles elles sont planifiées. Par exemple, les images Docker basées sur ARM ne peuvent s'exécuter que sur des ressources de calcul basées sur ARM.
      + Les images contenues dans les référentiels publics Amazon ECR utilisent les conventions complètes `registry/repository[:tag]` ou de `registry/repository[@digest]` dénomination (par exemple,`public.ecr.aws/registry_alias/my-web-app:latest`).
      + Les images contenues dans les référentiels Amazon ECR utilisent la convention de `registry/repository[:tag]` dénomination complète (par exemple, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`).
      + Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, `ubuntu` ou `mongo`).
      + Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, `amazon/amazon-ecs-agent`).
      + Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, `quay.io/assemblyline/ubuntu`).

   1. Pour les **besoins en ressources**, configurez chacune des options suivantes :

      1. Pour **v CPUs**, choisissez le numéro de CPUs pour le conteneur.

      1. Pour **Mémoire**, choisissez la quantité de mémoire pour le conteneur.

      1. Pour le **GPU, *en option***, choisissez le nombre de GPUs pour le conteneur.

   1. Dans **Interface**, saisissez le nom d'utilisateur à utiliser à l'intérieur du conteneur.

   1. **Activez l'option Activer le système de fichiers en lecture seule** pour supprimer l'accès en écriture au volume.

   1. Activez **Privileged** pour accorder au conteneur de tâches des autorisations élevées sur l'instance hôte, comme pour l'utilisateur root. 

   1. Pour **Command**, entrez les commandes dans le champ en tant qu'équivalent dans un tableau de chaînes **JSON**.

      Ce paramètre correspond à `Cmd` dans la section [Create a container (Création d'un conteneur)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de [Docker Remote API (API distante Docker)](https://docs.docker.com/engine/api/v1.38/) et au paramètre `COMMAND` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Pour plus d'informations sur le Docker `CMD` paramètre, consultez [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/#cmd) \$1cmd.
**Note**  
Vous pouvez utiliser des valeurs par défaut pour la substitution de paramètres et des espaces réservés dans votre commande. Pour de plus amples informations, veuillez consulter [Paramètres](job_definition_parameters.md#parameters).

   1. Pour les **informations d'identification du référentiel *(facultatif)***, entrez l'ARN du secret contenant vos informations d'identification.

   1. Pour les **variables d'environnement *(facultatif)***, choisissez **Ajouter des variables** d'environnement pour ajouter des variables d'environnement à transmettre au conteneur.

   1. Dans la section **Paramètres Linux - *facultatif*** :

      1. **Activez Activer le processus d'initialisation** pour exécuter un processus d'initialisation dans le conteneur. 

      1. Pour **Taille de la mémoire partagée**, entrez la taille (en MiB) du volume /dev/shm

      1. Pour **Taille maximale de swap**, entrez la quantité totale de mémoire d'échange (en MiB) que le conteneur peut utiliser.

      1. Pour **Swappiness**, entrez une valeur comprise entre 0 et 100 pour indiquer le comportement de swappiness du conteneur. Si vous ne spécifiez aucune valeur et que le swap est activé, la valeur par défaut est 60. 

      1. Pour **Appareils**, choisissez **Ajouter un appareil** pour ajouter un appareil :

         1. Sous **Chemin du conteneur**, spécifiez le chemin d'accès de l'instance du conteneur pour exposer l'appareil mappé à l'instance de l'hôte. Si vous laissez ce champ vide, le chemin de l'hôte est utilisé dans le conteneur.

         1. Sous **Host path (Chemin de l'hôte)**, spécifiez le chemin d'accès d'un appareil dans l'instance de l'hôte.

         1. Pour **Autorisations**, choisissez une ou plusieurs autorisations à appliquer à l'appareil. Les autorisations disponibles sont **READ**, **WRITE** et **MKNOD**.

      1. Pour **Tmpfs**, choisissez **Ajouter des tmpfs** pour ajouter un montage. `tmpfs`

   1. 
**Note**  
L'enregistrement de Firelens doit être effectué dans un conteneur dédié. Pour configurer la journalisation de Firelens :  
Dans chaque conteneur, à l'exception de votre conteneur Firelens dédié, configurez le pilote **Logging** sur `awsfirelens`
*Dans votre conteneur Firelens, définissez la configuration **Firelens (facultative) et la configuration de journalisation (facultative)** pour la **destination de journalisation**.*

      Dans la section **Configuration de Firelens - optionnelle :**
**Important**  
AWS Batch applique le mode `host` réseau aux tâches Amazon ECS autres que MNP et Fargate. [L'utilisateur root est requis](https://github.com/aws/aws-for-fluent-bit/blob/mainline/troubleshooting/debugging.md#amazon-ecs-firelens-root-is-required) pour Amazon ECS Firelens. Lors de l'exécution de tâches utilisant le mode `host` réseau, Amazon ECS déconseille d'exécuter des conteneurs en utilisant l'utilisateur root (UID 0) pour [une meilleure sécurité](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#network_mode). Par conséquent, toutes les tâches ECS autres que MNP et Fargate avec journalisation Firelens ne respecteront pas les meilleures pratiques en matière de sécurité.

      1. Pour **Type**, choisissez `fluentd` soit`fluentbit`. 

      1. Dans le **champ Options**, entrez la name/value paire de l'option. Vous pouvez ajouter d'autres **options** à l'aide de l'**option Ajouté**.

   1.  Dans la section **Configuration de la journalisation - *optionnelle*** :

      1. Pour **Log driver**, choisissez le log driver à utiliser. [Pour plus d'informations sur les pilotes de journal disponibles, voir : LogDriverLogConfiguration.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**Note**  
Par défaut, le pilote de `awslogs` journal est utilisé.

      1. Pour **Options**, choisissez **Ajouter une option** pour ajouter une option. Entrez une paire nom-valeur, puis choisissez **Ajouter** une option.

      1. Pour **Secrets**, choisissez **Ajouter un secret**. Entrez une paire nom-valeur, puis choisissez **Ajouter un secret** pour ajouter un secret.
**Astuce**  
[Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. Pour **Points de montage *(facultatif)***, choisissez **Ajouter des points de montage** pour ajouter des points de montage pour les volumes de données. Vous devez spécifier le volume source et le chemin du conteneur. 

   1. Pour les **secrets *(facultatif)***, choisissez **Ajouter un secret** pour ajouter un secret. Entrez ensuite une paire nom-valeur, puis choisissez **Ajouter** un secret.
**Astuce**  
[Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

   1. Pour **Ulimits *(facultatif)***, choisissez **Add ulimit** pour ajouter une `ulimits` valeur au conteneur. Entrez les valeurs **Nom**, **Limite souple** et **Limite stricte**, puis choisissez **Ajouter une limite**.

   1. Pour **Dépendances *(facultatif)***, choisissez **Ajouter des dépendances de conteneur**. Choisissez le nom du conteneur et son état pour déterminer quand ce conteneur démarre.

1. Si vous n'avez configuré qu'un seul conteneur, vous devez choisir **Ajouter un conteneur** et terminer la configuration du nouveau conteneur. Dans le cas contraire, choisissez **Next** pour passer en revue. 

# Création d'une définition de tâche parallèle à nœuds multiples
<a name="create-multi-node-job-def"></a>

Avant de pouvoir exécuter des tâches AWS Batch, vous devez créer une définition de tâche. Ce processus varie légèrement entre les tâches parallèles à nœud unique et à nœuds multiples. Cette rubrique explique spécifiquement comment créer une définition de tâche pour une tâche parallèle à AWS Batch plusieurs nœuds (également appelée *planification en groupe*). Pour de plus amples informations, veuillez consulter [Tâches parallèles sur plusieurs nœuds](multi-node-parallel-jobs.md). 

**Note**  
AWS Fargate ne prend pas en charge les tâches parallèles à nœuds multiples.

**Topics**
+ [Tutoriel : Création d'une définition de tâche parallèle à nœuds multiples sur les ressources Amazon EC2](multi-node-job-def-ec2.md)

# Tutoriel : Création d'une définition de tâche parallèle à nœuds multiples sur les ressources Amazon EC2
<a name="multi-node-job-def-ec2"></a>

Pour créer une définition de tâche parallèle à plusieurs nœuds sur les ressources Amazon Elastic Compute Cloud (Amazon EC2).

**Note**  
Pour créer une définition de tâche *à nœud unique*, consultez[Création d'une définition de tâche à nœud unique sur les ressources Amazon EC2](create-job-definition-EC2.md).

**Pour créer une définition de tâche parallèle à nœuds multiples sur les ressources Amazon EC2 :**

1. Ouvrez la AWS Batch console à l'adresse [https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/).

1. Dans la barre de navigation, sélectionnez le Région AWS à utiliser.

1. Dans le volet de navigation, choisissez **Job definitions**.

1. Choisissez **Créer**.

1. Pour le **type d'orchestration,** choisissez **Amazon Elastic Compute Cloud (Amazon EC2).**

1. Pour **Enable multi-node parallel**, activez le mode multi-node parallel.

1. Dans **Nom**, entrez un nom unique pour votre définition de tâche. Le nom peut comporter jusqu'à 128 caractères et peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (\$1).

1. (Facultatif) Pour le **délai d'exécution**, spécifiez le nombre maximal de secondes pendant lesquelles vous souhaitez que les tentatives de travail s'exécutent. Si une tentative dépasse le délai imparti, elle est arrêtée et passe à un `FAILED` statut. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md).

1. (Facultatif) Activez la **priorité de planification**. Entrez une valeur de priorité de planification comprise entre 0 et 100. Les valeurs les plus élevées ont une priorité plus élevée que les valeurs faibles.

1. (Facultatif) Pour les **tentatives de tâche**, entrez le nombre de AWS Batch tentatives de transfert de la tâche vers le `RUNNABLE` statut. Entrez un nombre compris entre 1 et 10.

1. (Facultatif) Pour les **conditions de la stratégie Réessayer**, choisissez **Ajouter une évaluation à la sortie**. Entrez au moins une valeur de paramètre, puis choisissez une **action**. Pour chaque ensemble de conditions, l'**action** doit être définie sur **Réessayer** ou sur **Quitter**. Ces actions signifient ce qui suit : 
   + **Réessayer** — AWS Batch Réessaie jusqu'à ce que le nombre de tentatives de travail que vous avez spécifié soit atteint.
   + **Quitter** : AWS Batch arrête de réessayer la tâche.
**Important**  
Si vous choisissez **Ajouter une évaluation à la sortie**, vous devez configurer au moins un paramètre et soit choisir une **action**, soit choisir **Supprimer l'évaluation à la sortie**.

1. (Facultatif) Développez les **balises**, puis choisissez **Ajouter une balise** pour ajouter des balises à la ressource. Entrez une clé et une valeur facultative, puis choisissez **Ajouter une étiquette**. Vous pouvez également activer les balises **Propagate pour propager les balises** de la tâche et de la définition de la tâche vers la tâche Amazon ECS.

1. Choisissez **Page suivante**.

1. Pour **Nombre de nœuds**, saisissez le nombre total de nœuds à utiliser pour la tâche.

1. Pour **Nœud principal**, saisissez l'index de nœud à utiliser pour le nœud principal. L'index de nœud principal par défaut est `0`.

1. Pour **Type d'instance**, choisissez un type d'instance.
**Note**  
Le type d'instance que vous choisissez s'applique à tous les nœuds.

1. Pour **Paramètres**, choisissez **Ajouter des paramètres** pour ajouter des espaces réservés de substitution de paramètres sous forme de paires **clé** et **valeur** facultatives.

1. Dans la section **Plages de nœuds** :

   1. Sélectionnez **Ajouter une plage de nœuds**. Cela crée une section **de plage de nœuds**.

   1. Pour **Nœuds cible**, spécifiez la plage de votre groupe de nœuds, en utilisant la notation `range_start:range_end`.

      Vous pouvez créer jusqu'à cinq plages de nœuds pour les nœuds que vous avez spécifiés pour votre tâche. Les plages de nœuds utilisent la valeur d'index d'un nœud et l'index de nœud commence à 0. Assurez-vous que la valeur de l'indice de fin de plage de votre groupe de nœuds final est inférieure d'un au nombre de nœuds que vous avez spécifié. Supposons, par exemple, que vous ayez spécifié 10 nœuds et que vous souhaitiez utiliser un seul groupe de nœuds. Ensuite, votre fourchette finale est 9.

   1. Dans **Image**, choisissez l'Dockerimage à utiliser pour votre travail. Par défaut, les images dans le registre Docker Hub sont disponibles. Vous pouvez également spécifier d'autres référentiels avec `repository-url/image:tag`. Le nom peut comporter jusqu'à 225 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-), des traits de soulignement (\$1), des deux-points (:), des barres obliques (/) et des signes numériques (\$1). Ce paramètre se mappe à `Image` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Création d'un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) (L'API Docker à distance) et le paramètre `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).
**Note**  
L'architecture des images Docker doit correspondre à l'architecture du processeur des ressources de calcul sur lesquelles elles sont planifiées. Par exemple, les images Docker basées sur ARM ne peuvent s'exécuter que sur des ressources de calcul basées sur ARM.
      + Les images contenues dans les référentiels publics Amazon ECR utilisent les conventions complètes `registry/repository[:tag]` ou de `registry/repository[@digest]` dénomination (par exemple,`public.ecr.aws/registry_alias/my-web-app:latest`).
      + Les images contenues dans les référentiels Amazon ECR utilisent la convention de `registry/repository[:tag]` dénomination complète. Par exemple, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`
      + Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, `ubuntu` ou `mongo`).
      + Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, `amazon/amazon-ecs-agent`).
      + Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, `quay.io/assemblyline/ubuntu`).

   1. Pour **Command**, entrez les commandes dans le champ en tant qu'équivalent dans un tableau de chaînes **JSON**.

      Ce paramètre correspond à `Cmd` dans la section [Create a container (Création d'un conteneur)](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de [Docker Remote API (API distante Docker)](https://docs.docker.com/engine/api/v1.38/) et au paramètre `COMMAND` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Pour plus d'informations sur le Docker `CMD` paramètre, consultez [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/#cmd) \$1cmd.
**Note**  
Vous pouvez utiliser des valeurs par défaut pour la substitution de paramètres et des espaces réservés dans votre commande. Pour de plus amples informations, veuillez consulter [Paramètres](job_definition_parameters.md#parameters).

   1. Pour **v CPUs**, spécifiez le nombre de v CPUs à réserver pour le conteneur. Ce paramètre correspond à `CpuShares` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--cpu-shares` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Chaque processeur virtuel est équivalente à 1 024 parts de processeur. Vous devez spécifier au moins un vCPU.

   1. Dans **Mémoire**, précisez la limite stricte (en Mio) de la mémoire à présenter au conteneur de la tâche. Si votre conteneur tente de dépasser la mémoire spécifiée ici, il est arrêté. Ce paramètre correspond à `Memory` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--memory` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Vous devez spécifier au moins 4 Mio de mémoire pour une tâche.
**Note**  
Pour optimiser l'utilisation de vos ressources, vous pouvez fournir à vos tâches autant de mémoire que possible pour un type d'instance spécifique. Pour de plus amples informations, veuillez consulter [Gestion de la mémoire des ressources informatiques](memory-management.md).

   1. (Facultatif) Dans **le champ Nombre de GPUs**, spécifiez le nombre d'utilisations de GPUs votre travail. La tâche s'exécute sur un conteneur dont le nombre spécifié GPUs est épinglé à ce conteneur.

   1. (Facultatif) Pour **le rôle Job**, vous pouvez spécifier un rôle IAM qui fournit au conteneur de votre travail l'autorisation d'utiliser le AWS APIs. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d'informations, notamment sur les prérequis de configuration, consultez la section [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) du manuel *Amazon Elastic Container Service Developer Guide*.
**Note**  
Pour les tâches exécutées sur les ressources Fargate, un rôle de tâche est requis.
**Note**  
Seuls les rôles dotés d'une relation de confiance avec **Amazon Elastic Container Service Task** Role sont présentés ici. Pour plus d'informations sur la création d'un rôle IAM pour vos AWS Batch tâches, consultez la section [Création d'un rôle IAM et d'une politique pour vos tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) dans le manuel *Amazon Elastic Container Service Developer Guide*.

   1. (Facultatif) Pour **le rôle d'exécution**, spécifiez un rôle IAM qui autorise les agents de conteneur Amazon ECS à effectuer des appels d' AWS API en votre nom. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d'informations, consultez les [rôles IAM d'exécution de tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) dans le manuel *Amazon Elastic Container Service Developer Guide*. 

1. (Facultatif) Développez **la configuration supplémentaire** :

   1. Pour les **variables d'environnement**, choisissez **Ajouter une variable d'environnement** pour ajouter des variables d'environnement sous forme de paires nom-valeur. Ces variables sont transmises au conteneur.

   1. Pour la **configuration du rôle Job**, vous pouvez spécifier un rôle IAM qui fournit au conteneur de votre job l'autorisation d'utiliser le AWS APIs. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d'informations, notamment sur les prérequis de configuration, consultez la section [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) du manuel *Amazon Elastic Container Service Developer Guide*.
**Note**  
Pour les tâches exécutées sur les ressources Fargate, un rôle de tâche est requis.
**Note**  
Seuls les rôles dotés d'une relation de confiance avec **Amazon Elastic Container Service Task** Role sont présentés ici. Pour plus d'informations sur la création d'un rôle IAM pour vos AWS Batch tâches, consultez la section [Création d'un rôle IAM et d'une politique pour vos tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role) dans le manuel *Amazon Elastic Container Service Developer Guide*.

   1. Pour **le rôle d'exécution**, spécifiez un rôle IAM qui autorise les agents de conteneur Amazon ECS à effectuer des appels AWS d'API en votre nom. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d'informations, consultez les [rôles IAM d'exécution de tâches Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.

1. Dans la section **Configuration de la sécurité** :

   1. (Facultatif) Pour accorder au conteneur de votre tâche des privilèges élevés sur l'instance hôte (similaires à ceux de l'`root`utilisateur), activez **Privileged**. Ce paramètre correspond à `Privileged` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--privileged` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Facultatif) Dans **Utilisateur**, entrez le nom d'utilisateur à utiliser dans le conteneur. Ce paramètre correspond à `User` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--user` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).

   1. (Facultatif) Pour **les secrets**, choisissez **Ajouter un secret** pour ajouter des secrets sous forme de paires nom-valeur. Ces secrets sont exposés dans le contenant. [Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Dans la section **de configuration Linux** :

   1. **Activez l'option Activer le système de fichiers en lecture seule** pour supprimer l'accès en écriture au volume.

   1. (Facultatif) **Activez l'option Activer init le processus** pour exécuter un `init` processus dans le conteneur. Ce processus transmet les signaux et récolte les processus.

   1. Pour **Taille de la mémoire partagée**, entrez la taille (en MiB) du `/dev/shm` volume.

   1. Pour **Taille maximale de swap**, entrez la quantité totale de mémoire d'échange (en MiB) que le conteneur peut utiliser.

   1. Pour **Swappiness**, entrez une valeur comprise entre 0 et 100 pour indiquer le comportement de swappiness du conteneur. Si vous ne spécifiez aucune valeur et que l'échange est activé, la valeur par défaut est 60. [Pour plus d'informations, consultez : LinuxParameters swappiness.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)

   1. (Facultatif) Pour **Appareils**, choisissez **Ajouter un appareil** pour ajouter un appareil :

      1. Sous **Chemin du conteneur**, spécifiez le chemin d'accès de l'instance du conteneur pour exposer l'appareil mappé à l'instance de l'hôte. Si vous laissez ce champ vide, le chemin de l'hôte est utilisé dans le conteneur.

      1. Sous **Host path (Chemin de l'hôte)**, spécifiez le chemin d'accès d'un appareil dans l'instance de l'hôte.

      1. Pour **Autorisations**, choisissez une ou plusieurs autorisations à appliquer à l'appareil. Les autorisations disponibles sont **READ**, **WRITE** et **MKNOD**.

1. (Facultatif) Pour les **points de montage**, choisissez **Ajouter une configuration de points de montage** pour ajouter des points de montage pour les volumes de données. Vous devez spécifier le volume source et le chemin du conteneur. Ces points de montage sont transmis au Docker démon sur une instance de conteneur. Vous pouvez également choisir de rendre le volume en **lecture seule**.

1. (Facultatif) Pour **la configuration Ulimits**, choisissez **Add ulimit** pour ajouter une `ulimits` valeur au conteneur. Entrez les valeurs **Nom**, **Limite souple** et **Limite stricte**, puis choisissez **Ajouter une limite**.

1. (Facultatif) Pour **la configuration des volumes**, choisissez **Ajouter un volume** pour créer une liste de volumes à transmettre au conteneur. Entrez **le nom** et le **chemin source** du volume, puis choisissez **Ajouter un volume**. Vous pouvez également choisir d'activer **Activer EFS**.

1. (Facultatif) Pour les fichiers **Tmpfs**, choisissez **Ajouter des fichiers tmpfs** pour ajouter un montage. `tmpfs`

1. Dans la section **Propriétés de la tâche** :

   1. Pour **Rôle d'exécution - conditionnel**, choisissez un rôle pour autoriser les agents Amazon ECS à effectuer des appels d' AWS API en votre nom. Pour plus d'informations sur la création d'un **rôle d'exécution**, consultez[Tutoriel : Création du rôle d'exécution IAM](create-execution-role.md).

   1. 
**Important**  
Pour utiliser la **commande ECS execute**, votre environnement de calcul doit respecter les [considérations relatives à l'environnement de calcul pour les tâches parallèles à nœuds multiples](mnp-ce.md).

      Choisissez la **commande Enable ECS execute** pour permettre l'accès direct au shell du conteneur Amazon ECS et contourner le système d'exploitation hôte. Vous devez choisir un **rôle de tâche**.
**Important**  
La commande **ECS execute** nécessite que le système de fichiers soit accessible en écriture. 

   1. Pour **le rôle Task**, choisissez un rôle Amazon ECS Identity and Access Management (IAM) pour autoriser le conteneur à effectuer des appels d' AWS API en votre nom. Pour plus d'informations, consultez le [rôle IAM de la tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *manuel du développeur Amazon Elastic Container Service*.

1. (Facultatif) Dans la section **Configuration de la journalisation** :

   1. Pour **Log driver**, choisissez le log driver à utiliser. [Pour plus d'informations sur les pilotes de journal disponibles, voir : LogDriverLogConfiguration.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)
**Note**  
Par défaut, le pilote de `awslogs` journal est utilisé.

   1. Pour **Options**, choisissez **Ajouter une option** pour ajouter une option. Entrez une paire nom-valeur, puis choisissez **Ajouter** une option.

   1. Pour **Secrets**, choisissez **Ajouter un secret**. Entrez une paire nom-valeur, puis choisissez **Ajouter un secret** pour ajouter un secret.
**Astuce**  
[Pour plus d'informations, consultez : LogConfiguration SecretOptions.](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)

1. Choisissez **Page suivante**.

1. Pour la **révision de la définition du Job**, passez en revue les étapes de configuration. Si vous devez apporter des modifications, choisissez **Modifier**. Lorsque vous avez terminé, choisissez **Créer une définition de tâche**.

# Modèle de définition de travail qui utilise ContainerProperties
<a name="job-definition-template"></a>

Ce qui suit est un modèle de définition de tâche vide qui inclut un seul conteneur. Vous pouvez utiliser ce modèle pour créer votre définition de tâche, qui peut ensuite être enregistrée dans un fichier et utilisée avec l' AWS CLI `--cli-input-json`option. Pour obtenir plus d'informations sur ces paramètres, consultez [JobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobDefinition.html).

**Note**  
Vous pouvez générer un modèle de définition de tâche à conteneur unique à l'aide de la AWS CLI commande suivante :  

```
$ aws batch register-job-definition --generate-cli-skeleton
```

```
{
    "jobDefinitionName": "",
    "type": "container",
    "parameters": {
        "KeyName": ""
    },
    "schedulingPriority": 0,
    "containerProperties": {
        "image": "",
        "vcpus": 0,
        "memory": 0,
        "command": [
            ""
        ],
        "jobRoleArn": "",
        "executionRoleArn": "",
        "volumes": [
            {
                "host": {
                    "sourcePath": ""
                },
                "name": "",
                "efsVolumeConfiguration": {
                    "fileSystemId": "",
                    "rootDirectory": "",
                    "transitEncryption": "ENABLED",
                    "transitEncryptionPort": 0,
                    "authorizationConfig": {
                        "accessPointId": "",
                        "iam": "DISABLED"
                    }
                }
            }
        ],
        "environment": [
            {
                "name": "",
                "value": ""
            }
        ],
        "mountPoints": [
            {
                "containerPath": "",
                "readOnly": true,
                "sourceVolume": ""
            }
        ],
        "readonlyRootFilesystem": true,
        "privileged": true,
        "ulimits": [
            {
                "hardLimit": 0,
                "name": "",
                "softLimit": 0
            }
        ],
        "user": "",
        "instanceType": "",
        "resourceRequirements": [
            {
                "value": "",
                "type": "MEMORY"
            }
        ],
        "linuxParameters": {
            "devices": [
                {
                    "hostPath": "",
                    "containerPath": "",
                    "permissions": [
                        "WRITE"
                    ]
                }
            ],
            "initProcessEnabled": true,
            "sharedMemorySize": 0,
            "tmpfs": [
                {
                    "containerPath": "",
                    "size": 0,
                    "mountOptions": [
                        ""
                    ]
                }
            ],
            "maxSwap": 0,
            "swappiness": 0
        },
        "logConfiguration": {
            "logDriver": "syslog",
            "options": {
                "KeyName": ""
            },
            "secretOptions": [
                {
                    "name": "",
                    "valueFrom": ""
                }
            ]
        },
        "secrets": [
            {
                "name": "",
                "valueFrom": ""
            }
        ],
        "networkConfiguration": {
            "assignPublicIp": "DISABLED"
        },
        "fargatePlatformConfiguration": {
            "platformVersion": ""
        }
    },
    "nodeProperties": {
        "numNodes": 0,
        "mainNode": 0,
        "nodeRangeProperties": [
            {
                "targetNodes": "",
                "container": {
                    "image": "",
                    "vcpus": 0,
                    "memory": 0,
                    "command": [
                        ""
                    ],
                    "jobRoleArn": "",
                    "executionRoleArn": "",
                    "volumes": [
                        {
                            "host": {
                                "sourcePath": ""
                            },
                            "name": "",
                            "efsVolumeConfiguration": {
                                "fileSystemId": "",
                                "rootDirectory": "",
                                "transitEncryption": "DISABLED",
                                "transitEncryptionPort": 0,
                                "authorizationConfig": {
                                    "accessPointId": "",
                                    "iam": "ENABLED"
                                }
                            }
                        }
                    ],
                    "environment": [
                        {
                            "name": "",
                            "value": ""
                        }
                    ],
                    "mountPoints": [
                        {
                            "containerPath": "",
                            "readOnly": true,
                            "sourceVolume": ""
                        }
                    ],
                    "readonlyRootFilesystem": true,
                    "privileged": true,
                    "ulimits": [
                        {
                            "hardLimit": 0,
                            "name": "",
                            "softLimit": 0
                        }
                    ],
                    "user": "",
                    "instanceType": "",
                    "resourceRequirements": [
                        {
                            "value": "",
                            "type": "MEMORY"
                        }
                    ],
                    "linuxParameters": {
                        "devices": [
                            {
                                "hostPath": "",
                                "containerPath": "",
                                "permissions": [
                                    "WRITE"
                                ]
                            }
                        ],
                        "initProcessEnabled": true,
                        "sharedMemorySize": 0,
                        "tmpfs": [
                            {
                                "containerPath": "",
                                "size": 0,
                                "mountOptions": [
                                    ""
                                ]
                            }
                        ],
                        "maxSwap": 0,
                        "swappiness": 0
                    },
                    "logConfiguration": {
                        "logDriver": "awslogs",
                        "options": {
                            "KeyName": ""
                        },
                        "secretOptions": [
                            {
                                "name": "",
                                "valueFrom": ""
                            }
                        ]
                    },
                    "secrets": [
                        {
                            "name": "",
                            "valueFrom": ""
                        }
                    ],
                    "networkConfiguration": {
                        "assignPublicIp": "DISABLED"
                    },
                    "fargatePlatformConfiguration": {
                        "platformVersion": ""
                    }
                }
            }
        ]
    },
    "retryStrategy": {
        "attempts": 0,
        "evaluateOnExit": [
            {
                "onStatusReason": "",
                "onReason": "",
                "onExitCode": "",
                "action": "RETRY"
            }
        ]
    },
    "propagateTags": true,
    "timeout": {
        "attemptDurationSeconds": 0
    },
    "tags": {
        "KeyName": ""
    },
    "platformCapabilities": [
        "EC2"
    ],
    "eksProperties": {
        "podProperties": {
            "serviceAccountName": "",
            "hostNetwork": true,
            "dnsPolicy": "",
            "containers": [
                {
                    "name": "",
                    "image": "",
                    "imagePullPolicy": "",
                    "command": [
                        ""
                    ],
                    "args": [
                        ""
                    ],
                    "env": [
                        {
                            "name": "",
                            "value": ""
                        }
                    ],
                    "resources": {
                        "limits": {
                            "KeyName": ""
                        },
                        "requests": {
                            "KeyName": ""
                        }
                    },
                    "volumeMounts": [
                        {
                            "name": "",
                            "mountPath": "",
                            "readOnly": true
                        }
                    ],
                    "securityContext": {
                        "runAsUser": 0,
                        "runAsGroup": 0,
                        "privileged": true,
                        "readOnlyRootFilesystem": true,
                        "runAsNonRoot": true
                    }
                }
            ],
            "volumes": [
                {
                    "name": "",
                    "hostPath": {
                        "path": ""
                    },
                    "emptyDir": {
                        "medium": "",
                        "sizeLimit": ""
                    },
                    "secret": {
                        "secretName": "",
                        "optional": true
                    }
                }
            ]
        }
    }
}
```

# Paramètres de définition du job pour ContainerProperties
<a name="job_definition_parameters"></a>

Les définitions de Job utilisées [https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html)sont divisées en plusieurs parties :
+ Le nom de la définition de tâche
+ Type de définition de poste
+ L'espace réservé par défaut pour la substitution de paramètres
+ Les propriétés du conteneur pour la tâche
+ Les propriétés Amazon EKS pour la définition des tâches qui sont nécessaires pour les tâches exécutées sur les ressources Amazon EKS
+ Les propriétés du nœud nécessaires pour une tâche parallèle à nœuds multiples
+ Les fonctionnalités de la plateforme nécessaires pour exécuter les tâches sur les ressources Fargate
+ Les détails de propagation des balises par défaut de la définition de tâche
+ La stratégie de nouvelle tentative par défaut pour la définition de la tâche
+ Priorité de planification par défaut pour la définition de tâche
+ Les balises par défaut pour la définition de la tâche
+ Le délai d'expiration par défaut pour la définition de la tâche

**Contents**
+ [Nom de la définition de tâche](#jobDefinitionName)
+ [Type](#type)
+ [Paramètres](#parameters)
+ [Propriétés du contenant](#containerProperties)
+ [Propriétés d'Amazon EKS](#job-definition-parameters-eks-properties)
+ [Capacités de la plateforme](#job-definition-parameters-platform-capabilities)
+ [Propager les balises](#job-definition-parameters-propagate-tags)
+ [Propriétés de nœud](#nodeProperties)
+ [Stratégie de nouvelle tentative](#retryStrategy)
+ [Priorité de planification](#job-definition-parameters-schedulingPriority)
+ [Balises](#job-definition-parameters-tags)
+ [Timeout](#timeout)

## Nom de la définition de tâche
<a name="jobDefinitionName"></a>

`jobDefinitionName`  
Lorsque vous enregistrez une définition de tâche, vous indiquez un nom. Le nom peut comporter jusqu'à 128 caractères. Il peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union (-) et des traits de soulignement (\$1). La première définition de tâche enregistrée sous ce nom reçoit une révision de 1. Toutes les définitions de tâches enregistrées avec ce nom par la suite se voient attribuer un numéro de révision incrémentiel.   
Type : String  
Obligatoire : oui

## Type
<a name="type"></a>

`type`  
Lorsque vous enregistrez une définition de tâche, vous indiquez le type de tâche. Si la tâche s'exécute sur les ressources Fargate, elle n'est pas prise en charge`multinode`. Pour plus d'informations sur les tâches parallèles à plusieurs nœuds, consultez [Création d'une définition de tâche parallèle à nœuds multiples](create-multi-node-job-def.md).  
Type : String  
Valeurs valides : `container` \$1 `multinode`  
Obligatoire : oui

## Paramètres
<a name="parameters"></a>

`parameters`  
Lorsque vous soumettez une tâche, vous pouvez spécifier des paramètres qui remplacent les espaces réservés ou remplacent les paramètres de définition de tâche par défaut. Les paramètres de demandes de soumission de tâche prévalent sur les valeurs par défaut dans une définition de tâche. Cela signifie que vous pouvez utiliser la même définition de tâche pour plusieurs tâches utilisant le même format. Vous pouvez également modifier les valeurs de la commande par programmation au moment de l'envoi.  
Type : mappage chaîne/chaîne  
Obligatoire : non  
Lorsque vous enregistrez une définition de tâche, vous pouvez utiliser les espaces réservés de substitution de paramètres dans le champ `command` des propriétés de conteneur de la tâche. La syntaxe est la suivante.  

```
"command": [
    "ffmpeg",
    "-i",
    "Ref::inputfile",
    "-c",
    "Ref::codec",
    "-o",
    "Ref::outputfile"
]
```
Dans l'exemple ci-dessus, aucun espace réservé de substitution de paramètre `Ref::inputfile`, `Ref::codec` et `Ref::outputfile` n'est présent dans la commande. Vous pouvez utiliser l'`parameters`objet dans la définition de tâche pour définir des valeurs par défaut pour ces espaces réservés. Par exemple, pour définir une valeur par défaut pour l'espace réservé `Ref::codec`, vous précisez les éléments suivants dans la définition de tâche :  

```
"parameters" : {"codec" : "mp4"}
```
Lorsque cette définition de tâche est soumise pour être exécutée, l'`Ref::codec`argument de la commande pour le conteneur est remplacé par la valeur par défaut,`mp4`.

## Propriétés du contenant
<a name="containerProperties"></a>

Lorsque vous enregistrez une définition de tâche, spécifiez une liste de propriétés de conteneur qui sont transmises au démon Docker sur une instance de conteneur lorsque la tâche est placée. Les propriétés de conteneurs suivantes sont autorisées dans une définition de tâche. Pour les tâches à nœud unique, ces propriétés de conteneur sont définies au niveau de la définition de tâche. Pour les tâches parallèles à plusieurs nœuds, les propriétés de conteneur sont définies au niveau [Propriétés de nœud](#nodeProperties), pour chaque groupe de nœuds.

`command`  
La commande transmise au conteneur. Ce paramètre correspond à `Cmd` dans la section relative à la [création d’un conteneur](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) et au paramètre `COMMAND` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Pour plus d'informations sur le `CMD` paramètre Docker, consultez [https://docs.docker.com/engine/reference/builder/](https://docs.docker.com/engine/reference/builder/#cmd) \$1cmd.  

```
"command": ["string", ...]
```
Type : tableau de chaînes  
Obligatoire : non

`environment`  
Variables d'environnement à transmettre à un conteneur. Ce paramètre correspond à `Env` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--env` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  
Nous vous déconseillons d'utiliser des variables d'environnement en texte clair pour les informations sensibles, comme les données d'informations d'identification.
Les variables d'environnement ne doivent pas commencer par`AWS_BATCH`. Cette convention de dénomination est réservée aux variables définies par le AWS Batch service.
Type : tableau de paires clé-valeur  
Obligatoire : non    
`name`  
Nom de la variable d'environnement.  
Type : String  
Obligatoire : oui lorsque `environment` est utilisé.  
`value`  
Valeur de la variable d'environnement.  
Type : String  
Obligatoire : oui lorsque `environment` est utilisé.

```
"environment" : [
    { "name" : "envName1", "value" : "envValue1" },
    { "name" : "envName2", "value" : "envValue2" }
]
```

`executionRoleArn`  
Lorsque vous enregistrez une définition de tâche, vous pouvez spécifier un rôle IAM. Le rôle fournit à l'agent de conteneur Amazon ECS l'autorisation d'appeler en votre nom les actions d'API spécifiées dans ses politiques associées. Les tâches exécutées sur les ressources Fargate doivent fournir un rôle d'exécution. Pour de plus amples informations, veuillez consulter [AWS Batch Rôle d'exécution IAM](execution-IAM-role.md).  
Type : chaîne  
Obligatoire : non

`fargatePlatformConfiguration`  
Configuration de la plate-forme pour les tâches exécutées sur les ressources Fargate. Les tâches exécutées sur EC2 des ressources ne doivent pas spécifier ce paramètre.  
Type : objet [FargatePlatformConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_FargatePlatformConfiguration.html)  
Obligatoire : non    
`platformVersion`  
La version AWS de la plateforme Fargate utilisée pour les tâches, `LATEST` ou pour utiliser une version récente et approuvée de la AWS plateforme Fargate.  
Type : String  
Par défaut: `LATEST`  
Obligatoire : non

`image`  
Image utilisée pour démarrer une tâche. Cette chaîne est transmise directement au démon Docker. Les images dans le registre Docker Hub sont disponibles par défaut. Vous pouvez également spécifier d'autres référentiels avec `repository-url/image:tag`. Il peut comporter jusqu'à 255 lettres (majuscules et minuscules), des chiffres, des tirets, des traits de soulignement, deux points, des points, des barres obliques et des signes dièse. Ce paramètre se mappe à `Image` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Création d'un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) (L'API Docker à distance) et le paramètre `IMAGE` de [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  
L'architecture des images Docker doit correspondre à l'architecture du processeur des ressources de calcul sur lesquelles elles sont planifiées. Par exemple, des images Docker basées sur ARM ne peuvent s'exécuter que sur des ressources de calcul basées sur ARM.
+ Les images contenues dans les référentiels publics Amazon ECR utilisent les conventions complètes `registry/repository[:tag]` ou de `registry/repository[@digest]` dénomination (par exemple,`public.ecr.aws/registry_alias/my-web-app:latest`).
+ Les images contenues dans les référentiels Amazon ECR utilisent la convention de `registry/repository:[tag]` dénomination complète. Par exemple, `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`.
+ Les images dans les référentiels officiels sur Docker Hub utilisent un nom unique (par exemple, `ubuntu` ou `mongo`).
+ Les images dans les autres référentiels sur Docker Hub sont qualifiées par un nom d'organisation (par exemple, `amazon/amazon-ecs-agent`).
+ Les images dans les autres référentiels en ligne sont qualifiées par un nom de domaine (par exemple, `quay.io/assemblyline/ubuntu`).
Type : String  
Obligatoire : oui

`instanceType`  
Type d'instance à utiliser pour une tâche parallèle à plusieurs nœuds. Tous les groupes de nœuds dans une tâche parallèle à plusieurs nœuds doivent utiliser le même type d'instance. Ce paramètre n'est pas valide pour les tâches de conteneur à nœud unique ou pour les tâches exécutées sur des ressources Fargate.  
Type : chaîne  
Obligatoire : non

`jobRoleArn`  
Lorsque vous enregistrez une définition de tâche, vous pouvez spécifier un rôle IAM. Le rôle autorise le conteneur de tâches à appeler les actions d'API qui sont spécifiées dans ses stratégies associées à votre place. Pour plus d'informations, consultez [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *Guide du développeur Amazon Elastic Container Service*.  
Type : chaîne  
Obligatoire : non

`linuxParameters`  
Modifications spécifiques à Linux appliquées au conteneur, telles que les détails des mappages des appareils.  

```
"linuxParameters": {
    "devices": [
        {
            "hostPath": "string",
            "containerPath": "string",
            "permissions": [
                "READ", "WRITE", "MKNOD"
            ]
        }
    ],
    "initProcessEnabled": true|false,
    "sharedMemorySize": 0,
    "tmpfs": [
        {
            "containerPath": "string",
            "size": integer,
            "mountOptions": [
                "string"
            ]
        }
    ],
    "maxSwap": integer,
    "swappiness": integer
}
```
Type : objet [LinuxParameters](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html)  
Obligatoire : non    
`devices`  
Liste des appareils mappés au conteneur. Ce paramètre correspond à `Devices` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) et l'option `--device` à la commande [docker run](https://docs.docker.com/engine/reference/run/).  
Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate.
Type : tableau d'objets [Périphérique](https://docs.aws.amazon.com/batch/latest/APIReference/API_Device.html)  
Obligatoire : non    
`hostPath`  
Chemin où se trouve le périphérique disponible dans l'instance de conteneur hôte.  
Type : String  
Obligatoire : oui  
`containerPath`  
Le chemin où l'appareil est exposé dans le conteneur se trouve. Si cela n'est pas spécifié, le périphérique est exposé sur le même chemin que le chemin de l'hôte.  
Type : chaîne  
Obligatoire : non  
`permissions`  
Autorisations pour l'appareil dans le conteneur. Si cela n'est pas spécifié, les autorisations sont définies sur `READ``WRITE`, et`MKNOD`.  
Type : tableau de chaînes  
Obligatoire : non  
Valeurs valides : `READ` \$1 `WRITE` \$1 `MKNOD`  
`initProcessEnabled`  
Si ce paramètre est défini sur « true », exécutez un processus `init` dans le conteneur afin de transmettre des signaux et de récolter les processus. Ce paramètre est mappé à l'option `--init` de [docker run](https://docs.docker.com/engine/reference/run/). Ce paramètre nécessite la version 1.25 de l'API Docker à distance ou une version supérieure sur votre instance de conteneur. Pour vérifier la version de l'API Docker à distance de votre instance de conteneur, connectez-vous à votre instance de conteneur et exécutez la commande suivante : `sudo docker version | grep "Server API version"`  
Type : booléen  
Obligatoire : non  
`maxSwap`  
Quantité totale de mémoire d'échange (en MiB) qu'une tâche peut utiliser. Ce paramètre est converti en l'option `--memory-swap` de la commande [docker run](https://docs.docker.com/engine/reference/run/), où la valeur est la somme de la mémoire du conteneur plus la valeur `maxSwap`. Pour plus d'informations, veuillez consulter les [détails de `--memory-swap`](https://docs.docker.com/config/containers/resource_constraints/#--memory-swap-details) de la documentation Docker.  
Si la valeur `0` est spécifiée pour `maxSwap`, le conteneur n'utilise pas l'échange. Les valeurs acceptées sont `0` ou n'importe quel nombre entier positif. Si le `maxSwap` paramètre est omis, le conteneur utilise la configuration d'échange pour l'instance de conteneur sur laquelle il s'exécute. Une valeur `maxSwap` doit être définie pour que le paramètre `swappiness` soit utilisé.  
Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate.
Type : entier  
Obligatoire : non  
`sharedMemorySize`  
Valeur correspondant à la taille (en Mio) du volume `/dev/shm`. Ce paramètre est mappé à l'option `--shm-size` de [docker run](https://docs.docker.com/engine/reference/run/).  
Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate.
Type : entier  
Obligatoire : non  
`swappiness`  
Vous pouvez utiliser ce paramètre pour régler le comportement d'échange de mémoire d'un conteneur. `swappiness`La valeur de `0` empêche l'échange, sauf en cas d'absolue nécessité. Avec la valeur `swappiness` pour `100`, l'échange de pages a lieu de manière agressive. Les valeurs acceptées sont les nombres entiers compris entre `0` et `100`. Si le paramètre `swappiness` n'est pas spécifié, la valeur par défaut `60` est utilisée. Si aucune valeur n'est spécifiée pour `maxSwap`, le paramètre est ignoré. Si `maxSwap` est défini sur 0, le conteneur n'a pas recours à l'échange. Ce paramètre est mappé à l'option `--memory-swappiness` de [docker run](https://docs.docker.com/engine/reference/run/).  
Tenez compte des points suivants lorsque vous utilisez une configuration d'échange par conteneur.  
+ L'espace d'échange doit être activé et alloué sur l'instance de conteneur pour que les conteneurs puissent l'utiliser.
**Note**  
Le swap n'est AMIs pas activé par défaut pour les appareils optimisés pour Amazon ECS. Vous devez activer l'échange sur l'instance pour utiliser cette fonction. Pour plus d'informations, consultez [Instance Store Swap Volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-store-swap-volumes.html) dans le *guide de EC2 l'utilisateur Amazon* ou [Comment allouer de la mémoire pour qu'elle fonctionne comme espace de swap dans une EC2 instance Amazon à l'aide d'un fichier d'échange ?](https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/) .
+ Les paramètres de l'espace d'échange ne sont pris en charge que pour les définitions de tâches utilisant EC2 des ressources.
+ Si les paramètres `maxSwap` et `swappiness` sont omis d'une définition de tâche, chaque conteneur a une valeur `swappiness` par défaut de 60. L'utilisation totale du swap est limitée à deux fois la réserve de mémoire du conteneur.
Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate.
Type : entier  
Obligatoire : non  
`tmpfs`  
Chemin du conteneur, options de montage et taille du montage tmpfs.  
Type : tableau d'objets [Tmpfs](https://docs.aws.amazon.com/batch/latest/APIReference/API_Tmpfs.html)  
Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate.
Obligatoire : non    
`containerPath`  
Chemin d'accès absolu du fichier dans le conteneur où le volume tmpfs est monté.  
Type : String  
Obligatoire : oui  
`mountOptions`  
Liste des options de montage du volume tmpfs.  
Valeurs valides : "`defaults`" \$1 `ro` "" \$1 `rw` "" \$1 `suid` "" \$1 `nosuid` "" \$1 `dev` "`nodev`" \$1 "`exec`" \$1 "`noexec`" \$1 "`sync`" \$1 "`async`" \$1 "`dirsync`" \$1 `remount` "" \$1 `mand` "\$1" `nomand` "\$1`atime`" » \$1 `noatime` "" \$1 `diratime` "» \$1 `nodiratime` "\$1`bind`" \$1 "\$1`rbind`" \$1 `unbindable` "\$1`runbindable`" \$1 "\$1`private`" \$1 `rprivate` "\$1" \$1 `shared` "\$1`rshared`" "\$1`slave`" » \$1 `rslave` "`relatime`" \$1 `norelatime` "» \$1 « `strictatime` » \$1 « `nostrictatime` » \$1 » `mode`« \$1" `uid` "\$1" `gid` "\$1" `nr_inodes` "\$1" `nr_blocks` "\$1" `mpol` »  
Type : tableau de chaînes  
Obligatoire : non  
`size`  
Taille (en Mio) du volume tmpfs.  
Type : entier  
Obligatoire : oui

`logConfiguration`  
Spécification de configuration du journal pour la tâche.  
Ce paramètre correspond à `LogConfig` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) et l'option `--log-driver` à la commande [docker run](https://docs.docker.com/engine/reference/run/). Par défaut, les conteneurs utilisent le même pilote de journalisation que celui utilisé par le démon Docker. Toutefois, le conteneur peut utiliser un pilote de journalisation différent de celui du daemon Docker en spécifiant un pilote de journal avec ce paramètre dans la définition du conteneur. Pour utiliser un pilote de journalisation différent pour un conteneur, le système de journalisation doit être configuré sur l'instance du conteneur ou sur un autre serveur de journaux afin de fournir des options de journalisation à distance. Pour plus d'informations sur les options relatives aux différents pilotes du journal pris en charge, consultez la section [Configure logging drivers](https://docs.docker.com/engine/admin/logging/overview/) (Configurer les pilotes de journalisation) dans la documentation Docker.  
AWS Batch prend actuellement en charge un sous-ensemble des pilotes de journalisation disponibles pour le démon Docker (indiqué dans le type de [LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html)données).
Ce paramètre nécessite la version 1.18 de l'API Docker à distance ou une version supérieure sur votre instance de conteneur. Pour vérifier la version de l'API Docker à distance de votre instance de conteneur, connectez-vous à votre instance de conteneur et exécutez la commande suivante : `sudo docker version | grep "Server API version"`   

```
"logConfiguration": {
    "devices": [
        {
            "logDriver": "string",
            "options": {
                "optionName1" : "optionValue1",
                "optionName2" : "optionValue2"
            }
            "secretOptions": [
              {
                  "name" : "secretOptionName1",
                  "valueFrom" : "secretOptionArn1"
              },
              {
                  "name" : "secretOptionName2",
                  "valueFrom" : "secretOptionArn2"
              }
            ]
        }
    ]
}
```
Type : objet [LogConfiguration](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html)  
Obligatoire : non    
`logDriver`  
Le pilote de journal à utiliser pour la tâche. AWS Batch Active le pilote de `awslogs` journal par défaut. Les valeurs valides répertoriées pour ce paramètre sont les pilotes de journal avec lesquels l'agent de conteneur Amazon ECS peut communiquer par défaut.  
Ce paramètre correspond à `LogConfig` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) et l'option `--log-driver` à la commande [docker run](https://docs.docker.com/engine/reference/run/). Par défaut, les tâches utilisent le même pilote de journalisation que celui utilisé par le démon Docker. Cependant, la tâche peut utiliser un pilote de journalisation différent de celui du démon Docker en spécifiant un pilote de journal avec ce paramètre dans la définition de la tâche. Si vous souhaitez spécifier un autre pilote de journalisation pour une tâche, le système de journalisation doit être configuré sur l'instance de conteneur dans l'environnement informatique. Vous pouvez également le configurer sur un autre serveur de journaux pour fournir des options de journalisation à distance. Pour plus d'informations sur les options relatives aux différents pilotes du journal pris en charge, consultez la section [Configure logging drivers](https://docs.docker.com/engine/admin/logging/overview/) (Configurer les pilotes de journalisation) dans la documentation Docker.  
AWS Batch prend actuellement en charge un sous-ensemble des pilotes de journalisation disponibles pour le démon Docker. Les pilotes de journal supplémentaires qui ne sont pas pris en charge actuellement seront peut-être disponibles dans les prochaines versions de l'agent de conteneur Amazon ECS.
Les pilotes de journal pris en charge sont `awslogs`, `fluentd`, `gelf`, `json-file`, `journald`, `logentries`, `syslog` et `splunk`.  
Les tâches exécutées sur les ressources Fargate sont limitées aux `awslogs` pilotes et log. `splunk`
Ce paramètre nécessite la version 1.18 de l'API Docker à distance ou une version supérieure sur votre instance de conteneur. Pour vérifier la version de l'API Docker à distance de votre instance de conteneur, connectez-vous à votre instance de conteneur et exécutez la commande suivante : `sudo docker version | grep "Server API version"`  
L'agent de conteneur Amazon ECS qui s'exécute sur une instance de conteneur doit enregistrer les pilotes de journalisation disponibles sur cette instance avec la variable d'`ECS_AVAILABLE_LOGGING_DRIVERS`environnement. Dans le cas contraire, les conteneurs placés sur cette instance ne peuvent pas utiliser ces options de configuration du journal. Pour plus d'informations, consultez [Configuration de l'agent du conteneur Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html) dans le *Manuel du développeur Amazon Elastic Container Service*.  
`awslogs`  
Spécifie le pilote de CloudWatch journalisation Amazon Logs. Pour plus d'informations, consultez le [pilote [Utiliser le pilote de journal awslogs](using_awslogs.md) de journalisation Amazon CloudWatch Logs](https://docs.docker.com/config/containers/logging/awslogs/) dans la documentation Docker.  
`fluentd`  
Spécifie le pilote de journalisation Fluentd. Pour plus d'informations, notamment sur l'utilisation et les options, consultez le [pilote de journalisation Fluentd](https://docs.docker.com/config/containers/logging/fluentd/) dans la documentation Docker.  
`gelf`  
Spécifie le pilote de journalisation GELF (Graylog Extended Format). Pour plus d'informations, notamment sur l'utilisation et les options, consultez le [pilote de journalisation Graylog Extended Format](https://docs.docker.com/config/containers/logging/gelf/) dans la documentation Docker.  
`journald`  
Spécifie le pilote de journalisation journald. Pour plus d'informations, notamment sur son utilisation et ses options, consultez le [pilote de journalisation Journald](https://docs.docker.com/config/containers/logging/journald/) dans la documentation Docker.  
`json-file`  
Spécifie le pilote de journalisation du fichier JSON. Pour plus d'informations, notamment sur l'utilisation et les options, consultez le [pilote de journalisation de fichiers JSON](https://docs.docker.com/config/containers/logging/json-file/) dans la documentation Docker.  
`splunk`  
Spécifie le pilote de journalisation Splunk. Pour plus d'informations, notamment sur l'utilisation et les options, consultez le [pilote de journalisation Splunk](https://docs.docker.com/config/containers/logging/splunk/) dans la documentation Docker.  
`syslog`  
Spécifie le pilote de journalisation syslog. Pour plus d'informations, notamment sur l'utilisation et les options, consultez le [pilote de journalisation Syslog](https://docs.docker.com/config/containers/logging/syslog/) dans la documentation Docker.
Type : String  
Obligatoire : oui  
Valeurs valides : `awslogs` \$1 `fluentd` \$1 `gelf` \$1 `journald` \$1 `json-file` \$1 `splunk` \$1 `syslog`  
Si vous avez un pilote personnalisé qui n'est pas répertorié précédemment et que vous souhaitez utiliser avec l'agent de conteneur Amazon ECS, vous pouvez bifurquer le projet d'agent de conteneur Amazon ECS [disponible sur GitHub et le](https://github.com/aws/amazon-ecs-agent) personnaliser pour qu'il fonctionne avec ce pilote. Nous vous conseillons d'envoyer des demandes d'extraction pour les modifications que vous souhaitez inclure. Cependant, Amazon Web Services ne prend actuellement pas en charge les demandes qui exécutent des copies modifiées de ce logiciel.  
`options`  
Options de configuration du journal à envoyer à un pilote de journal pour la tâche.  
Ce paramètre nécessite la version 1.19 de l'API Docker à distance ou une version supérieure sur votre instance de conteneur.  
Type : mappage chaîne/chaîne  
Obligatoire : non  
`secretOptions`  
Objet qui représente le secret à transmettre à la configuration de journal. Pour de plus amples informations, veuillez consulter [Spécifier les données sensibles](specifying-sensitive-data.md).  
Type : tableau d’objets   
Obligatoire : non    
`name`  
Nom de l'option de pilote de journal à définir dans le job.  
Type : String  
Obligatoire : oui  
`valueFrom`  
Le nom de ressource Amazon (ARN) du secret à exposer à la configuration du journal du conteneur. Les valeurs prises en charge sont soit l'ARN complet du secret Secrets Manager, soit l'ARN complet du paramètre dans le magasin de paramètres SSM.  
Si le paramètre SSM Parameter Store existe au même Région AWS endroit que la tâche que vous lancez, vous pouvez utiliser l'ARN complet ou le nom du paramètre. Si le paramètre existe dans une autre région, l'ARN complet doit être spécifié.
Type : String  
Obligatoire : oui

`memory`  
*Ce paramètre est obsolète, `resourceRequirements` utilisez-le à la place.*  
Le nombre de MiB de mémoire réservé à la tâche.  
À titre d'exemple d'utilisation`resourceRequirements`, si votre définition de tâche contient une syntaxe similaire à la suivante.  

```
"containerProperties": {
  "memory": 512
}
```
La syntaxe équivalente utilisée `resourceRequirements` est la suivante.  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "MEMORY",
      "value": "512"
    }
  ]
}
```
Type : entier  
Obligatoire : oui

`mountPoints`  
Points de montage des volumes de données dans votre conteneur. Ce paramètre correspond à `Volumes` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--volume` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"mountPoints": [
                {
                  "sourceVolume": "string",
                  "containerPath": "string",
                  "readOnly": true|false
                }
              ]
```
Type : tableau d'objets  
Obligatoire : non    
`sourceVolume`  
Nom du volume à monter.  
Type : String  
Obligatoire : oui lorsque `mountPoints` est utilisé.  
`containerPath`  
Le chemin sur le conteneur où monter le volume hôte.  
Type : String  
Obligatoire : oui lorsque `mountPoints` est utilisé.  
`readOnly`  
Si cette valeur est `true`, le conteneur ne peut accéder au volume qu'en lecture. Si cette valeur est `false`, le conteneur peut écrire sur le volume.  
Type : booléen  
Obligatoire : non  
Par défaut : false

`networkConfiguration`  
Configuration réseau pour les tâches exécutées sur les ressources Fargate. Les tâches exécutées sur EC2 des ressources ne doivent pas spécifier ce paramètre.  

```
"networkConfiguration": { 
   "assignPublicIp": "string"
}
```
Type : tableau d'objets  
Obligatoire : non    
`assignPublicIp`  
Indique si la tâche présene une adresse IP publique. Cela est nécessaire si la tâche nécessite un accès réseau sortant.  
Type : String  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
Par défaut : `DISABLED`

`privileged`  
Lorsque ce paramètre est défini sur true (vrai), des autorisations élevées inhérentes à l'instance de conteneur hôte sont accordées au conteneur (semblable à l'utilisateur `root`). Ce paramètre correspond à `Privileged` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--privileged` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/). Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate. Ne le fournissez pas et ne le spécifiez pas comme faux.  

```
"privileged": true|false
```
Type : booléen  
Obligatoire : non

`readonlyRootFilesystem`  
Quand ce paramètre a la valeur true, le conteneur ne dispose que d'un accès en lecture seule au système de fichiers racine. Ce paramètre correspond à `ReadonlyRootfs` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--read-only` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"readonlyRootFilesystem": true|false
```
Type : booléen  
Obligatoire : non

`resourceRequirements`  
Type et quantité d'une ressource à attribuer à un conteneur. Les ressources prises en charge comprennent `GPU`, `MEMORY` et `VCPU`.  

```
"resourceRequirements" : [
  {
    "type": "GPU",
    "value": "number"
  }
]
```
Type : tableau d'objets  
Obligatoire : non    
`type`  
Type d'une ressource à attribuer à un conteneur. Les ressources prises en charge comprennent `GPU`, `MEMORY` et `VCPU`.  
Type : String  
Obligatoire : oui lorsque `resourceRequirements` est utilisé.  
`value`  
La quantité de la ressource spécifiée à réserver pour le conteneur. Les valeurs varient en fonction du `type` spécifié.    
type="GPU"  
Le nombre de billets physiques GPUs à réserver pour le conteneur. Le nombre de conteneurs GPUs réservés à tous les conteneurs d'une tâche ne peut pas dépasser le nombre de conteneurs disponibles GPUs sur la ressource de calcul sur laquelle la tâche est lancée.  
type="MEMORY"  
La limite stricte (en Mio) de la mémoire à présenter le conteneur. Si votre conteneur tente de dépasser la mémoire spécifiée ici, il sera désactivé. Ce paramètre correspond à `Memory` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) et l'option `--memory` à la commande [docker run](https://docs.docker.com/engine/reference/run/). Vous devez spécifier au moins 4 Mio de mémoire pour une tâche. Cela est obligatoire, mais vous pouvez le spécifier en plusieurs endroits pour les tâches parallèles à plusieurs nœuds (MNP). Elle doit être spécifiée pour chaque nœud au moins une fois. Ce paramètre correspond à `Memory` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) tandis que l'option `--memory` correspond à la commande [docker run](https://docs.docker.com/engine/reference/run/).  
Si vous essayez de maximiser l'utilisation de vos ressources en fournissant à vos tâches autant de mémoire que possible pour un type d'instance particulier, consultez[Gestion de la mémoire des ressources informatiques](memory-management.md).
Pour les tâches exécutées sur des ressources Fargate, `value` elles doivent correspondre à l'une des valeurs prises en charge. De plus, les `VCPU` valeurs doivent être l'une des valeurs prises en charge pour cette valeur de mémoire.      
<a name="Fargate-memory-vcpu"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/batch/latest/userguide/job_definition_parameters.html)  
type="VCPU"  
Le nombre de v CPUs réservés à la tâche. Ce paramètre correspond à `CpuShares` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) tandis que l'option `--cpu-shares` correspond à la commande [docker run](https://docs.docker.com/engine/reference/run/). Chaque processeur virtuel est équivalente à 1 024 parts de processeur. Pour les tâches exécutées sur EC2 des ressources, vous devez spécifier au moins un vCPU. Cela est obligatoire mais peut être spécifié à plusieurs endroits. Elle doit être spécifiée pour chaque nœud au moins une fois.  
Pour les tâches exécutées sur des ressources Fargate`value`, elles doivent correspondre à l'une des valeurs prises en charge et les valeurs doivent être `MEMORY` l'une des valeurs prises en charge pour cette valeur de processeur virtuel. Les valeurs prises en charge sont 0,25, 0,5, 1, 2, 4, 8 et 16.  
La valeur par défaut du quota de ressources du vCPU Fargate On-Demand est de 6 v. CPUs Pour plus d'informations sur les quotas de Fargate, consultez la section Quotas de [AWS Fargate](https://docs.aws.amazon.com/general/latest/gr/ecs-service.html#service-quotas-fargate) dans le. *Référence générale d'Amazon Web Services*
Type : String  
Obligatoire : oui lorsque `resourceRequirements` est utilisé.

`secrets`  
Les secrets du travail exposés sous forme de variables d'environnement. Pour de plus amples informations, veuillez consulter [Spécifier les données sensibles](specifying-sensitive-data.md).  

```
"secrets": [
    {
      "name": "secretName1",
      "valueFrom": "secretArn1"
    },
    {
      "name": "secretName2",
      "valueFrom": "secretArn2"
    }
    ...
]
```
Type : tableau d'objets  
Obligatoire : non    
`name`  
Nom de la variable d'environnement contenant le secret.  
Type : String  
Obligatoire : oui lorsque `secrets` est utilisé.  
  
`valueFrom`  
Secret à exposer au conteneur. Les valeurs prises en charge sont soit le nom Amazon Resource (ARN) complet du secret Secrets Manager, soit l'ARN complet du paramètre dans le magasin de paramètres SSM.  
Si le paramètre SSM Parameter Store existe au même Région AWS endroit que la tâche que vous lancez, vous pouvez utiliser l'ARN complet ou le nom du paramètre. Si le paramètre existe dans une autre région, l'ARN complet doit être spécifié.
Type : String  
Obligatoire : oui lorsque `secrets` est utilisé.

`ulimits`  
Une liste de valeurs `ulimits` à définir dans le conteneur. Ce paramètre correspond à `Ulimits` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--ulimit` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).   

```
"ulimits": [
  {
    "name": string,
    "softLimit": integer,
    "hardLimit": integer
  }
  ...
]
```
Type : tableau d'objets  
Obligatoire : non    
`name`  
Le `type` d'`ulimit`.  
Type : String  
Obligatoire : oui lorsque `ulimits` est utilisé.  
  
`hardLimit`  
La limite stricte du type `ulimit`.  
Type : entier  
Obligatoire : oui lorsque `ulimits` est utilisé.  
  
`softLimit`  
La limite flexible du type `ulimit`.  
Type : entier  
Obligatoire : oui lorsque `ulimits` est utilisé.  


`user`  
Le nom utilisateur à utiliser à l'intérieur du conteneur. Ce paramètre correspond à `User` dans la section [Create a container](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate) (Créer un conteneur) de l'[API Docker à distance](https://docs.docker.com/engine/api/v1.38/) et l'option `--user` correspond à [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/).  

```
"user": "string"
```
Type : chaîne  
Obligatoire : non

`vcpus`  
*Ce paramètre est obsolète, `resourceRequirements` utilisez-le à la place.*  
Le nombre de v CPUs réservé au conteneur.  
À titre d'exemple d'utilisation`resourceRequirements`, si votre définition de tâche contient des lignes similaires à celles-ci :  

```
"containerProperties": {
  "vcpus": 2
}
```
Les lignes équivalentes utilisées `resourceRequirements` sont les suivantes.  

```
"containerProperties": {
  "resourceRequirements": [
    {
      "type": "VCPU",
      "value": "2"
    }
  ]
}
```
Type : entier  
Obligatoire : oui

`volumes`  
Lorsque vous enregistrez une définition de tâche, vous pouvez éventuellement préciser une liste de volumes qui sont transmis au daemon Docker sur une instance de conteneur. Les paramètres suivants sont autorisés dans les propriétés du conteneur :  

```
"volumes": [
  {
    "name": "string",
    "host": {
      "sourcePath": "string"
    },
    "efsVolumeConfiguration": {
      "authorizationConfig": {
        "accessPointId": "string",
        "iam": "string"
      },
      "fileSystemId": "string",
      "rootDirectory": "string",
      "transitEncryption": "string",
      "transitEncryptionPort": number
    }
  }
]
```  
`name`  
Nom du volume. Il peut comporter jusqu'à 255 lettres (majuscules et minuscules), des chiffres, des tirets ou des traits de soulignement. Ce nom est référencé dans le `sourceVolume` paramètre de définition de conteneur `mountPoints`.  
Type : chaîne  
Obligatoire : non  
`host`  
Le contenu du paramètre `host` détermine si le volume de données persiste sur l'instance de conteneur hôte et où il est stocké. Si le paramètre `host` est vide, le daemon Docker attribue un chemin hôte pour votre volume de données. Cependant, il n'est pas garanti que les données persistent une fois que le conteneur qui leur est associé cesse de fonctionner.  
Ce paramètre ne s'applique pas aux tâches qui s'exécutent sur des ressources Fargate.
Type : objet  
Obligatoire : non    
`sourcePath`  
Le chemin d'accès sur l'instance de conteneur hôte qui est présenté au conteneur. Si ce paramètre est vide, le démon Docker attribue un chemin hôte pour vous.  
Si le paramètre `host` contient un emplacement de fichier `sourcePath`, le volume de données persiste à l'emplacement spécifié sur l'instance de conteneur hôte jusqu'à ce que vous le supprimiez manuellement. Si la valeur `sourcePath` n'existe pas sur l'instance de conteneur hôte, le démon Docker la crée. Si l'emplacement n'existe pas, le contenu du chemin source est exporté.  
Type : chaîne  
Obligatoire : non  
`efsVolumeConfiguration`  
Ce paramètre est spécifié lorsque vous utilisez un système de fichiers Amazon Elastic File System pour le stockage des tâches. Pour de plus amples informations, veuillez consulter [Volumes Amazon EFS](efs-volumes.md).  
Type : objet  
Obligatoire : non    
`authorizationConfig`  
Détails de configuration des autorisations pour le système de fichiers Amazon EFS.  
Type : chaîne  
Obligatoire : non    
`accessPointId`  
ID de point d'accès Amazon EFS à utiliser. Si un point d'accès est spécifié, la valeur du répertoire racine spécifiée dans le `EFSVolumeConfiguration` doit être omise ou définie sur. `/` Cela applique le chemin défini sur le point d'accès EFS. Si un point d'accès est utilisé, le chiffrement de transit doit être activé dans `EFSVolumeConfiguration`. Pour plus d'informations, consultez [Utilisation des points d'accès Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.  
Type : chaîne  
Obligatoire : non  
`iam`  
Détermine s'il faut utiliser le rôle IAM de AWS Batch tâche défini dans une définition de tâche lors du montage du système de fichiers Amazon EFS. Si cette option est activée, le chiffrement en transit doit être activé dans la configuration `EFSVolumeConfiguration`. Si ce paramètre est omis, la valeur par défaut `DISABLED` est utilisée. Pour de plus amples informations, veuillez consulter [Utiliser les points d'accès Amazon EFS](efs-volumes.md#efs-volume-accesspoints).  
Type : String  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
`fileSystemId`  
ID du système de fichiers Amazon EFS à utiliser.  
Type : chaîne  
Obligatoire : non  
`rootDirectory`  
Répertoire du système de fichiers Amazon EFS à monter en tant que répertoire racine à l'intérieur de l'hôte. Si ce paramètre est omis, la racine du volume Amazon EFS est utilisée. Si vous le spécifiez`/`, cela a le même effet que l'omission de ce paramètre. La longueur maximale est de 4 096 caractères.  
Si un point d'accès EFS est spécifié dans le`authorizationConfig`, le paramètre du répertoire racine doit être omis ou défini sur. `/` Cela applique le chemin défini sur le point d'accès Amazon EFS.
Type : chaîne  
Obligatoire : non  
`transitEncryption`  
Détermine si vous souhaitez activer ou non le chiffrement des données Amazon EFS en transit entre l'hôte Amazon ECS et le serveur Amazon EFS. Le chiffrement en transit doit être activé si l'autorisation Amazon EFS IAM est utilisée. Si ce paramètre est omis, la valeur par défaut `DISABLED` est utilisée. Pour plus d'informations, consultez [Chiffrement des données en transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.  
Type : String  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
`transitEncryptionPort`  
Port à utiliser lors de l'envoi de données chiffrées entre l'hôte Amazon ECS et le serveur Amazon EFS. Si vous ne spécifiez pas de port de chiffrement en transit, il utilise la stratégie de sélection de port adoptée par l'assistant de montage Amazon EFS. La valeur doit être comprise entre 0 et 65 535. Pour plus d'informations, consultez [Assistant de montage EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) dans le *Guide de l'utilisateur Amazon Elastic File System User*.  
Type : entier  
Obligatoire : non

## Propriétés d'Amazon EKS
<a name="job-definition-parameters-eks-properties"></a>

Objet ayant plusieurs propriétés spécifiques à des tâches basées sur Amazon EKS. Cela ne doit pas être spécifié pour les définitions de tâches basées sur Amazon ECS.

`podProperties`  
Les propriétés des ressources du Kubernetes module d'une tâche.  
Type : objet [EksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html)  
Obligatoire : non    
`containers`  
Propriétés du conteneur utilisé sur le pod Amazon EKS.  
Type : objet [EksContainer](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html)  
Obligatoire : non    
`args`  
Tableau d'arguments pour le point d'entrée. Si cela n'est pas spécifié, le `CMD` de l'image de conteneur est utilisée. Cela correspond au `args` membre figurant dans la partie [Entrypoint](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint) du [Pod](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/) in. Kubernetes Les références aux variables d'environnement sont étendues à l'aide de l'environnement du conteneur.  
Si la variable d'environnement référencée n'existe pas, la référence de la commande ne change pas. Par exemple, si la référence porte sur « `$(NAME1)` » et que la variable d'environnement `NAME1` n'existe pas, la chaîne de commande reste « `$(NAME1)` ». `$$` est remplacé par `$`, et la chaîne résultante n'est pas développée. Par exemple, `$$(VAR_NAME)` est transmis en tant que `$(VAR_NAME)`, que la variable d'environnement `VAR_NAME` existe ou non. *Pour plus d'informations, consultez [CMD](https://docs.docker.com/engine/reference/builder/#cmd) dans la *référence Dockerfile* et [Définir une commande et des arguments pour un pod](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) dans la documentation. Kubernetes*  
Type : tableau de chaînes  
Obligatoire : non  
`command`  
Point d'entrée du conteneur. Il n'est pas exécuté dans un shell. Si cela n'est pas spécifié, le `ENTRYPOINT` de l'image de conteneur est utilisé. Les références aux variables d'environnement sont étendues à l'aide de l'environnement du conteneur.  
Si la variable d'environnement référencée n'existe pas, la référence de la commande ne change pas. Par exemple, si la référence porte sur « `$(NAME1)` » et que la variable d'environnement `NAME1` n'existe pas, la chaîne de commande reste « `$(NAME1)` ». `$$` est remplacé par `$`, et la chaîne résultante n'est pas développée. Par exemple, `$$(VAR_NAME)` est transmis en tant que `$(VAR_NAME)`, que la variable d'environnement `VAR_NAME` existe ou non. Ce point d'entrée ne peut pas être mis à jour. *Pour plus d'informations, consultez [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint) dans la *référence Dockerfile* et [Définir une commande et des arguments pour un conteneur et](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/) [Entrypoint](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#entrypoint) dans la documentation. Kubernetes*  
Type : tableau de chaînes  
Obligatoire : non  
`env`  
Variables d'environnement à transmettre à un conteneur.  
Les variables d'environnement ne peuvent pas commencer par « `AWS_BATCH` ». Cette convention de dénomination est réservée aux variables AWS Batch définies.
Type : tableau d’objets [EksContainerEnvironmentVariable](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerEnvironmentVariable.html)  
Obligatoire : non    
`name`  
Nom de la variable d'environnement.  
Type : String  
Obligatoire : oui  
`value`  
Valeur de la variable d'environnement.  
Type : chaîne  
Obligatoire : non  
`image`  
Image Docker utilisée pour démarrer le conteneur.  
Type : String  
Obligatoire : oui  
`imagePullPolicy`  
Stratégie d'extraction d'images pour le conteneur. Les valeurs prises en charge sont `Always`, `IfNotPresent` et `Never`. Ce paramètre a pour valeur par défaut `IfNotPresent`. Toutefois, si la balise `:latest` est spécifiée, elle prend par défaut la valeur `Always`. Pour plus d'informations, consultez la section [Mise à jour des images](https://kubernetes.io/docs/concepts/containers/images/#updating-images) dans la *Kubernetesdocumentation*.  
Type : chaîne  
Obligatoire : non  
`name`  
Nom du conteneur. Si le nom n'est pas spécifié, le nom par défaut « `Default` » est utilisé. Chaque conteneur d'un pod doit porter un nom unique.  
Type : chaîne  
Obligatoire : non  
`resources`  
Le type et la quantité de ressources à attribuer à un conteneur. Les ressources prises en charge comprennent `memory`, `cpu` et `nvidia.com/gpu`. Pour plus d'informations, consultez la section [Gestion des ressources pour les pods et les conteneurs](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) dans la *Kubernetesdocumentation*.  
Type : objet [EksContainerResourceRequirements](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerResourceRequirements.html)  
Obligatoire : non    
`limits`  
Type et quantité de ressources spécifiés à réserver pour le conteneur. Les valeurs varient en fonction du `name` spécifié. Les ressources peuvent être demandées à l'aide des objets `limits` ou `requests`.    
memory  
Limite stricte de mémoire (en Mio) du conteneur, en entiers, avec un suffixe « Mi ». Si votre conteneur tente de dépasser la mémoire spécifiée, il est résilié. Vous devez spécifier au moins 4 Mio de mémoire pour une tâche. La `memory` peut être spécifiée dans `limits`, `requests` ou les deux. Si `memory` est spécifié dans les deux, la valeur spécifiée dans `limits` doit être égale à la valeur spécifiée dans `requests`.  
Pour optimiser l'utilisation de vos ressources, fournissez à vos tâches autant de mémoire que possible pour le type d'instance spécifique que vous utilisez. Pour savoir comment procéder, veuillez consulter la section [Gestion de la mémoire des ressources informatiques](memory-management.md).  
cpu  
Le numéro CPUs est réservé au conteneur. Les valeurs doivent correspondre à un multiple pair de `0.25`. Le `cpu` peut être spécifié dans `limits`, `requests` ou les deux. Si le `cpu` est spécifié dans les deux, la valeur spécifiée dans `limits` doit être au moins égale à la valeur spécifiée dans `requests`.  
nvidia.com/gpu  
Le numéro GPUs est réservé au conteneur. Les valeurs doivent correspondre à un entier. `memory` peut être spécifié dans `limits`, `requests` ou les deux. Si `memory` est spécifié dans les deux, la valeur spécifiée dans `limits` doit être égale à la valeur spécifiée dans `requests`.
Type : mappage chaîne/chaîne  
Contraintes de longueur de valeur : longueur minimale de 1. Longueur maximale de 256.  
Obligatoire : non  
`requests`  
Type et quantité de ressources spécifiés à demander pour le conteneur. Les valeurs varient en fonction du `name` spécifié. Les ressources peuvent être demandées à l'aide des objets `limits` ou `requests`.    
memory  
Limite stricte de mémoire (en Mio) du conteneur, en entiers, avec un suffixe « Mi ». Si votre conteneur tente de dépasser la mémoire spécifiée, il est résilié. Vous devez spécifier au moins 4 Mio de mémoire pour une tâche. La `memory` peut être spécifiée dans `limits`, `requests` ou les deux. Si `memory` est spécifié dans les deux, la valeur spécifiée dans `limits` doit être égale à la valeur spécifiée dans `requests`.  
Si vous essayez de maximiser l'utilisation de vos ressources en fournissant à vos tâches autant de mémoire que possible pour un type d'instance particulier, consultez[Gestion de la mémoire des ressources informatiques](memory-management.md).  
cpu  
Le nombre de CPUs ceux-ci sont réservés au conteneur. Les valeurs doivent correspondre à un multiple pair de `0.25`. Le `cpu` peut être spécifié dans `limits`, `requests` ou les deux. Si le `cpu` est spécifié dans les deux, la valeur spécifiée dans `limits` doit être au moins égale à la valeur spécifiée dans `requests`.  
nvidia.com/gpu  
Le nombre de GPUs ceux-ci sont réservés au conteneur. Les valeurs doivent correspondre à un entier. `nvidia.com/gpu` peut être spécifié dans `limits`, `requests` ou les deux. Si `nvidia.com/gpu` est spécifié dans les deux, la valeur spécifiée dans `limits` doit être égale à la valeur spécifiée dans `requests`.
Type : mappage chaîne/chaîne  
Contraintes de longueur de valeur : longueur minimale de 1. Longueur maximale de 256.  
Obligatoire : non  
`securityContext`  
Contexte de sécurité d'une tâche. Pour plus d'informations, consultez la section [Configurer un contexte de sécurité pour un pod ou un conteneur](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) dans la *Kubernetesdocumentation*.  
Type : objet [EksContainerSecurityContext](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerSecurityContext.html)  
Obligatoire : non    
`privileged`  
Lorsque ce paramètre est défini sur true `true`, des autorisations élevées inhérentes à l'instance de conteneur hôte sont accordées au conteneur. Le niveau des autorisations est similaire à celui des autorisations des `root` utilisateurs. La valeur par défaut est `false`. Ce paramètre correspond à la `privileged` politique décrite dans les [politiques de sécurité du module Privileged](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privileged) de la *Kubernetesdocumentation*.  
Type : booléen  
Obligatoire : non  
`readOnlyRootFilesystem`  
Lorsque ce paramètre est défini sur `true`, le conteneur ne dispose que d'un accès en lecture seule au système de fichiers racine. La valeur par défaut est `false`. Ce paramètre correspond à la `ReadOnlyRootFilesystem` politique décrite dans les [politiques de sécurité du module Volumes et systèmes de fichiers](https://kubernetes.io/docs/concepts/security/pod-security-policy/#volumes-and-file-systems) de la *Kubernetesdocumentation*.  
Type : booléen  
Obligatoire : non  
`runAsGroup`  
Lorsque ce paramètre est spécifié, le conteneur est exécuté avec l'ID de groupe spécifié (`gid`). Si ce paramètre n'est pas spécifié, le groupe spécifié dans les métadonnées d'image correspond au groupe par défaut. Ce paramètre correspond à `RunAsGroup` la `MustRunAs` politique décrite dans les [politiques de sécurité du module Utilisateurs et groupes](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) de la *Kubernetesdocumentation*.  
Type : long  
Obligatoire : non  
`runAsNonRoot`  
Lorsque ce paramètre est spécifié, le conteneur est exécuté en tant qu'utilisateur avec un `uid` autre que 0. Si ce paramètre n'est pas spécifié, cette règle est appliquée. Ce paramètre correspond à `RunAsUser` la `MustRunAsNonRoot` politique décrite dans les [politiques de sécurité du module Utilisateurs et groupes](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) de la *Kubernetesdocumentation*.  
Type : long  
Obligatoire : non  
`runAsUser`  
Lorsque ce paramètre est spécifié, le conteneur est exécuté avec l'ID utilisateur spécifié (`uid`). Si ce paramètre n'est pas spécifié, le groupe spécifié dans les métadonnées d'image correspond au groupe par défaut. Ce paramètre correspond à `RunAsUser` la `MustRanAs` politique décrite dans les [politiques de sécurité du module Utilisateurs et groupes](https://kubernetes.io/docs/concepts/security/pod-security-policy/#users-and-groups) de la *Kubernetesdocumentation*.  
Type : long  
Obligatoire : non  
`volumeMounts`  
Montages de volumes pour un conteneur dans le cadre d'une tâche Amazon EKS. Pour plus d'informations sur les volumes et les montages de volumesKubernetes, consultez la section [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/) de la *Kubernetesdocumentation*.  
Type : tableau d’objets [EksContainerVolumeMount](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainerVolumeMount.html)  
Obligatoire : non    
`mountPath`  
Le chemin d'accès du conteneur, sur lequel le volume est monté.  
Type : chaîne  
Obligatoire : non  
`name`  
Nom du montage de volume. Ce nom doit correspondre au nom d'un des volumes du pod.  
Type : chaîne  
Obligatoire : non  
`readOnly`  
Si cette valeur est `true`, le conteneur ne peut accéder au volume qu'en lecture. Dans le cas contraire, le conteneur peut écrire sur le volume. La valeur par défaut est `false`.  
Type : booléen  
Obligatoire : non  
`dnsPolicy`  
Stratégie DNS du pod. La valeur par défaut est `ClusterFirst`. Si le paramètre `hostNetwork` n'est pas spécifié, la valeur par défaut est `ClusterFirstWithHostNet`. `ClusterFirst` indique que toute requête DNS ne correspondant pas au suffixe de domaine du cluster configuré est transmise au serveur de noms en amont hérité du nœud. Si aucune valeur n'a été spécifiée `dnsPolicy` dans l'opération [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)d'API, aucune valeur n'est renvoyée `dnsPolicy` par l'une [DescribeJobDefinitions](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobDefinitions.html)ou l'autre des opérations d'[DescribeJobs](https://docs.aws.amazon.com/batch/latest/APIReference/API_DescribeJobs.html)API. Le paramètre de spécification du pod contient `ClusterFirst` ou `ClusterFirstWithHostNet`, selon la valeur du paramètre `hostNetwork`. Pour plus d'informations, consultez la [politique DNS de Pod](https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy) dans la *Kubernetesdocumentation*.  
Valeurs valides : `Default` \$1 `ClusterFirst` \$1 `ClusterFirstWithHostNet`  
Type : chaîne  
Obligatoire : non  
`hostNetwork`  
Indique si le pod utilise l'adresse IP réseau des hôtes. La valeur par défaut est `true`. Le réglage de cette option `false` permet d'activer le modèle de mise en réseau du Kubernetes pod. La plupart des AWS Batch charges de travail concernent uniquement les sorties et ne nécessitent pas la surcharge liée à l'allocation d'adresses IP pour chaque module pour les connexions entrantes. Pour plus d'informations, consultez les sections [Espaces de noms des hôtes](https://kubernetes.io/docs/concepts/security/pod-security-policy/#host-namespaces) et [Mise en réseau](https://kubernetes.io/docs/concepts/workloads/pods/#pod-networking) des pods dans la *Kubernetesdocumentation*.  
Type : booléen  
Obligatoire : non  
`serviceAccountName`  
Nom du compte de service utilisé pour exécuter le pod. Pour plus d'informations, consultez les [Kubernetessections Comptes](https://docs.aws.amazon.com/eks/latest/userguide/service-accounts.html) de service et [Configurer un compte de Kubernetes service pour assumer un rôle IAM](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html) dans le *Guide de l'utilisateur Amazon EKS* et [Configurer les comptes de service pour les pods](https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/) dans la *Kubernetesdocumentation*.  
Type : chaîne  
Obligatoire : non  
`volumes`  
Spécifie les volumes d'une définition de tâche qui utilise des ressources Amazon EKS.  
Type : tableau d’objets [EksVolume](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksVolume.html)  
Obligatoire : non    
Dir vide  
Spécifie la configuration d'un Kubernetes `emptyDir` volume. Un volume `emptyDir` est créé pour la première fois lorsqu'un pod est attribué à un nœud. Il existe tant que ce pod fonctionne sur ce nœud. Le volume `emptyDir` est initialement vide. Tous les conteneurs du pod peuvent lire et écrire les fichiers du volume `emptyDir`. Toutefois, le volume `emptyDir` peut être monté sur des chemins identiques ou différents dans chaque conteneur. Lorsqu'un pod est supprimé d'un nœud pour quelque raison que ce soit, les données du `emptyDir` sont définitivement supprimées. *Pour plus d'informations, consultez [EmptyDir](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) dans la Kubernetes documentation.*  
Type : objet [EksEmptyDir](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksEmptyDir.html)  
Obligatoire : non    
medium  
Support sur lequel stocker le volume. La valeur par défaut est une chaîne vide utilisant le stockage du nœud.    
""  
**(Par défaut)** Utilisez le stockage sur disque du nœud.  
« Mémoire »  
Utilisez le volume `tmpfs` soutenu par la mémoire vive du nœud. Le contenu du volume est perdu lorsque le nœud redémarre, et tout stockage présent sur le volume est pris en compte dans la limite de mémoire du conteneur.
Type : chaîne  
Obligatoire : non  
Limite de taille  
Taille maximale du volume. Par défaut, aucune taille maximale n'est définie.  
Type : String  
Contraintes de longueur : longueur minimum de 1. Longueur maximale de 256.  
Obligatoire : non  
Chemin de l'hôte  
Spécifie la configuration d'un Kubernetes `hostPath` volume. Un volume `hostPath` monte un fichier ou un répertoire existant depuis le système de fichiers du nœud hôte dans votre pod. Pour plus d'informations, consultez [HostPath](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) dans la *Kubernetesdocumentation*.  
Type : objet [EksHostPath](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksHostPath.html)  
Obligatoire : non    
*chemin*  
Chemin du fichier ou du répertoire sur l'hôte à monter dans les conteneurs du pod.  
Type : chaîne  
Obligatoire : non  
name  
Le nom du volume. Le nom doit être autorisé en tant que nom de sous-domaine DNS. Pour plus d'informations, consultez la section [Noms de sous-domaines DNS](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) dans la *Kubernetesdocumentation*.  
Type : String  
Obligatoire : oui  
secret  
Spécifie la configuration d'un Kubernetes `secret` volume. Pour plus d'informations, voir [secret](https://kubernetes.io/docs/concepts/storage/volumes/#secret) dans la *Kubernetesdocumentation*.  
Type : objet [EksSecret](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksSecret.html)  
Obligatoire : non    
facultatif  
Spécifie si le secret ou les clés du secret doivent être définis.  
Type : booléen  
Obligatoire : non  
Nom secret  
Le nom du secret. Le nom doit être autorisé en tant que nom de sous-domaine DNS. Pour plus d'informations, consultez la section [Noms de sous-domaines DNS](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names) dans la *Kubernetesdocumentation*.  
Type : String  
Obligatoire : oui

## Capacités de la plateforme
<a name="job-definition-parameters-platform-capabilities"></a>

`platformCapabilities`  
Les fonctionnalités de la plateforme requises par la définition du poste. Si aucune valeur n'est spécifiée, elle est par défaut `EC2`. Pour les tâches exécutées sur des ressources `FARGATE` Fargate, est spécifié.  
Si la tâche s'exécute sur les ressources Amazon EKS, vous ne devez pas le spécifier`platformCapabilities`.
Type : String  
Valeurs valides : `EC2` \$1 `FARGATE`  
Obligatoire : non

## Propager les balises
<a name="job-definition-parameters-propagate-tags"></a>

`propagateTags`  
Spécifie s'il faut propager les balises de tâche ou de la définition de tâche vers la tâche Amazon ECS correspondante. Si aucune valeur n'est spécifiée, les balises ne sont pas propagées. Les balises ne peuvent être propagées aux tâches que lorsque celles-ci sont créées. Pour les balises portant le même nom, les balises de tâche ont la priorité sur les balises de définition de tâche. Si le nombre total de balises combinées entre la tâche et la définition de la tâche est supérieur à 50, la tâche est déplacée vers l'`FAILED`état.  
Si la tâche s'exécute sur les ressources Amazon EKS, vous ne devez pas le spécifier`propagateTags`.
Type : booléen  
Obligatoire : non

## Propriétés de nœud
<a name="nodeProperties"></a>

`nodeProperties`  
Lorsque vous enregistrez une définition de tâche parallèle à nœuds multiples, vous devez spécifier une liste de propriétés de nœuds. Ces propriétés de nœud définissent le nombre de nœuds à utiliser dans votre tâche, l'index des nœuds principaux et les différentes plages de nœuds à utiliser. Si la tâche s'exécute sur les ressources Fargate, vous ne pouvez pas le spécifier. `nodeProperties` Utilisez à la place `containerProperties`. Les propriétés de nœud suivantes sont autorisées dans une définition de tâche. Pour de plus amples informations, veuillez consulter [Tâches parallèles sur plusieurs nœuds](multi-node-parallel-jobs.md).  
Si la tâche s'exécute sur les ressources Amazon EKS, vous ne devez pas le spécifier`nodeProperties`.
Type : objet [NodeProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeProperties.html)  
Obligatoire : non    
`mainNode`  
Spécifie l'index de nœud pour le nœud principal d'une tâche parallèle à plusieurs nœuds. Cette valeur d'index de nœud doit être inférieure au nombre de nœuds.  
Type : entier  
Obligatoire : oui  
`numNodes`  
Le nombre de nœuds associé à une tâche parallèle à plusieurs nœuds.  
Type : entier  
Obligatoire : oui  
`nodeRangeProperties`  
Une liste des plages de nœuds et leurs propriétés associées avec une tâche parallèle à plusieurs nœuds.  
Un groupe de nœuds constitue un groupe identique de nœuds de tâches qui partagent tous les mêmes propriétés de conteneur. Vous pouvez spécifier jusqu' AWS Batch à cinq groupes de nœuds distincts pour chaque tâche.
Type : tableau d’objets [NodeRangeProperty](https://docs.aws.amazon.com/batch/latest/APIReference/API_NodeRangeProperty.html)  
Obligatoire : oui    
`targetNodes`  
La plage de nœuds en utilisant les valeurs d'index de nœud. Une plage de nœuds `0:3` indique les nœuds dont les valeurs d'index sont comprises entre `0` et `3`. Si la valeur de la plage de départ est omise (`:n`), 0 est utilisé pour démarrer la plage. Si la valeur de fin de la plage n'est pas spécifiée (`n:`), l'index de nœud le plus élevé possible est utilisé pour terminer la plage. Vos plages de nœuds cumulatives doivent tenir compte de tous les nœuds (`0:n`). Vous pouvez imbriquer des plages de nœuds, par exemple `0:10` et`4:5`. Dans ce cas, les propriétés `4:5` de la plage remplacent les `0:10` propriétés.   
Type : chaîne  
Obligatoire : non  
`container`  
Les détails du conteneur pour la plage de nœuds. Pour de plus amples informations, veuillez consulter [Propriétés du contenant](#containerProperties).  
Type : objet [ContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html)   
Obligatoire : non

## Stratégie de nouvelle tentative
<a name="retryStrategy"></a>

`retryStrategy`  
Lorsque vous enregistrez une définition de tâche, vous pouvez, si vous le souhaitez, définir une stratégie de nouvelle tentative à adopter pour les tâches en échec qui sont soumises avec cette définition de tâche. Toute stratégie de nouvelle tentative spécifiée au cours d'une [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)opération remplace la stratégie de nouvelle tentative définie ici. Par défaut, chaque tâche est lancée une seule fois. Si vous spécifiez plusieurs tentatives, la tâche est réessayée en cas d'échec. Parmi les exemples de tentative d'échec, citons le renvoi d'un code de sortie différent de zéro par la tâche ou l'arrêt de l'instance de conteneur. Pour de plus amples informations, veuillez consulter [Nouvelles tentatives de travail automatisées](job_retries.md).  
Type : objet [RetryStrategy](https://docs.aws.amazon.com/batch/latest/APIReference/API_RetryStrategy.html)  
Obligatoire : non    
`attempts`  
Nombre de fois où une tâche est passée en statut `RUNNABLE`. Vous pouvez indiquer entre 1 et 10 tentatives. Si `attempts` est supérieur à un, la tâche est relancée ce nombre de fois en cas d'échec, jusqu'à ce que son statut devienne `RUNNABLE`.  

```
"attempts": integer
```
Type : entier  
Obligatoire : non  
`evaluateOnExit`  
Tableau contenant jusqu'à 5 objets qui spécifient les conditions dans lesquelles la tâche est réessayée ou échoue. Si ce paramètre est spécifié, le paramètre `attempts` doit également être spécifié. Si elle `evaluateOnExit` est spécifiée mais qu'aucune des entrées ne correspond, la tâche est réessayée.  

```
"evaluateOnExit": [
   {
      "action": "string",
      "onExitCode": "string",
      "onReason": "string",
      "onStatusReason": "string"
   }
]
```
Type : tableau d’objets [EvaluateOnExit](https://docs.aws.amazon.com/batch/latest/APIReference/API_EvaluateOnExit.html)  
Obligatoire : non    
`action`  
Spécifie l'action à exécuter si toutes les conditions spécifiées (`onStatusReason`, `onReason` et `onExitCode`) sont remplies. Les valeurs ne sont pas sensibles à la casse.  
Type : String  
Obligatoire : oui  
Valeurs valides : `RETRY` \$1 `EXIT`  
`onExitCode`  
Contient un motif global à faire correspondre à la représentation décimale du résultat `ExitCode` renvoyé pour une tâche. Le modèle peut contenir jusqu'à 512 caractères. Il ne peut contenir que des chiffres. Il ne peut pas contenir de lettres ou de caractères spéciaux. Il peut éventuellement se terminer par un astérisque (\$1) ; seul le début de la chaîne doit constituer une correspondance exacte.  
Type : chaîne  
Obligatoire : non  
`onReason`  
Contient un motif global correspondant à `Reason` celui renvoyé pour une tâche. Le modèle peut contenir jusqu'à 512 caractères. Il peut contenir des lettres, des chiffres, des points (.), des points (:) et des espaces blancs (espaces, onglets). Il peut éventuellement se terminer par un astérisque (\$1) ; seul le début de la chaîne doit constituer une correspondance exacte.  
Type : chaîne  
Obligatoire : non  
`onStatusReason`  
Contient un motif global correspondant à `StatusReason` celui renvoyé pour une tâche. Le modèle peut contenir jusqu'à 512 caractères. Il peut contenir des lettres, des chiffres, des points (.), des points (:) et des espaces blancs (espaces, onglets). Il peut éventuellement se terminer par un astérisque (\$1) ; seul le début de la chaîne doit constituer une correspondance exacte.  
Type : chaîne  
Obligatoire : non

## Priorité de planification
<a name="job-definition-parameters-schedulingPriority"></a>

`schedulingPriority`  
Priorité de planification pour les tâches soumises avec cette définition de tâche. Cela ne concerne que les emplois en attente d'emploi dans le cadre d'une politique de partage équitable. Les tâches avec une priorité de planification plus élevée sont planifiées avant celles dont la priorité de planification est inférieure.  
La valeur minimale prise en charge est 0 et la valeur maximale prise en charge est 9999.  
Type : entier  
Obligatoire : non

## Balises
<a name="job-definition-parameters-tags"></a>

`tags`  
Balises de paire clé-valeur à associer à la définition de la tâche. Pour de plus amples informations, veuillez consulter [Marquez vos AWS Batch ressources](using-tags.md).  
Type : mappage chaîne/chaîne  
Obligatoire : non

## Timeout
<a name="timeout"></a>

`timeout`  
Vous pouvez configurer un délai d'expiration pour vos tâches de telle sorte que si une tâche dure plus longtemps, AWS Batch elle soit interrompue. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md). Si une tâche est interrompue en raison d'un délai d'attente, aucune nouvelle tentative n'est faite. Toute configuration de temporisation spécifiée au cours d'une [SubmitJob](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)opération remplace la configuration de temporisation définie ici. Pour de plus amples informations, veuillez consulter [Expiration des délais d'exécution des tâches](job_timeouts.md).  
Type : objet [JobTimeout](https://docs.aws.amazon.com/batch/latest/APIReference/API_JobTimeout.html)  
Obligatoire : non    
`attemptDurationSeconds`  
Durée en secondes (mesurée à partir de l'`startedAt`horodatage de la tentative de tâche) après la AWS Batch fin des tâches inachevées. La valeur minimale pour le délai d'expiration est 60 secondes.  
Pour les tâches de tableau, le délai s'applique aux tâches enfants, et non à la tâche de tableau parent.  
Pour les tâches parallèles à plusieurs nœuds (MNP), le délai s'applique à l'ensemble de la tâche, et non aux nœuds individuels.  
Type : entier  
Obligatoire : non

# Créez des définitions de tâches à l'aide de EcsProperties
<a name="multi-container-jobs"></a>

Grâce aux définitions de AWS Batch tâches utilisées [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html), vous pouvez modéliser du matériel, des capteurs, des environnements 3D et d'autres simulations dans des conteneurs séparés. Vous pouvez utiliser cette fonctionnalité pour organiser de manière logique les composants de votre charge de travail et les séparer de l'application principale. Cette fonctionnalité peut être utilisée avec AWS Batch Amazon Elastic Container Service (Amazon ECS), Amazon Elastic Kubernetes Service (Amazon EKS) et. AWS Fargate

## `ContainerProperties`par rapport aux définitions de `EcsProperties` poste
<a name="containerpropertions-vs-ecsproperties"></a>

Vous pouvez choisir d'utiliser [https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html)ou de [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)définir des tâches selon votre cas d'utilisation. À un niveau élevé, l'exécution de AWS Batch tâches avec `EcsProperties` est similaire à l'exécution de tâches avec un`ContainerProperties`.

L'ancienne structure de définition des tâches, en utilisant`ContainerProperties`, reste prise en charge. Si vous disposez actuellement de flux de travail utilisant cette structure, vous pouvez continuer à les exécuter.

La principale différence réside dans le fait qu'un nouvel objet a été ajouté à la définition de tâche pour tenir compte des définitions `EcsProperties` basées sur des définitions.

Par exemple, une définition de tâche utilisée `ContainerProperties` sur Amazon ECS et Fargate possède la structure suivante :

```
{
   "containerProperties": {
     ...
     "image": "my_ecr_image1",
     ...
  },
...
}
```

Une définition de tâche utilisée `EcsProperties` sur Amazon ECS et Fargate possède la structure suivante :

```
{
  "ecsProperties": {
    "taskProperties": [{
      "containers": [
        { 
          ...
          "image": "my_ecr_image1",
          ...
        },
        { 
          ...
          "image": "my_ecr_image2",
          ...
        },
```

## Modifications générales apportées au AWS Batch APIs
<a name="multi-container-general"></a>

Vous trouverez ci-dessous un aperçu de certaines des principales différences entre les types de données `ContainerProperties` et les `EcsProperties` API :
+ La plupart des paramètres utilisés y `ContainerProperties` apparaissent`TaskContainerProperties`. Certains exemples incluent`command`,`image`,`privileged`,`secrets`, et`users`. Ils se trouvent tous à l'intérieur [TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html).
+ Certains `TaskContainerProperties` paramètres n'ont pas d'équivalent fonctionnel dans l'ancienne structure. Certains exemples incluent`dependsOn`,`essential`,`name`,`ipcMode`, et`pidMode`. Pour plus d’informations, consultez [EcsTaskDetails](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskDetails.html) et [TaskContainerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html).

  De plus, certains `ContainerProperties` paramètres n'ont pas d'équivalent ou d'application dans la `EcsProperties` structure. In [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties), `container` a été remplacé par de `containers` sorte que le nouvel objet puisse accepter jusqu'à dix éléments. [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-containerProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-containerProperties)
+ `taskRoleArn`est fonctionnellement équivalent à. `jobRoleArn` Pour plus d'informations, voir [EcsTaskProperties: taskRoleArn](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html) et [ContainerProperties: jobRoleArn](https://docs.aws.amazon.com/batch/latest/APIReference/API_ContainerProperties.html).
+ Vous pouvez inclure de un (1) à dix (10) conteneurs dans la `EcsProperties` structure. [Pour plus d'informations, voir : conteneursEcsTaskProperties.](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html)
+ Les objets `taskProperties` et InstanceTypes sont des tableaux, mais ils n'acceptent actuellement qu'un seul élément. [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html)

## Définitions de tâches multi-conteneurs pour Amazon ECS
<a name="multi-container-ecs-updates"></a>

Pour s'adapter à la structure multi-conteneurs d'Amazon ECS, certains types de données d'API sont différents. Par exemple, 
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties)est le même niveau que `containerProperties` dans la définition du conteneur unique. Pour plus d'informations, consultez [EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) dans le *Guide de référence des API AWS Batch *.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html#Batch-Type-EcsProperties-taskProperties)contient les propriétés définies pour la tâche Amazon ECS. Pour plus d'informations, consultez [EcsProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsProperties.html) dans le *Guide de référence des API AWS Batch *.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html#Batch-Type-EcsTaskProperties-containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html#Batch-Type-EcsTaskProperties-containers)inclut des informations similaires à celles `containerProperties` de la définition du conteneur unique. La principale différence est que `containers` vous pouvez définir jusqu'à dix conteneurs. Pour plus d'informations, consultez [ECSTaskProperties:Containers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EcsTaskProperties.html) dans le guide de référence des *AWS Batch API*.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential)le paramètre indique comment le conteneur affecte la tâche. Tous les conteneurs essentiels doivent être terminés avec succès (sortie en tant que 0) pour que le travail progresse. Si un conteneur marqué comme essentiel échoue (sort en tant que non-0), la tâche échoue.

  La valeur par défaut est `true` et au moins un conteneur doit être marqué comme`essential`. Pour plus d'informations, consultez [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-essential) dans le *Guide de référence des API AWS Batch *.
+ Avec le [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn)paramètre, vous pouvez définir une liste de dépendances de conteneurs. Pour plus d'informations, consultez [https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn](https://docs.aws.amazon.com/batch/latest/APIReference/API_TaskContainerProperties.html#Batch-Type-TaskContainerProperties-dependsOn) dans le *Guide de référence des API AWS Batch *.
**Note**  
La complexité de la `dependsOn` liste et le temps d'exécution du conteneur associé peuvent affecter l'heure de début de votre tâche. Si les dépendances mettent du temps à s'exécuter, la tâche restera inchangée jusqu'à ce `STARTING` qu'elle soit terminée.

Pour plus d'informations sur la structure `ecsProperties` et, consultez la syntaxe des [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)demandes pour [ECSProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-ecsProperties).

## Définitions de tâches multi-conteneurs pour Amazon EKS
<a name="multi-container-eks-updates"></a>

Pour s'adapter à la structure multi-conteneurs d'Amazon EKS, certains types de données d'API sont différents. Par exemple, 
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html#Batch-Type-EksContainer-name](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksContainer.html#Batch-Type-EksContainer-name)est un identifiant unique pour le conteneur. Cet objet n'est pas obligatoire pour un seul conteneur, mais il est obligatoire lors de la définition de plusieurs conteneurs dans un pod. Lorsqu'il `name` n'est pas défini pour des conteneurs individuels, le nom par défaut`default`, est appliqué.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-initContainers](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-initContainers)sont définis dans le type de [eksPodProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html)données. Ils s'exécutent avant les conteneurs d'applications, s'exécutent toujours jusqu'à la fin et doivent s'achever correctement avant le démarrage du conteneur suivant.

  Ces conteneurs sont enregistrés auprès de l'agent Amazon EKS Connector et conservent les informations d'enregistrement dans le magasin de données principal Amazon Elastic Kubernetes Service. L'`initContainers`objet peut accepter jusqu'à dix (10) éléments. Pour plus d'informations, consultez la section [Init Containers](https://kubernetes.io/docs/concepts/workloads/pods/init-containers/) dans la *Kubernetesdocumentation*.
**Note**  
L'`initContainers`objet peut affecter l'heure de début de votre tâche. Si leur exécution `initContainers` prend du temps, la tâche restera dans son `STARTING` état jusqu'à ce qu'elle soit terminée.
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-shareProcessNamespace](https://docs.aws.amazon.com/batch/latest/APIReference/API_EksPodProperties.html#Batch-Type-EksPodProperties-shareProcessNamespace)indique si les conteneurs du pod peuvent partager le même espace de noms de processus. Les valeurs par défaut sont `false`. Définissez ce paramètre sur `true` pour permettre aux conteneurs de voir et de signaler les processus dans d'autres conteneurs situés dans le même module.
+ Chaque contenant a de l'importance. Tous les conteneurs doivent être terminés avec succès (sortie sous la forme 0) pour que la tâche réussisse. Si un conteneur échoue (sort sous une autre forme que 0), la tâche échoue.

Pour plus d'informations sur la structure `eksProperties` et, consultez la syntaxe des [RegisterJobDefinition](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#API_RegisterJobDefinition_RequestBody)demandes pour [EksProperties](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html#Batch-RegisterJobDefinition-request-eksProperties).

# Référence : AWS Batch scénarios professionnels utilisant EcsProperties
<a name="multi-container-jobs-scenarios"></a>

Pour illustrer comment les définitions de AWS Batch poste utilisées `EcsProperties` peuvent être structurées en fonction de vos besoins, cette rubrique présente les [https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_RegisterJobDefinition.html)charges utiles suivantes. Vous pouvez copier ces exemples dans un fichier, les personnaliser selon vos besoins, puis utiliser le AWS Command Line Interface (AWS CLI) pour appeler`RegisterJobDefinition`.

## AWS Batch offre d'emploi pour Amazon ECS sur Amazon EC2
<a name="multi-container-scenario-on-ec2"></a>

Voici un exemple de AWS Batch tâche pour Amazon Elastic Container Service sur Amazon Elastic Compute Cloud :

```
{
    "jobDefinitionName": "multicontainer-ecs-ec2",
    "type": "container",
    "ecsProperties": {
        "taskProperties": [
          {
            "containers": [
              {
                "name": "c1",
                "essential": false,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c2",
                "essential": false,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c3",
                "essential": true,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "firelensConfiguration": {
                  "type": "fluentbit",
                  "options": {
                    "enable-ecs-log-metadata": "true"
                  }
                 },
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "6"
                  },
                  {
                    "type": "MEMORY",
                    "value": "12288"
                  }
                ]
              }
            ]
          }
        ]
  }
}
```

## AWS Batch offre d'emploi pour Amazon ECS sur Fargate
<a name="multi-containers-ecs-on-fargate"></a>

Voici un exemple de AWS Batch tâche pour Amazon Elastic Container Service sur AWS Fargate :

```
{
    "jobDefinitionName": "multicontainer-ecs-fargate",
    "type": "container",
    "platformCapabilities": [
        "FARGATE"
    ],
    "ecsProperties": {
        "taskProperties": [
          {
            "containers": [
              {
                "name": "c1",
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "2"
                  },
                  {
                    "type": "MEMORY",
                    "value": "4096"
                  }
                ]
              },
              {
                "name": "c2",
                "essential": true,
                "command": [
                  "echo",
                  "hello world"
                ],
                "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                "resourceRequirements": [
                  {
                    "type": "VCPU",
                    "value": "6"
                  },
                  {
                    "type": "MEMORY",
                    "value": "12288"
                  }
                ]
              }
            ],
            "executionRoleArn": "arn:aws:iam::1112223333:role/ecsTaskExecutionRole"
          }
        ]
  }
}
```

## AWS Batch job pour Amazon EKS
<a name="multi-containers-eks-example"></a>

Voici un exemple de AWS Batch tâche pour Amazon Elastic Kubernetes Service :

```
{
  "jobDefinitionName": "multicontainer-eks",
  "type": "container",
  "eksProperties": {
    "podProperties": {
      "shareProcessNamespace": true,
      "initContainers": [
        {
          "name": "init-container",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo"
          ],
          "args": [
            "hello world"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        },
        {
          "name": "init-container-2",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo",
            "my second init container"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        }
      ],
      "containers": [
        {
          "name": "c1",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "echo world"
         ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        },
        {
          "name": "sleep-container",
          "image": "public.ecr.aws/amazonlinux/amazonlinux:2",
          "command": [
            "sleep",
            "20"
          ],
          "resources": {
            "requests": {
              "cpu": "1",
              "memory": "512Mi"
            }
          }
        }
      ]
    }
  }
}
```

## Tâche AWS Batch MNP avec plusieurs conteneurs par nœud
<a name="multi-container-ecs-mnp"></a>

Voici un exemple de AWS Batch tâche MNP (multi-node parallel) avec plusieurs conteneurs par nœud :

```
{
  "jobDefinitionName": "multicontainer-mnp",
  "type": "multinode",
  "nodeProperties": {
    "numNodes": 6,
    "mainNode": 0,
    "nodeRangeProperties": [
      {
        "targetNodes": "0:5",
        "ecsProperties": {
          "taskProperties": [
            {
              "containers": [
                {
                  "name": "range05-c1",
                  "command": [
                    "echo",
                    "hello world"
                  ],
                  "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                  "resourceRequirements": [
                    {
                      "type": "VCPU",
                      "value": "2"
                    },
                    {
                      "type": "MEMORY",
                      "value": "4096"
                    }
                  ]
                },
                {
                  "name": "range05-c2",
                  "command": [
                    "echo",
                    "hello world"
                  ],
                  "image": "public.ecr.aws/amazonlinux/amazonlinux:latest",
                  "resourceRequirements": [
                    {
                      "type": "VCPU",
                      "value": "2"
                    },
                    {
                      "type": "MEMORY",
                      "value": "4096"
                    }
                  ]
                }
              ]
            }
          ]
        }
      }
    ]
  }
}
```

# Utiliser le pilote de journal awslogs
<a name="using_awslogs"></a>

Par défaut, AWS Batch permet au pilote de `awslogs` journal d'envoyer des informations de journal à CloudWatch Logs. Vous pouvez utiliser cette fonctionnalité pour afficher les différents journaux de vos conteneurs en un seul endroit pratique et éviter que les journaux de vos conteneurs n'occupent de l'espace disque sur vos instances de conteneurs. Cette rubrique vous aide à configurer le pilote de `awslogs` journal dans vos définitions de tâches.

**Note**  
Dans la AWS Batch console, vous pouvez configurer le pilote de `awslogs` journal dans la section **Configuration de la journalisation** lorsque vous créez une définition de tâche.

**Note**  
Le type d'informations enregistrées par les conteneurs dans le cadre de votre tâche dépend principalement de leur `ENTRYPOINT` commande. Par défaut, les journaux capturés affichent la sortie de commande que vous voyez normalement dans un terminal interactif si vous avez exécuté le conteneur localement, à savoir les `STDERR` I/O flux `STDOUT` et. Le pilote de `awslogs` journal transmet simplement ces journaux de Docker à CloudWatch Logs. Pour plus d'informations sur la façon dont les journaux Docker sont traités, et notamment sur les autres façons de capturer différentes données de fichiers ou différents flux, consultez [View logs for a container or service](https://docs.docker.com/config/containers/logging/) dans la documentation Docker.

Pour envoyer des journaux système depuis vos instances de conteneur vers CloudWatch Logs, consultez[Utilisation CloudWatch des journaux avec AWS Batch](using_cloudwatch_logs.md). Pour plus d'informations sur CloudWatch les journaux, consultez la section [Surveillance des fichiers journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html) et [CloudWatch des quotas de journaux](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html) dans le *guide de l'utilisateur Amazon CloudWatch Logs*.

## options du pilote de journal awslogs dans le type de données AWS Batch JobDefiniton
<a name="create_awslogs_logdriver_options"></a>

Le pilote de `awslogs` journal prend en charge les options suivantes dans les définitions de AWS Batch tâches. Pour plus d'informations, consultez la section [Pilote de journalisation des CloudWatch journaux](https://docs.docker.com/config/containers/logging/awslogs/) dans la documentation Docker.

`awslogs-region`  
Obligatoire : non  
Spécifiez la région dans laquelle le pilote de `awslogs` journal doit envoyer vos journaux Docker. Par défaut, la région utilisée est la même que celle de la tâche. Vous pouvez choisir d'envoyer tous vos journaux provenant de tâches situées dans différentes régions vers une seule région dans CloudWatch Logs. Cela leur permet d'être tous visibles à partir d'un seul endroit. Vous pouvez également les séparer par région pour une approche plus précise. Toutefois, lorsque vous choisissez cette option, assurez-vous que les groupes de journaux spécifiés existent dans la région que vous avez spécifiée.

`awslogs-group`  
Obligatoire : Facultatif  
Avec `awslogs-group` cette option, vous pouvez spécifier le groupe de journaux auquel le pilote de `awslogs` journal envoie ses flux de journaux. Si cela n'est pas spécifié, `aws/batch/job` est utilisé.

`awslogs-stream-prefix`  
Obligatoire : Facultatif  
Avec `awslogs-stream-prefix` cette option, vous pouvez associer un flux de journal au préfixe spécifié et à l'ID de tâche Amazon ECS de la AWS Batch tâche à laquelle appartient le conteneur. Si vous spécifiez un préfixe avec cette option, le format du flux de journaux est le suivant :  

```
prefix-name/default/ecs-task-id
```

`awslogs-datetime-format`  
Obligatoire : non  
Cette option définit un modèle de démarrage à plusieurs lignes au format `strftime` Python. Un message de journal se compose d'une ligne qui correspond au modèle et de toutes les lignes suivantes qui ne correspondent pas au modèle. Ainsi, la ligne mise en correspondance est le délimiteur entre les messages de journalisation.  
Ce format peut, par exemple, servir à analyser une sortie comme une pile de vidage, laquelle pourrait, dans le cas contraire, être consignée en plusieurs entrées. Le modèle adéquat permet de la capturer dans une seule entrée.  
Pour de plus amples informations, veuillez consulter [awslogs-datetime-format](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format).  
Cette option est toujours prioritaire si `awslogs-datetime-format` et `awslogs-multiline-pattern` sont configurés.  
La journalisation multiligne effectue l'analyse et la mise en correspondance des expressions régulières de tous les messages de journalisation. Cela peut avoir un impact négatif sur les performances de journalisation.

`awslogs-multiline-pattern`  
Obligatoire : non  
Cette option définit un modèle de démarrage à plusieurs lignes à l'aide d'une expression régulière. Un message de journal se compose d'une ligne qui correspond au modèle et de toutes les lignes suivantes qui ne correspondent pas au modèle. Ainsi, la ligne correspondante est le délimiteur entre les messages du journal.  
Pour plus d'informations, consultez [awslogs-multiline-pattern](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern)la documentation Docker.  
Cette option est ignorée si `awslogs-datetime-format` est également configuré.  
La journalisation multiligne effectue l'analyse et la mise en correspondance des expressions régulières de tous les messages de journalisation. Cela peut avoir un impact négatif sur les performances de journalisation.

`awslogs-create-group`  
Obligatoire : non  
Spécifiez si vous voulez que le groupe de journaux soit automatiquement créé. Si cette option n'est pas spécifiée, l'emplacement par défaut est `false`.  
Cette option n'est pas recommandée. Nous vous recommandons de créer le groupe de CloudWatch journaux à l'avance à l'aide de l'action Logs [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)API car chaque tâche tente de créer le groupe de journaux, ce qui augmente le risque d'échec de la tâche.
La politique IAM de votre rôle d'exécution doit inclure l'`logs:CreateLogGroup`autorisation avant toute tentative d'utilisation`awslogs-create-group`.

## Spécifiez une configuration de journal dans la définition de votre tâche
<a name="specify-log-config"></a>

 AWS Batch Active le pilote de `awslogs` journal par défaut. Cette section décrit comment personnaliser la configuration du `awslogs` journal pour une tâche. Pour de plus amples informations, veuillez consulter [Création d'une définition de tâche à nœud unique](create-job-definition.md).

Les extraits de code JSON de configuration de journal suivants contiennent un `logConfiguration` objet spécifié pour chaque tâche. L'un concerne une WordPress tâche qui envoie des journaux à un groupe de journaux appelé`awslogs-wordpress`, et l'autre concerne un conteneur MySQL qui envoie des journaux à un groupe de journaux appelé`awslogs-mysql`. Les deux conteneurs utilisent le préfixe de flux de journal `awslogs-example`.

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-wordpress",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-mysql",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

Dans la AWS Batch console, la configuration du journal pour la définition de `wordpress` tâche est spécifiée comme indiqué dans l'image suivante. 

![\[Log configuration interface showing awslogs driver with group and stream prefix options.\]](http://docs.aws.amazon.com/fr_fr/batch/latest/userguide/images/awslogs-console-config.png)


Après avoir enregistré une définition de tâche avec le pilote de `awslogs` journal dans une configuration de journal de définition de tâche, vous pouvez soumettre une tâche avec cette définition de tâche pour commencer à envoyer des CloudWatch journaux à Logs. Pour de plus amples informations, veuillez consulter [Tutoriel : soumettre une offre d'emploi](submit_job.md).

# Spécifier les données sensibles
<a name="specifying-sensitive-data"></a>

Vous pouvez ainsi injecter des données sensibles dans vos tâches en les stockant dans des AWS Secrets Manager secrets ou dans des paramètres AWS Systems Manager Parameter Store, puis en les référençant dans votre définition de tâche. AWS Batch

Les secrets d'une offre d'emploi peuvent être exposés de différentes manières :
+ Pour injecter des données sensibles dans vos conteneurs sous forme de variables d'environnement, utilisez le paramètre de définition de `secrets` tâche.
+ Pour référencer des informations sensibles dans la configuration du journal d'une tâche, utilisez le paramètre de définition de `secretOptions` tâche.

**Topics**
+ [Spécifiez les données sensibles avec Secrets Manager](specifying-sensitive-data-secrets.md)
+ [Spécifiez les données sensibles avec Systems Manager Parameter Store](specifying-sensitive-data-parameters.md)

# Spécifiez les données sensibles avec Secrets Manager
<a name="specifying-sensitive-data-secrets"></a>

Avec AWS Batch, vous pouvez injecter des données sensibles dans vos tâches en stockant vos données sensibles en AWS Secrets Manager secret, puis en les référençant dans votre définition de tâche. Les données sensibles stockées dans les secrets de Secrets Manager peuvent être exposées à une tâche sous forme de variables d'environnement ou dans le cadre de la configuration du journal.

Lorsque vous injectez un secret en tant que variable d'environnement, vous pouvez spécifier une clé JSON ou une version d'un secret à injecter. Ce processus vous permet de contrôler les données sensibles exposées à votre travail. Pour de plus amples informations sur la gestion des versions de secrets, veuillez consulter [Termes et concepts clés pour AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) dans le *Guide de l'utilisateur AWS Secrets Manager *.

## Considérations à prendre en compte lors de la spécification de données sensibles à l'aide de Secrets Manager
<a name="secrets-considerations"></a>

Les points suivants doivent être pris en compte lors de l'utilisation de Secrets Manager pour spécifier des données sensibles pour des tâches.
+ Pour injecter un secret à l'aide d'une clé JSON ou d'une version spécifique d'un secret, la version 1.37.0 ou ultérieure de l'agent de conteneur Amazon ECS doit être installée sur l'instance de conteneur de votre environnement informatique. Toutefois, nous vous recommandons d'utiliser la dernière version de l'agent de conteneur. Pour plus d'informations sur la vérification de la version de votre agent et la mise à jour vers la dernière version, consultez la section [Mise à jour de l'agent de conteneur Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.

  Pour injecter le contenu complet d'un secret en tant que variable d'environnement ou pour injecter un secret dans une configuration de journal, votre instance de conteneur doit disposer de la version 1.23.0 ou ultérieure de l'agent de conteneur.
+ Seuls les secrets qui stockent des données texte, qui sont des secrets créés avec le `SecretString` paramètre de l'[CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API, sont pris en charge. Les secrets qui stockent des données binaires, qui sont des secrets créés avec le `SecretBinary` paramètre de l'[CreateSecret](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_CreateSecret.html)API, ne sont pas pris en charge.
+ Lorsque vous utilisez une définition de tâche qui fait référence aux secrets de Secrets Manager pour récupérer des données sensibles pour vos tâches, si vous utilisez également des points de terminaison VPC d'interface, vous devez créer les points de terminaison VPC d'interface pour Secrets Manager. Pour de plus amples informations, veuillez consulter [Utilisation de Secrets Manager avec des points de terminaison de VPC](https://docs.aws.amazon.com/secretsmanager/latest/userguide/vpc-endpoint-overview.html) dans le *Guide de l'utilisateur AWS Secrets Manager *.
+ Des données sensibles sont injectées dans votre tâche lors de son lancement initial. Si le secret est ensuite mis à jour ou pivoté, la tâche ne reçoit pas automatiquement la valeur mise à jour. Vous devez lancer une nouvelle tâche pour forcer le service à lancer une nouvelle tâche avec la valeur secrète mise à jour.

## Autorisations IAM requises pour les secrets AWS Batch
<a name="secrets-iam"></a>

Pour utiliser cette fonctionnalité, vous devez disposer du rôle d'exécution et le référencer dans votre définition de tâche. Cela permet à l'agent de conteneur d'extraire les ressources Secrets Manager nécessaires. Pour de plus amples informations, veuillez consulter [AWS Batch Rôle d'exécution IAM](execution-IAM-role.md).

Pour donner accès aux secrets de Secrets Manager que vous créez, ajoutez manuellement les autorisations suivantes en tant que politique intégrée au rôle d'exécution. Pour obtenir des informations, consultez la section [Ajout et suppression de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dans le *Guide de l’utilisateur IAM*.
+ `secretsmanager:GetSecretValue` : obligatoire si vous faites référence à un secret Secrets Manager.
+ `kms:Decrypt` : obligatoire uniquement si votre secret utilise une clé KMS personnalisée et non la clé par défaut. L'ARN de votre clé personnalisée doit être ajouté en tant que ressource.

L'exemple suivant de politique en ligne ajoute les autorisations requises.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-2:777777777777:secret:<secret_name>",
                "arn:aws:kms:us-east-2:777777777777:key/<key_id>"
            ]
        }
    ]
}
```

------

## Injection de données sensibles sous la forme d'une variable d'environnement
<a name="secrets-envvar"></a>

Vous pouvez spécifier les éléments suivants dans votre définition de tâche :
+ L'`secrets`objet contenant le nom de la variable d'environnement à définir dans le job
+ Amazon Resource Name (ARN) du secret Secrets Manager
+ Paramètres supplémentaires contenant les données sensibles à présenter à la tâche

L'exemple suivant montre la syntaxe complète qui doit être spécifiée pour le secret Secrets Manager.

```
arn:aws:secretsmanager:region:aws_account_id:secret:secret-name:json-key:version-stage:version-id
```

La section suivante décrit les paramètres supplémentaires. Ces paramètres sont facultatifs. Toutefois, si vous ne les utilisez pas, vous devez inclure les deux points `:` pour utiliser les valeurs par défaut. Des exemples sont donnés ci-dessous pour plus de contexte.

`json-key`  
Spécifie le nom de la clé dans une paire clé-valeur avec la valeur que vous souhaitez définir comme valeur de variable d'environnement. Seules les valeurs au format JSON sont prises en charge. Si vous ne spécifiez pas de clé JSON, le contenu complet du secret est utilisé.

`version-stage`  
Spécifie l'étiquette intermédiaire de la version d'un secret que vous souhaitez utiliser. Si une étiquette intermédiaire de version est spécifiée, vous ne pouvez pas spécifier d'ID de version. Si aucune étape de version n'est spécifiée, le comportement par défaut consiste à récupérer le secret avec l'étiquette `AWSCURRENT` intermédiaire.  
Les étiquettes intermédiaires sont utilisées pour suivre les différentes versions d'un secret lorsqu'elles sont mises à jour ou font l'objet d'une rotation. Chaque version d'un secret a une ou plusieurs étiquettes intermédiaires et un ID. Pour plus d'informations, consultez la section [Termes et concepts clés de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) dans le *guide de AWS Secrets Manager l'utilisateur*.

`version-id`  
Spécifie l'identifiant unique de la version du secret que vous souhaitez utiliser. Si un ID de version est spécifié, vous ne pouvez pas spécifier d'étiquette intermédiaire de version. Si aucun ID de version n'est spécifié, le comportement par défaut consiste à récupérer le secret avec l'étiquette `AWSCURRENT` intermédiaire.  
 IDs Les versions sont utilisées pour suivre les différentes versions d'un secret lors de leur mise à jour ou de leur rotation. Chaque version d'un secret a un ID. Pour plus d'informations, consultez la section [Termes et concepts clés de AWS Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/terms-concepts.html#term_secret) dans le *guide de AWS Secrets Manager l'utilisateur*.

### Exemples de définitions de conteneur
<a name="secrets-examples"></a>

Les exemples suivants montrent comment vous pouvez référencer des secrets Secrets Manager dans vos définitions de conteneur.

**Example référencement d'un secret complet**  
Voici un extrait d'une définition de tâche montrant le format lorsque vous référencez le texte complet d'un secret Secrets Manager.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
    }]
  }]
}
```

**Example référencement d'une clé spécifique dans un secret**  
Voici un exemple de sortie d'une get-secret-value commande [>](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/get-secret-value.html) qui affiche le contenu d'un secret ainsi que l'étiquette de préparation de la version et l'ID de version qui lui sont associés.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "VersionId": "871d9eca-18aa-46a9-8785-981dd39ab30c",
    "SecretString": "{\"username1\":\"password1\",\"username2\":\"password2\",\"username3\":\"password3\"}",
    "VersionStages": [
        "AWSCURRENT"
    ],
    "CreatedDate": 1581968848.921
}
```
Référence d'une clé spécifique de la sortie précédente dans une définition de conteneur en spécifiant le nom de la clé à la fin de l'ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::"
    }]
  }]
}
```

**Example référencement d'une version secrète spécifique**  
Voici un exemple de sortie d'une commande [>describe-secret](https://docs.aws.amazon.com/cli/latest/reference/secretsmanager/describe-secret.html) qui affiche le contenu non chiffré d'un secret ainsi que les métadonnées de toutes les versions du secret.  

```
{
    "ARN": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf",
    "Name": "appauthexample",
    "Description": "Example of a secret containing application authorization data.",
    "RotationEnabled": false,
    "LastChangedDate": 1581968848.926,
    "LastAccessedDate": 1581897600.0,
    "Tags": [],
    "VersionIdsToStages": {
        "871d9eca-18aa-46a9-8785-981dd39ab30c": [
            "AWSCURRENT"
        ],
        "9d4cb84b-ad69-40c0-a0ab-cead36b967e8": [
            "AWSPREVIOUS"
        ]
    }
}
```
Référence d'une étiquette intermédiaire de version spécifique à partir de la sortie précédente dans une définition de conteneur en spécifiant le nom de la clé à la fin de l'ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::AWSPREVIOUS:"
    }]
  }]
}
```
Référence un ID de version spécifique de la sortie précédente dans une définition de conteneur en spécifiant le nom de clé à la fin de l'ARN.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf::9d4cb84b-ad69-40c0-a0ab-cead36b967e8"
    }]
  }]
}
```

**Example référencement d'une clé spécifique et d'une étiquette intermédiaire de version d'un secret**  
Ce qui suit montre comment référencer à la fois une clé spécifique dans une étiquette secrète et une étiquette de mise en scène de version spécifique.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1:AWSPREVIOUS:"
    }]
  }]
}
```
Pour spécifier une clé et un ID de version spécifiques, utilisez la syntaxe suivante.  

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:appauthexample-AbCdEf:username1::9d4cb84b-ad69-40c0-a0ab-cead36b967e8"
    }]
  }]
}
```

## Injecter des données sensibles dans une configuration de journal
<a name="secrets-logconfig"></a>

Lorsque vous spécifiez une option `logConfiguration` dans votre définition de tâche, vous pouvez indiquer `secretOptions` le nom de l'option de pilote de journal à définir dans le conteneur et l'ARN complet du secret Secrets Manager contenant les données sensibles à présenter au conteneur.

Ce qui suit est un extrait d'une définition de tâche indiquant le format lors du référencement d'un secret de Secrets Manager.

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "splunk",
      "options": {
        "splunk-url": "https://cloud.splunk.com:8080"
      },
      "secretOptions": [{
        "name": "splunk-token",
        "valueFrom": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name-AbCdEf"
      }]
    }]
  }]
}
```

## Créez un AWS Secrets Manager secret
<a name="secrets-create-secret"></a>

Vous pouvez utiliser la console Secrets Manager afin de créer un secret pour vos données sensibles. Pour plus d'informations, veuillez consulter la rubrique [Didacticiel : création et récupération d'un secret](https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_create-basic-secret.html) dans le *Guide de l'utilisateur AWS Secrets Manager *.

**Pour créer un secret basique**

Utilisez Secrets Manager afin de créer un secret pour vos données sensibles.

1. Ouvrez la console Secrets Manager à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Choisissez **Store a new secret** (Stocker un nouveau secret).

1. Pour **Select secret type** (Sélectionner un type de secret), choisissez **Other type of secrets** (Autre type de secrets).

1. Précisez les détails de votre secret personnalisé sous forme de paires de **Key** (Clé) et **Value** (Valeur). Par exemple, vous pouvez spécifier la clé `UserName`, puis fournir le nom d'utilisateur approprié comme valeur. Ajoutez une deuxième clé avec le nom `Password` et le texte du mot de passe comme valeur. Vous pouvez également ajouter des entrées pour un nom de base de données, une adresse de serveur ou un port TCP. Vous pouvez ajouter autant de paires que nécessaire pour stocker les informations dont vous avez besoin.

   Vous pouvez également choisir l'onglet **Plaintext** (Texte brut) et saisir la valeur du secret comme vous le souhaitez.

1. Choisissez la clé de AWS KMS chiffrement que vous souhaitez utiliser pour chiffrer le texte protégé dans le secret. Si vous ne choisissez aucune clé, Secrets Manager vérifie s'il existe une clé par défaut pour le compte et l'utilise si c'est le cas. S'il n'existe aucune clé par défaut, Secrets Manager en crée une automatiquement. Vous pouvez également choisir **Add new key (Ajouter une clé)** pour créer une clé KMS personnalisée spécifiquement pour ce secret. Pour créer votre propre clé KMS, vous devez être autorisé à créer des clés KMS dans votre compte.

1. Choisissez **Suivant**.

1. Pour **Secret name** (Nom du secret), saisissez un chemin facultatif et un nom, comme **production/MyAwesomeAppSecret** ou **development/TestSecret**, puis choisissez **Next** (Suivant). Vous pouvez éventuellement ajouter une description pour vous aider à vous souvenir de la finalité de ce secret ultérieurement.

   Le nom du secret doit contenir uniquement des lettres ASCII, des chiffres ou les caractères suivants : /\$1\$1=.@-

1. (Facultatif) À ce stade, vous pouvez configurer la rotation de votre secret. Pour cette procédure, gardez l'option **Disable automatic rotation** (Désactiver la rotation automatique) et choisissez **Next** (Suivant).

   Pour plus d'informations sur la façon de configurer la rotation sur des secrets nouveaux ou existants, voir [Rotation de vos AWS Secrets Manager secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

1. Vérifiez vos paramètres, puis choisissez **Store secret** (Stocker le secret) pour enregistrer tous les éléments que vous avez saisis en tant que nouveau secret dans Secrets Manager.

# Spécifiez les données sensibles avec Systems Manager Parameter Store
<a name="specifying-sensitive-data-parameters"></a>

Vous pouvez ainsi injecter des données sensibles dans vos conteneurs en les stockant dans les paramètres du AWS Systems Manager Parameter Store, puis en les référençant dans la définition de votre conteneur. AWS Batch

**Topics**
+ [Considérations à prendre en compte lors de la spécification de données sensibles à l'aide du magasin de paramètres de Systems Manager](#secrets--parameterstore-considerations)
+ [Autorisations IAM requises pour les secrets AWS Batch](#secrets-iam-parameters)
+ [Injectez des données sensibles en tant que variable d'environnement](#secrets-envvar-parameters)
+ [Injecter des données sensibles dans une configuration de journal](#secrets-logconfig-parameters)
+ [Création d'un AWS Systems Manager paramètre Parameter Store](#secrets-create-parameter)

## Considérations à prendre en compte lors de la spécification de données sensibles à l'aide du magasin de paramètres de Systems Manager
<a name="secrets--parameterstore-considerations"></a>

Les éléments suivants doivent être pris en compte lors de la spécification de données sensibles pour les conteneurs à l'aide des paramètres Systems Manager Parameter Store.
+ Cette fonctionnalité nécessite que votre instance de conteneur dispose de la version 1.23.0 ou ultérieure de l'agent de conteneur. Toutefois, nous vous recommandons d'utiliser la dernière version de l'agent de conteneur. Pour plus d'informations sur la vérification de la version de votre agent et la mise à jour vers la dernière version, consultez la section [Mise à jour de l'agent de conteneur Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.
+ Les données sensibles sont injectées dans le conteneur pour votre tâche lors du démarrage initial du conteneur. Si le paramètre secret ou Parameter Store est ensuite mis à jour ou fait l'objet d'une rotation, le conteneur ne reçoit pas la valeur mise à jour automatiquement. Vous devez lancer une nouvelle tâche pour forcer le lancement d'une nouvelle tâche avec des secrets mis à jour.

## Autorisations IAM requises pour les secrets AWS Batch
<a name="secrets-iam-parameters"></a>

Pour utiliser cette fonctionnalité, vous devez disposer du rôle d'exécution et le référencer dans votre définition de tâche. Cela permet à l'agent de conteneur Amazon ECS d'extraire les AWS Systems Manager ressources nécessaires. Pour de plus amples informations, veuillez consulter [AWS Batch Rôle d'exécution IAM](execution-IAM-role.md).

Pour donner accès aux AWS Systems Manager paramètres du magasin de paramètres que vous créez, ajoutez manuellement les autorisations suivantes en tant que politique intégrée au rôle d'exécution. Pour obtenir des informations, consultez la section [Ajout et suppression de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) dans le *Guide de l’utilisateur IAM*.
+ `ssm:GetParameters` : obligatoire lorsque vous référencez un paramètre Systems Manager Parameter Store dans une définition de tâche.
+ `secretsmanager:GetSecretValue` : obligatoire si vous référencez directement un secret Secrets Manager ou si votre paramètre Systems Manager Parameter Store référence un secret Secrets Manager dans une définition de tâche.
+ `kms:Decrypt`  : obligatoire uniquement si votre secret utilise une clé KMS personnalisée et non la clé par défaut. L'ARN de votre clé personnalisée doit être ajouté en tant que ressource.

L'exemple suivant de politique en ligne ajoute les autorisations requises :

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameters",
                "secretsmanager:GetSecretValue",
                "kms:Decrypt"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-2:999999999999:parameter/<parameter_name>",
                "arn:aws:secretsmanager:us-east-2:999999999999:secret:<secret_name>",
                "arn:aws:kms:us-east-2:999999999999:key/<key_id>"
            ]
        }
    ]
}
```

------

## Injectez des données sensibles en tant que variable d'environnement
<a name="secrets-envvar-parameters"></a>

Dans votre définition de conteneur, spécifiez `secrets` avec le nom de la variable d'environnement à définir dans le conteneur et l'ARN complet du paramètre Systems Manager Parameter Store contenant les données sensibles à présenter au conteneur.

Ce qui suit est un extrait d'une définition de tâche indiquant le format lors du référencement d'un paramètre du magasin de paramètres de Systems Manager. Si le paramètre Systems Manager Parameter Store existe dans la même région que la tâche que vous lancez, vous pouvez utiliser l'ARN complet ou le nom du paramètre. Si le paramètre existe dans une autre région, l'ARN complet doit être spécifié.

```
{
  "containerProperties": [{
    "secrets": [{
      "name": "environment_variable_name",
      "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
    }]
  }]
}
```

## Injecter des données sensibles dans une configuration de journal
<a name="secrets-logconfig-parameters"></a>

Dans votre définition de conteneur, lorsque vous spécifiez `logConfiguration`, vous pouvez spécifier `secretOptions` avec le nom de l'option du pilote de journal à définir dans le conteneur et l'ARN complet du paramètre Systems Manager Parameter Store contenant les données sensibles à présenter au conteneur.

**Important**  
Si le paramètre Systems Manager Parameter Store existe dans la même région que la tâche que vous lancez, vous pouvez utiliser l'ARN complet ou le nom du paramètre. Si le paramètre existe dans une autre région, l'ARN complet doit être spécifié.

Ce qui suit est un extrait d'une définition de tâche indiquant le format lors du référencement d'un paramètre du magasin de paramètres de Systems Manager.

```
{
  "containerProperties": [{
    "logConfiguration": [{
      "logDriver": "fluentd",
      "options": {
        "tag": "fluentd demo"
      },
      "secretOptions": [{
        "name": "fluentd-address",
        "valueFrom": "arn:aws:ssm:region:aws_account_id:parameter/parameter_name"
      }]
    }]
  }]
}
```

## Création d'un AWS Systems Manager paramètre Parameter Store
<a name="secrets-create-parameter"></a>

Vous pouvez utiliser la AWS Systems Manager console pour créer un paramètre de magasin de paramètres de Systems Manager pour vos données sensibles. Pour plus d'informations, veuillez consulter la rubrique [Procédure : Créer et utiliser un paramètre dans une commande (console)](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-console.html) dans le *Guide de l'utilisateur AWS Systems Manager *.

**Pour créer un paramètre Parameter Store**

1. Ouvrez la AWS Systems Manager console à l'adresse [https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/).

1. Dans le panneau de navigation, choisissez **Parameter Store**, **Create Parameter** (Créer un paramètre).

1. Dans le champ **Name** (Nom), saisissez une hiérarchie et un nom de paramètre. Par exemple, saisissez `test/database_password`.

1. Pour **Description**, saisissez une description facultative.

1. Pour **Type**, choisissez **String **StringList****, ou **SecureString**.
**Note**  
Si vous le souhaitez **SecureString**, le champ **KMS Key ID** apparaît. Si vous ne fournissez pas d'ID de clé KMS, un ARN de clé KMS, un nom d'alias ou un ARN d'alias, le système utilise `alias/aws/ssm`. Il s'agit de la clé KMS par défaut de Systems Manager. Pour éviter d'utiliser cette clé, choisissez une clé personnalisée. Pour plus d'informations, veuillez consulter la rubrique [Utilisation de paramètres de chaîne sécurisée](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-about.html) dans le *Guide de l'utilisateur AWS Systems Manager *.
Lorsque vous créez un paramètre de chaîne sécurisée dans la console à l'aide du paramètre `key-id` avec un nom d'alias de clé KMS personnalisée ou un ARN d'alias, vous devez spécifier le préfixe `alias/` avant l'alias. Voici un exemple d'ARN :  

     ```
     arn:aws:kms:us-east-2:123456789012:alias/MyAliasName
     ```
Voici un exemple de nom d'alias :  

     ```
     alias/MyAliasName
     ```

1. Pour **Value** (Valeur), tapez une valeur. Par exemple, `MyFirstParameter`. Si vous le souhaitez **SecureString**, la valeur est masquée exactement telle que vous l'avez saisie.

1. Sélectionnez **Create parameter** (Créer un paramètre).

# Authentification par registre privé pour les tâches
<a name="private-registry"></a>

L'authentification du registre privé pour les tâches utilisées vous AWS Secrets Manager permet de stocker vos informations d'identification en toute sécurité, puis de les référencer dans votre définition de tâche. Cela permet de référencer des images de conteneurs qui existent dans des registres privés en dehors de ceux AWS qui nécessitent une authentification dans vos définitions de tâches. Cette fonctionnalité est prise en charge par les jobs hébergés sur les instances Amazon EC2 et Fargate.

**Important**  
Si votre définition de tâche fait référence à une image stockée dans Amazon ECR, cette rubrique ne s'applique pas. Pour plus d'informations, consultez [Utilisation d'images Amazon ECR avec Amazon ECS](https://docs.aws.amazon.com/AmazonECR/latest/userguide/ECR_on_ECS.html) dans le *Guide de l'utilisateur Amazon Elastic Container Registry*.

Pour les tâches hébergées sur des instances Amazon EC2, cette fonctionnalité nécessite une version `1.19.0` ou une version ultérieure de l'agent de conteneur. Nous recommandons toutefois d'utiliser la dernière version de l'agent de conteneur. Pour plus d'informations sur la façon de vérifier la version de votre agent et de passer à la dernière version, consultez la section [Mise à jour de l'agent de conteneur Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-update.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.

Pour les jobs hébergés sur Fargate, cette fonctionnalité nécessite une version de plateforme `1.2.0` ou une version ultérieure. Pour plus d'informations, consultez les [AWS versions de la plateforme Fargate Linux](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform-linux-fargate.html) dans le guide du développeur *Amazon Elastic Container Service*.

Dans votre définition du conteneur, spécifiez l'objet `repositoryCredentials` avec les détails du secret que vous avez créé. Le secret auquel vous faites référence peut provenir d'un compte différent Région AWS ou différent de celui de la tâche qui l'utilise.

**Note**  
Lorsque vous utilisez l' AWS Batch API AWS CLI, ou AWS SDK, si le secret existe dans la même tâche Région AWS que la tâche que vous lancez, vous pouvez utiliser l'ARN complet ou le nom du secret. Si le secret existe dans un autre compte, l'ARN complet du secret doit être spécifié. Lorsque vous utilisez le AWS Management Console, l'ARN complet du secret doit toujours être spécifié.

Voici un extrait de définition de tâche qui indique les paramètres requis :

```
"containerProperties": [
  {
    "image": "private-repo/private-image",
    "repositoryCredentials": {
      "credentialsParameter": "arn:aws:secretsmanager:region:123456789012:secret:secret_name"
    }
  }
]
```

# Autorisations IAM requises pour l'authentification de registre privé
<a name="private-auth-iam"></a>

Le rôle d'exécution est requis pour utiliser cette fonctionnalité. Cela permet à l'agent de conteneur d'extraire l'image de conteneur. Pour de plus amples informations, veuillez consulter [AWS Batch Rôle d'exécution IAM](execution-IAM-role.md).

Pour donner accès aux secrets que vous créez, ajoutez les autorisations suivantes en tant que politique intégrée au rôle d'exécution. Pour plus d'informations, consultez [Ajout et suppression de politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html).
+ `secretsmanager:GetSecretValue`
+ `kms:Decrypt` : requis uniquement si votre clé utilise une clé KMS personnalisée et non la clé par défaut. L'Amazon Resource Name (ARN) de votre clé personnalisée doit être ajouté en tant que ressource.

Voici un exemple de stratégie en ligne qui ajoute les autorisations.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "kms:Decrypt",
                "secretsmanager:GetSecretValue"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:123456789012:secret:secret_name",
                "arn:aws:kms:us-east-1:123456789012:key/key_id"
            ]
        }
    ]
}
```

------

# Tutoriel : Création d'un secret pour l'authentification du registre privé
<a name="private-auth-enable"></a>

Procédez comme suit pour créer un secret pour vos identifiants de registre privés avec AWS Secrets Manager.

**Créez un secret de base**

1. Ouvrez la AWS Secrets Manager console à l'adresse [https://console.aws.amazon.com/secretsmanager/](https://console.aws.amazon.com/secretsmanager/).

1. Choisissez **Store a new secret** (Stocker un nouveau secret).

1. Pour **Select secret type** (Sélectionner un type de secret), choisissez **Other type of secrets** (Autre type de secrets).

1. Sélectionner **Plaintext** (Texte brut) et saisissez vos informations d'identification de registre privé au format suivant :

   ```
   {
     "username" : "privateRegistryUsername",
     "password" : "privateRegistryPassword"
   }
   ```

1. Choisissez **Suivant**.

1. Pour **Secret name** (Nom du secret), saisissez un chemin facultatif et un nom, comme **production/MyAwesomeAppSecret** ou **development/TestSecret**, puis choisissez **Next** (Suivant). Vous pouvez éventuellement ajouter une description pour vous aider à vous souvenir de la finalité de ce secret ultérieurement.

   Le nom du secret doit contenir uniquement des lettres ASCII, des chiffres ou les caractères suivants : `/_+=.@-`.

1. (Facultatif) À ce stade, vous pouvez configurer la rotation de votre secret. Pour cette procédure, gardez l'option **Disable automatic rotation** (Désactiver la rotation automatique) et choisissez **Next** (Suivant).

   Pour savoir comment configurer la rotation sur des secrets nouveaux ou existants, voir [Rotation de vos AWS Secrets Manager secrets](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotating-secrets.html).

1. Vérifiez vos paramètres, puis choisissez **Store secret** (Stocker le secret) pour enregistrer tous les éléments que vous avez saisis en tant que nouveau secret dans Secrets Manager.

Enregistrez une définition de tâche et, sous **Registre privé**, activez l'**authentification du registre privé**. Ensuite, dans **ARN ou nom Secrets Manager**, saisissez l'Amazon Resource Name (ARN) du secret. Pour de plus amples informations, veuillez consulter [Autorisations IAM requises pour l'authentification de registre privé](private-auth-iam.md).

# Volumes Amazon EFS
<a name="efs-volumes"></a>

Amazon Elastic File System (Amazon EFS) fournit un stockage de fichiers simple et évolutif à utiliser dans le cadre de vos AWS Batch tâches. Avec Amazon EFS, la capacité de stockage est élastique. Il s'adapte automatiquement au fur et à mesure que vous ajoutez et supprimez des fichiers. Vos applications peuvent disposer de l'espace de stockage qui leur est nécessaire, au moment où elles en ont besoin.

Vous pouvez utiliser les systèmes de fichiers Amazon EFS AWS Batch pour exporter les données des systèmes de fichiers sur votre flotte d'instances de conteneurs. Ainsi, vos tâches ont accès au même espace de stockage permanent. En revanche, vous devez configurer votre AMI de l'instance de conteneur pour monter le système de fichiers Amazon EFS avant le démarrage du démon Docker. En outre, vos définitions de tâches doivent faire référence à des montages de volumes sur l'instance de conteneur pour utiliser le système de fichiers. Les sections suivantes vous aident à commencer à utiliser Amazon EFS avec AWS Batch.

## Considérations relatives aux volumes Amazon EFS
<a name="efs-volume-considerations"></a>

Les informations suivantes doivent être prises en compte lors de l'utilisation de volumes Amazon EFS :
+ Pour les tâches utilisant EC2 des ressources, la prise en charge du système de fichiers Amazon EFS a été ajoutée en version préliminaire publique avec la version AMI optimisée pour Amazon ECS `20191212` avec la version 1.35.0 de l'agent de conteneur. Cependant, le support du système de fichiers Amazon EFS est entré en disponibilité générale avec la version AMI optimisée pour Amazon ECS `20200319` avec la version 1.38.0 de l'agent de conteneur, qui contenait le point d'accès Amazon EFS et les fonctionnalités d'autorisation IAM. Nous vous recommandons d'utiliser la version optimisée de l'AMI Amazon ECS `20200319` ou une version ultérieure pour tirer parti de ces fonctionnalités. Pour plus d'informations, consultez les [versions d'AMI optimisées pour Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-ami-versions.html) dans le manuel *Amazon Elastic Container Service Developer Guide*.
**Note**  
Si vous créez votre propre AMI, vous devez utiliser l'agent de conteneur 1.38.0 ou version ultérieure, `ecs-init` version 1.38.0-1 ou ultérieure, et exécuter les commandes suivantes sur votre instance Amazon. EC2 Tout cela est destiné à activer le plug-in de volume Amazon ECS. Les commandes varient selon que vous utilisez Amazon Linux 2 ou Amazon Linux comme image de base.  

Amazon Linux 2  

  ```
  $ yum install amazon-efs-utils
  systemctl enable --now amazon-ecs-volume-plugin
  ```

Amazon Linux  

  ```
  $ yum install amazon-efs-utils
  sudo shutdown -r now
  ```
+ Pour les tâches utilisant les ressources Fargate, la prise en charge du système de fichiers Amazon EFS a été ajoutée lors de l'utilisation de la version 1.4.0 ou ultérieure de la plateforme. Pour plus d'informations, consultez les versions AWS de la [plateforme Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/platform_versions.html) dans le guide du développeur *Amazon Elastic Container Service*.
+ Lorsque vous spécifiez des volumes Amazon EFS dans des tâches utilisant des ressources Fargate, Fargate crée un conteneur de supervision chargé de gérer le volume Amazon EFS. Le conteneur du superviseur utilise une petite partie de la mémoire de la tâche. Le conteneur de supervision est visible lors de l'interrogation du point de terminaison de métadonnées de tâche version 4. Pour de plus amples informations, veuillez consulter [Point de terminaison des métadonnées de tâches version 4](https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-metadata-endpoint-v4-fargate.html) dans le *Guide de l'utilisateur Amazon Elastic Container Service pour AWS Fargate*.

## Utiliser les points d'accès Amazon EFS
<a name="efs-volume-accesspoints"></a>

Les points d'accès Amazon EFS sont des points d'entrée spécifiques à une application dans un système de fichiers EFS qui vous aident à gérer l'accès des applications aux ensembles de données partagés. Pour de plus amples informations sur les points d'accès Amazon EFS et sur la façon de les contrôler, veuillez consulter [Utilisation des points d'accès Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.

Les points d’accès peuvent appliquer de manière forcée une identité d’utilisateur, y compris les groupes POSIX de l’utilisateur, pour toutes les demandes de système de fichiers effectuées via le point d’accès. Les points d’accès peuvent également appliquer de manière forcée un répertoire racine différent pour le système de fichiers afin que les clients puissent uniquement accéder aux données stockées dans le répertoire spécifié ou dans les sous-répertoires.

**Note**  
Lors de la création d'un point d'accès EFS, vous spécifiez un chemin d'accès sur le système de fichiers qui servira de répertoire racine. Lorsque vous référencez le système de fichiers EFS avec un ID de point d'accès dans votre définition de AWS Batch tâche, le répertoire racine doit être omis ou défini sur `/` Cela applique le chemin défini sur le point d'accès EFS.

Vous pouvez utiliser un rôle IAM de AWS Batch travail pour garantir que des applications spécifiques utilisent un point d'accès spécifique. En combinant des politiques IAM avec des points d’accès, vous pouvez facilement fournir un accès sécurisé à des ensembles de données spécifiques pour vos applications. Cette fonctionnalité utilise les rôles IAM d'Amazon ECS pour la fonctionnalité des tâches. Pour plus d'informations, consultez [Rôles IAM pour les tâches](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html) dans le *Guide du développeur Amazon Elastic Container Service*.

## Spécifiez un système de fichiers Amazon EFS dans votre définition de tâche
<a name="specify-efs-config"></a>

Pour utiliser les volumes du système de fichiers Amazon EFS pour vos conteneurs, vous devez spécifier les configurations de volume et de point de montage dans votre définition de tâche. L'extrait de code JSON de définition de tâche suivant montre la syntaxe des `mountPoints` objets `volumes` et d'un conteneur :

```
{
    "containerProperties": [
        {
            "image": "amazonlinux:2",
            "command": [
                "ls",
                "-la",
                "/mount/efs"
            ],
            "mountPoints": [
                {
                    "sourceVolume": "myEfsVolume",
                    "containerPath": "/mount/efs",
                    "readOnly": true
                }
            ],
            "volumes": [
                {
                    "name": "myEfsVolume",
                    "efsVolumeConfiguration": {
                        "fileSystemId": "fs-12345678",
                        "rootDirectory": "/path/to/my/data",
                        "transitEncryption": "ENABLED",
                        "transitEncryptionPort": integer,
                        "authorizationConfig": {
                            "accessPointId": "fsap-1234567890abcdef1",
                            "iam": "ENABLED"
                        }
                    }
                }
            ]
        }
    ]
}
```

`efsVolumeConfiguration`  
Type : objet  
Obligatoire : non  
Ce paramètre est spécifié lorsque vous utilisez des volumes Amazon EFS.    
`fileSystemId`  
Type : String  
Obligatoire : oui  
ID du système de fichiers Amazon EFS à utiliser.  
`rootDirectory`  
Type : chaîne  
Obligatoire : non  
Répertoire du système de fichiers Amazon EFS à monter en tant que répertoire racine à l'intérieur de l'hôte. Si ce paramètre est omis, la racine du volume Amazon EFS est utilisée. La spécification de `/` a le même effet que l'omission de ce paramètre. Il peut comporter jusqu'à 4 096 caractères.  
Si un point d'accès EFS est spécifié dans le`authorizationConfig`, le paramètre du répertoire racine doit être omis ou défini sur. `/` Cela applique le chemin défini sur le point d'accès EFS.  
`transitEncryption`  
Type : String  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
Détermine s'il faut activer le chiffrement pour les données Amazon EFS en transit entre l' AWS Batch hôte et le serveur Amazon EFS. Le chiffrement en transit doit être activé si l'autorisation Amazon EFS IAM est utilisée. Si ce paramètre est omis, la valeur par défaut `DISABLED` est utilisée. Pour plus d'informations, consultez [Chiffrement des données en transit](https://docs.aws.amazon.com/efs/latest/ug/encryption-in-transit.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.  
`transitEncryptionPort`  
Type : entier  
Obligatoire : non  
Port à utiliser lors de l'envoi de données chiffrées entre l' AWS Batch hôte et le serveur Amazon EFS. Si vous ne spécifiez pas de port de chiffrement en transit, il utilise la stratégie de sélection de port adoptée par l'assistant de montage Amazon EFS. La valeur doit être comprise entre 0 et 65 535. Pour plus d'informations, consultez [Assistant de montage EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-mount-helper.html) dans le *Guide de l'utilisateur Amazon Elastic File System User*.  
`authorizationConfig`  
Type : objet  
Obligatoire : non  
Détails de configuration des autorisations pour le système de fichiers Amazon EFS.    
`accessPointId`  
Type : chaîne  
Obligatoire : non  
ID du point d'accès à utiliser. Si un point d'accès est spécifié, la valeur du répertoire racine `efsVolumeConfiguration` doit être omise ou définie sur. `/` Cela applique le chemin défini sur le point d'accès EFS. Si un point d'accès est utilisé, le chiffrement de transit doit être activé dans `EFSVolumeConfiguration`. Pour plus d'informations, consultez [Utilisation des points d'accès Amazon EFS](https://docs.aws.amazon.com/efs/latest/ug/efs-access-points.html) dans le *Guide de l'utilisateur Amazon Elastic File System*.  
`iam`  
Type : String  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
Détermine s'il faut utiliser le rôle IAM de AWS Batch tâche défini dans une définition de tâche lors du montage du système de fichiers Amazon EFS. Si cette option est activée, le chiffrement en transit doit être activé dans la configuration `EFSVolumeConfiguration`. Si ce paramètre est omis, la valeur par défaut `DISABLED` est utilisée. Pour plus d'informations sur le rôle d'exécution IAM, consultez[AWS Batch Rôle d'exécution IAM](execution-IAM-role.md).

# Exemples de définitions de tâches
<a name="example-job-definitions"></a>

Les exemples de définition de tâches présentés dans les rubriques suivantes montrent comment utiliser des modèles courants tels que les variables d'environnement, la substitution de paramètres et les montages de volume.

**Topics**
+ [Variables d'environnement](example-use-envvars.md)
+ [Substitution de paramètres](example-use-parameters.md)
+ [Tester les fonctionnalités du GPU](example-test-gpu.md)
+ [Tâche parallèle sur plusieurs nœuds](example-mnp-job-definition.md)

# Variables d'environnement
<a name="example-use-envvars"></a>

L'exemple de définition de tâche suivant utilise des variables d'environnement pour spécifier un type de fichier et une URL Amazon S3. Cet exemple particulier est tiré du billet de blog [Creating a Simple « Fetch & Run » AWS Batch Job](https://aws.amazon.com/blogs/compute/creating-a-simple-fetch-and-run-aws-batch-job/) compute. Le [https://github.com/awslabs/aws-batch-helpers/blob/master/fetch-and-run/fetch_and_run.sh](https://github.com/awslabs/aws-batch-helpers/blob/master/fetch-and-run/fetch_and_run.sh)script décrit dans le billet de blog utilise ces variables d'environnement pour télécharger le `myjob.sh` script depuis S3 et déclarer son type de fichier.

Même si les variables de commande et d'environnement sont codées en dur dans la définition de tâche dans cet exemple, vous pouvez spécifier des remplacements de commande et de variable d'environnement pour rendre la définition de tâche plus polyvalente.

```
{
    "jobDefinitionName": "fetch_and_run",
    "type": "container",
    "containerProperties": {
        "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/fetch_and_run",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "2000"
            },
            {
                "type": "VCPU",
                "value": "2"
            }
        ],
        "command": [
            "myjob.sh",
            "60"
        ],
        "jobRoleArn": "arn:aws:iam::123456789012:role/AWSBatchS3ReadOnly",
        "environment": [
            {
                "name": "BATCH_FILE_S3_URL",
                "value": "s3://amzn-s3-demo-source-bucket/myjob.sh"
            },
            {
                "name": "BATCH_FILE_TYPE",
                "value": "script"
            }
        ],
        "user": "nobody"
    }
}
```

# Substitution de paramètres
<a name="example-use-parameters"></a>

L'exemple de définition de tâche suivant illustre l'utilisation de la substitution de paramètres et la définition de valeurs par défaut.

Les déclarations `Ref::` de la section `command` sont utilisées afin de définir des espaces réservés pour la substitution de paramètres. Lorsque vous soumettez une tâche avec cette définition de tâche, vous spécifiez les paramètres de remplacement pour renseigner ces valeurs, par exemple `inputfile` et `outputfile`. La `parameters` section qui suit définit une valeur par défaut pour`codec`, mais vous pouvez remplacer ce paramètre si nécessaire.

Pour de plus amples informations, veuillez consulter [Paramètres](job_definition_parameters.md#parameters).

```
{
    "jobDefinitionName": "ffmpeg_parameters",
    "type": "container",
    "parameters": {"codec": "mp4"},
    "containerProperties": {
        "image": "my_repo/ffmpeg",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "2000"
            },
            {
                "type": "VCPU",
                "value": "2"
            }
        ],
        "command": [
            "ffmpeg",
            "-i",
            "Ref::inputfile",
            "-c",
            "Ref::codec",
            "-o",
            "Ref::outputfile"
        ],
        "jobRoleArn": "arn:aws:iam::123456789012:role/ECSTask-S3FullAccess",
        "user": "nobody"
    }
}
```

# Tester les fonctionnalités du GPU
<a name="example-test-gpu"></a>

L'exemple suivant de définition de tâche vérifie si l'AMI de la charge de travail GPU décrit dans [Utiliser une AMI de charge de travail du GPU](batch-gpu-ami.md) est configurée correctement. Cet exemple de définition de tâche exécute l'[exemple](https://github.com/tensorflow/tensorflow/blob/r1.8/tensorflow/examples/tutorials/mnist/mnist_deep.py) de classificateur MNIST TensorFlow approfondi de. GitHub

```
{
    "containerProperties": {
        "image": "tensorflow/tensorflow:1.8.0-devel-gpu",
        "resourceRequirements": [
            {
                "type": "MEMORY",
                "value": "32000"
            },
            {
                "type": "VCPU",
                "value": "8"
            }
        ],
        "command": [
            "sh",
            "-c",
            "cd /tensorflow/tensorflow/examples/tutorials/mnist; python mnist_deep.py"
        ]
    },
    "type": "container",
    "jobDefinitionName": "tensorflow_mnist_deep"
}
```

Vous pouvez créer un fichier avec le texte JSON précédent appelé, `tensorflow_mnist_deep.json` puis enregistrer une définition de AWS Batch tâche à l'aide de la commande suivante :

```
aws batch register-job-definition --cli-input-json file://tensorflow_mnist_deep.json
```

# Tâche parallèle sur plusieurs nœuds
<a name="example-mnp-job-definition"></a>

L'exemple de définition de tâche suivant illustre une tâche parallèle à plusieurs nœuds. Pour plus d'informations, consultez la section [Création d'un flux de travail de dynamique moléculaire étroitement couplé avec des tâches parallèles à nœuds multiples AWS Batch dans](https://aws.amazon.com/blogs/compute/building-a-tightly-coupled-molecular-dynamics-workflow-with-multi-node-parallel-jobs-in-aws-batch/) le blog *AWS Compute*.

```
{
  "jobDefinitionName": "gromacs-jobdef",
  "jobDefinitionArn": "arn:aws:batch:us-east-2:123456789012:job-definition/gromacs-jobdef:1",
  "revision": 6,
  "status": "ACTIVE",
  "type": "multinode",
  "parameters": {},
  "nodeProperties": {
    "numNodes": 2,
    "mainNode": 0,
    "nodeRangeProperties": [
      {
        "targetNodes": "0:1",
        "container": {
          "image": "123456789012.dkr.ecr.us-east-2.amazonaws.com/gromacs_mpi:latest",
          "resourceRequirements": [
              {
                  "type": "MEMORY",
                  "value": "24000"
              },
              {
                  "type": "VCPU",
                  "value": "8"
              }
          ],
          "command": [],
          "jobRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
          "ulimits": [],
          "instanceType": "p3.2xlarge"
        }
      }
    ]
  }
}
```