

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éploiement de services Amazon ECS à l’aide d’un contrôleur tiers
<a name="deployment-type-external"></a>

Le type de déploiement *externe* vous permet d'utiliser n'importe quel contrôleur de déploiement tiers pour un contrôle complet du processus de déploiement pour un service Amazon ECS service. Les détails pour votre service sont gérés par les actions d'API de gestion de service (`CreateService`, `UpdateService` et `DeleteService`) ou par les actions d'API de gestion des tâches définies (`CreateTaskSet`, `UpdateTaskSet`, `UpdateServicePrimaryTaskSet` et `DeleteTaskSet`). Chaque action d'API gère un sous-ensemble de paramètres de définition de service.

L'action d'API `UpdateService` met à jour le nombre souhaité et les paramètres de période de délai supplémentaire des surveillances de l'état pour un service. Si l’option de calcul, la version de plateforme, les détails de l’équilibreur de charge, la configuration réseau ou la définition de tâche doivent être mis à jour, vous devez créer un jeu de tâches.

L'action d'API `UpdateTaskSet` met à jour uniquement le paramètre d'échelle pour un ensemble de tâches.

L'action d'API `UpdateServicePrimaryTaskSet` modifie l'ensemble de tâches dans un service qui est l'ensemble de tâches principal. Lorsque vous appelez l'action d'API `DescribeServices`, elle renvoie tous les champs spécifiés pour un ensemble de tâches principal. Si l'ensemble de tâches principal d'un service est mis à jour, toutes les valeurs de paramètres de l'ensemble de tâches qui existe sur l'ensemble de tâches principal différent de l'ancienne tâche principale dans un service sont mises à jour vers la nouvelle valeur lorsqu'un ensemble de tâches principal est défini. Si aucun ensemble de tâches principale n'est défini pour un service, les champs de l'ensemble de tâches sont vides pour la description de service.

## Considérations relatives au déploiement externe
<a name="deployment-type-external-considerations"></a>

Tenez compte des éléments suivants lorsque vous utilisez le type de déploiement externe :
+ Les types d'équilibreur de charge pris en charge sont un Application Load Balancer ou un Network Load Balancer.
+ Les types de contrôleurs de déploiement Fargate ou `EXTERNAL` ne prennent pas en charge la stratégie de planification `DAEMON`.
+ L' AutoScaling intégration des applications avec Amazon ECS prend uniquement en charge le service Amazon ECS en tant que cible. La dimension de capacité de mise à l’échelle prise en charge pour Amazon ECS est `ecs:service:DesiredCount`, soit le nombre de tâches d’un service Amazon ECS. Il n'existe aucune intégration directe entre l'application AutoScaling et les ensembles de tâches Amazon ECS. Les jeux de tâches Amazon ECS calculent le `ComputedDesiredCount` en fonction du `DesiredCount` du service Amazon ECS.

## Workflow de déploiement externe
<a name="deployment-type-external-workflow"></a>

Voici le flux de travail de base pour la gestion d’un déploiement externe sur Amazon ECS.

**Pour gérer un service Amazon ECS service à l'aide d'un contrôleur de déploiement externe**

1. Créez un service Amazon ECS service. Le seul paramètre requis est le nom de service. Vous pouvez spécifier les paramètres suivants lors de la création d'un service à l'aide d'un contrôleur de déploiement externe. Tous les autres paramètres de service sont spécifiés lors de la création d'un ensemble de tâches dans le service.  
`serviceName`  
Type : Chaîne  
Obligatoire : oui  
Nom de votre service. Jusqu'à 255 lettres (majuscules et minuscules), chiffres, traits d'union et traits de soulignement sont autorisés. Dans un cluster, les noms de service doivent être uniques, mais certains services peuvent avoir des noms similaires dans des clusters différents d'une même région ou de plusieurs régions.  
`desiredCount`  
Le nombre d'instances sur la définition de tâche d'ensemble de tâches spécifié à placer et à continuer d'exécuter au sein du service.  
`deploymentConfiguration`  
Paramètres de déploiement facultatifs qui contrôlent le nombre de tâches exécutées durant le déploiement et la commande d'arrêt et de démarrage des tâches.   
`tags`  
Type : tableau d'objets  
Obligatoire : non  
Métadonnées que vous appliquez au service pour faciliter le classement et l'organisation. Chaque étiquette est constituée d'une clé et d'une valeur facultative que vous définissez. Lorsqu'un service est supprimé, les étiquettes sont également supprimées. Un maximum de 50 balises peut être appliqué au service. Pour de plus amples informations, veuillez consulter [Balisage des ressources Amazon ECS](ecs-using-tags.md).  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.    
`key`  
Type : Chaîne  
Contraintes de longueur : Longueur minimum de 1. Longueur maximale de 128.  
Obligatoire : non  
Partie d'une paire clé-valeur qui constitue une étiquette. Une clé est une étiquette générale qui fait office de catégorie pour les valeurs d'étiquette plus spécifiques.  
`value`  
Type : Chaîne  
Contraintes de longueur : Longueur minimum de 0. Longueur maximale de 256.  
Obligatoire : non  
Partie facultative d'une paire clé-valeur qui constitue une étiquette. Une valeur agit comme un descripteur au sein d'une catégorie d'étiquette (clé).  
`enableECSManagedTags`  
Spécifie si utiliser les identifications gérées par Amazon ECS pour les tâches dans le service. Pour de plus amples informations, veuillez consulter [Mise à jour des balises pour la facturation](ecs-using-tags.md#tag-resources-for-billing).  
`propagateTags`  
Type : Chaîne  
Valeurs valides : `TASK_DEFINITION` \$1 `SERVICE`  
Obligatoire : non  
Indique s'il faut copier les étiquettes de la définition de tâche ou du service dans les tâches du service. Si aucune valeur n'est spécifiée, les étiquettes ne sont pas copiées. Les étiquettes ne peuvent être copiées dans les tâches du service que lors de la création du service. Pour ajouter des balises à une tâche après la création du service ou de la tâche, utilisez l'action d'API `TagResource`.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.  
`schedulingStrategy`  
Stratégie de planification à utiliser. Les services utilisant un contrôleur de déploiement externe prennent uniquement en charge la stratégie de planification `REPLICA`.  
`placementConstraints`  
Tableau d'objets de contraintes de placement à utiliser pour les tâches de votre service. Vous pouvez spécifier un maximum de 10 contraintes par tâche (cette limite comprend les contraintes de la définition de tâche et celles spécifiées lors de l'exécution). Si vous utilisez Fargate, les contraintes de placement des tâches ne sont pas prises en charge.  
`placementStrategy`  
Objets de stratégie de placement à utiliser pour les tâches de votre service. Vous pouvez spécifier jusqu'à quatre règles de stratégie par service.

   Voici un exemple de définition de service pour la création d'un service qui utilise un contrôleur de déploiement externe.

   ```
   {
       "cluster": "",
       "serviceName": "",
       "desiredCount": 0,
       "role": "",
       "deploymentConfiguration": {
           "maximumPercent": 0,
           "minimumHealthyPercent": 0
       },
       "placementConstraints": [
           {
               "type": "distinctInstance",
               "expression": ""
           }
       ],
       "placementStrategy": [
           {
               "type": "binpack",
               "field": ""
           }
       ],
       "schedulingStrategy": "REPLICA",
       "deploymentController": {
           "type": "EXTERNAL"
       },
       "tags": [
           {
               "key": "",
               "value": ""
           }
       ],
       "enableECSManagedTags": true,
       "propagateTags": "TASK_DEFINITION"
   }
   ```

1. Créez un ensemble de tâches initial. L'ensemble de tâches contient les détails suivants pour votre service :  
`taskDefinition`  
La définition de tâche pour les tâches dans l'ensemble de tâches à utiliser.  
`launchType`  
Type : Chaîne  
Valeurs valides : `EC2` \$1 `FARGATE` \$1 `EXTERNAL`  
Obligatoire : non  
Type de lancement sur lequel vous pouvez exécuter votre service. Si aucun type de lancement n'est spécifié, the `capacityProviderStrategy` par défaut est utilisé par défaut.  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.  
Si un `launchType` est spécifié, le paramètre `capacityProviderStrategy` doit être omis.  
`platformVersion`  
Type : chaîne  
Obligatoire : non  
Version de la plateforme sur laquelle s'exécutent vos tâches dans le service. Une version de plateforme est spécifiée uniquement pour les tâches utilisant le type de lancement Fargate. Si vous ne spécifiez aucune valeur, la dernière version (`LATEST`) est utilisée par défaut.  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.  
AWS Les versions de la plateforme Fargate sont utilisées pour faire référence à un environnement d'exécution spécifique pour l'infrastructure de tâches Fargate. Lorsque vous spécifiez `LATEST` comme version de plateforme lors de l'exécution d'une tâche ou de la création d'un service, vous obtenez la version de plateforme la plus récente pour vos tâches. Lorsque vous mettez à l'échelle votre service, ces tâches reçoivent la version de plateforme spécifiée dans le déploiement actuel du service. Pour de plus amples informations, veuillez consulter [Versions de plateforme Fargate pour Amazon ECS](platform-fargate.md).  
Les versions de plateforme ne sont pas spécifiées pour les tâches utilisant le type de lancement EC2.  
`loadBalancers`  
Un objet d'équilibreur de charge qui représente l'équilibreur de charge à utiliser avec votre service. Lorsque vous utilisez un contrôleur de déploiement externe, seuls les équilibreurs de charge Application Load Balancer et les Network Load Balancer sont pris en charge. Si vous utilisez un équilibreur de charge Application Load Balancer, seul un groupe cible d'équilibreur de charge Application Load Balancer est autorisé par tâche.  
L'extrait de code suivant montre un exemple d'objet `loadBalancer` à utiliser.  

   ```
   "loadBalancers": [
           {
               "targetGroupArn": "",
               "containerName": "",
               "containerPort": 0
           }
   ]
   ```
Lorsque vous spécifiez un objet `loadBalancer`, vous devez spécifier `targetGroupArn` et omettre les paramètres `loadBalancerName`.  
`networkConfiguration`  
Configuration réseau du service. Ce paramètre est obligatoire pour les définitions de tâches qui utilisent le mode réseau `awsvpc` afin de recevoir leur propre interface réseau Elastic. Il n'est pas pris en charge avec les autres modes réseau. Pour plus d’informations sur la mise en réseau pour Fargate, consultez la section [Options de mise en réseau des tâches Amazon ECS pour Fargate](fargate-task-networking.md).  
`serviceRegistries`  
Les détails des enregistrements de découverte de service à attribuer à ce service. Pour de plus amples informations, veuillez consulter [Utilisation de la découverte de service pour connecter les services Amazon ECS avec des noms DNS](service-discovery.md).  
`scale`  
Pourcentage à virgule flottante du nombre souhaité de tâches à placer et à continuer d'exécuter dans l'ensemble de tâches. La valeur est spécifiée en tant que pourcentage total de `desiredCount` d'un service. Les valeurs acceptées sont des nombres compris entre 0 et 100.

   Voici un exemple JSON pour créer un ensemble de tâches pour un contrôleur de déploiement externe.

   ```
   {
       "service": "",
       "cluster": "",
       "externalId": "",
       "taskDefinition": "",
       "networkConfiguration": {
           "awsvpcConfiguration": {
               "subnets": [
                   ""
               ],
               "securityGroups": [
                   ""
               ],
               "assignPublicIp": "DISABLED"
           }
       },
       "loadBalancers": [
           {
               "targetGroupArn": "",
               "containerName": "",
               "containerPort": 0
           }
       ],
       "serviceRegistries": [
           {
               "registryArn": "",
               "port": 0,
               "containerName": "",
               "containerPort": 0
           }
       ],
       "launchType": "EC2",
       "capacityProviderStrategy": [
           {
               "capacityProvider": "",
               "weight": 0,
               "base": 0
           }
       ],
       "platformVersion": "",
       "scale": {
           "value": null,
           "unit": "PERCENT"
       },
       "clientToken": ""
   }
   ```

1. Lorsque des modifications de service sont nécessaires, utilisez l'action d'API `CreateTaskSet`, `UpdateService` ou `UpdateTaskSet`, en fonction des paramètres que vous mettez à jour. Si vous avez créé un ensemble de tâches, utilisez le paramètre `scale` pour chaque ensemble de tâches dans un service afin de déterminer le nombre de tâches à continuer d'exécuter dans le service. Par exemple, si vous disposez d'un service qui contient `tasksetA` et que vous créez un `tasksetB`, vous pouvez tester la validité de `tasksetB` avant de vouloir lui transférer du trafic de production. Vous pouvez régler l'`scale` pour les deux ensembles de tâches sur `100`, et une fois prêt à transférer tout le trafic de production sur `tasksetB`, vous pouvez mettre à jour l'`scale` de `tasksetA` sur `0` pour le diminuer.