

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.

# Planification de vos conteneurs sur Amazon ECS
<a name="scheduling_tasks"></a>

Amazon Elastic Container Service (Amazon ECS) est un système de simultanéité optimiste à état partagé qui offre des capacités de planification flexibles pour vos charges de travail conteneurisées. Les planificateurs Amazon ECS utilisent les informations d'état de cluster fournies par l'API Amazon ECS pour prendre des décisions de placement appropriées.

Amazon ECS fournit un planificateur de service pour les tâches et les applications de longue durée. Il offre également la possibilité d’exécuter des tâches autonomes ou planifiées pour des tâches par lots ou des tâches à exécution unique. Vous pouvez spécifier les stratégies et les contraintes de placement des tâches pour exécuter les tâches qui répondent le mieux à vos besoins. Par exemple, vous pouvez spécifier si les tâches s'exécutent sur plusieurs zones de disponibilité ou dans une seule zone de disponibilité. Vous pouvez intégrer les tâches avec vos propres planificateurs personnalisés ou tiers.


| Option | Quand l’utiliser | En savoir plus | 
| --- | --- | --- | 
| Service | Le planificateur de service est adapté aux services et applications sans état de longue durée. Le planificateur de service peut aussi s'assurer que les tâches sont enregistrées sur un équilibreur de charge Elastic Load Balancing. Vous pouvez mettre à jour vos services gérés par le planificateur de service. Cela peut inclure le déploiement d'une nouvelle définition de tâche ou la modification du nombre de tâches souhaitées en cours d'exécution. Par défaut, le planificateur de service répartit les tâches entre plusieurs zones de disponibilité. Cependant, vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont les tâches sont placées.  | [Services Amazon ECS](ecs_services.md) | 
| Tâche autonome | Une tâche autonome convient aux processus tels que les tâches par lots qui effectuent une tâche puis s’arrêtent. Par exemple, un processus peut appeler RunTask lorsque le travail passe en file d'attente. La tâche extrait le travail de la file d'attente, effectue le travail, puis se termine. Avec RunTask, vous pouvez permettre à la stratégie de placement des tâches par défaut de distribuer les tâches de façon aléatoire sur le cluster. Cela limite les risques qu'une seule instance reçoive un nombre de tâches disproportionné. | [Tâches autonomes Amazon ECS](standalone-tasks.md) | 
| Tâches planifiées | Une tâche planifiée convient lorsque vous avez des tâches à exécuter à des intervalles définis dans votre cluster. Vous pouvez utiliser le EventBridge planificateur pour créer un calendrier. Vous pouvez exécuter des tâches pour une opération de sauvegarde ou une analyse des journaux. Le calendrier du EventBridge planificateur que vous créez peut exécuter une ou plusieurs tâches dans votre cluster à des moments précis. Votre événement planifié peut être défini sur un intervalle spécifique (exécuté toutes les N minutes, toutes les heures ou tous les jours). Sinon, pour une planification plus compliquée, vous pouvez utiliser une expression cron. | [Utilisation d'Amazon EventBridge Scheduler pour planifier des tâches Amazon ECS](tasks-scheduled-eventbridge-scheduler.md) | 

## Options de calcul
<a name="compute-option"></a>

Avec Amazon ECS, vous pouvez spécifier l’infrastructure sur laquelle vos tâches ou services s’exécutent. Vous pouvez utiliser une stratégie de fournisseur de capacité ou un type de lancement.

Pour Fargate, les fournisseurs de capacité sont Fargate et Fargate Spot. Pour EC2, le fournisseur de capacité est le groupe Auto Scaling avec les instances de conteneur enregistrées.

La stratégie des fournisseurs de capacité répartit vos tâches entre les fournisseurs de capacité associés à votre cluster.

Seuls les fournisseurs de capacité déjà associés à un cluster et disposant d'un statut `ACTIVE` ou `UPDATING` peuvent être utilisés dans une stratégie de fournisseur de capacité. Vous pouvez associer un fournisseur de capacité à un cluster lorsque vous créez un cluster. 

Dans une stratégie de fournisseur de capacité, la valeur de *base* facultative indique le nombre minimum de tâches qui s'exécutent sur un fournisseur de capacité spécifié. Une base ne peut être définie que pour un seul fournisseur de capacité dans une stratégie de fournisseur de capacité.

La valeur de *poids* détermine le pourcentage relatif du nombre total de tâches lancées qui utilisent le fournisseur de capacité spécifié. Prenez l’exemple de code suivant. Vous avez une stratégie qui contient deux fournisseurs de capacité et que les deux ont un poids de `1`. Lorsque le pourcentage de base est atteint, les tâches sont réparties équitablement entre les deux fournisseurs de capacité. Dans la même logique, supposons que vous spécifiez un poids de `1` pour *capacityProviderA* et un poids de `4` pour *capacityProviderB*. Ensuite, pour chaque tâche exécutée avec *capacityProviderA*, il y a quatre tâches qui utilisent *capacityProviderB*.

L’option de calcul lance vos tâches directement sur Fargate ou sur les instances Amazon EC2 que vous avez enregistrées manuellement dans vos clusters.

# Cycle de vie des tâches Amazon ECS
<a name="task-lifecycle-explanation"></a>

Lorsqu'une tâche est lancée, soit manuellement ou dans le cadre d'un service, elle peut passer par différents états avant de se terminer d'elle-même ou d'être arrêtée manuellement. Certaines tâches sont destinées à s'exécuter en tant que tâches de traitement par lots qui passent naturellement de `PENDING` à `RUNNING` à `STOPPED`. D'autres tâches, qui peuvent être lancées dans le cadre d'un service, sont censées continuer à s'exécuter indéfiniment, ou à évoluer en fonction des besoins.

Lorsque des modifications de l'état d'une tâche sont demandées, par exemple l'arrêt d'une tâche ou la mise à jour du nombre souhaité pour un service pour le mettre à l'échelle, l'agent de conteneur Amazon ECS considère ces modifications comme le dernier état connu (`lastStatus`) de la tâche et état souhaité (`desiredStatus`) de la tâche. Le dernier état connu et l'état souhaité d'une tâche peuvent être vus dans la console ou en décrivant la tâche avec l'API ou l' AWS CLI.

Le diagramme ci-dessous illustre le flux du cycle de vie des tâches.

![\[Schéma des états du cycle de vie des tâches. Les états sont ALLOCATION, EN ATTENTE, ACTIVATION, EXÉCUTION, DÉSACTIVATION, ARRÊT.\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/images/task-lifecycle.png)


## États de cycle de vie
<a name="lifecycle-states"></a>

Voici des descriptions de chacun des états du cycle de vie de tâche.

PROVISIONING  
Amazon ECS doit effectuer des étapes supplémentaires avant que la tâche soit lancée. Par exemple, pour les tâches qui utilisent le mode de réseau `awsvpc`, l'interface réseau Elastic doit être mise en service.

PENDING  
Il s'agit d'un état de transition où Amazon ECS attend l'agent de conteneur pour prendre les mesures nécessaires. Une tâche reste en attente jusqu'à ce que des ressources soient disponibles pour la tâche.

ACTIVATING  
Il s'agit d'un état de transition lors duquel Amazon ECS doit effectuer des étapes supplémentaires une fois que la tâche est lancée, mais avant que la tâche passe à l'état `RUNNING`. Il s’agit de l’état dans lequel Amazon ECS extrait les images des conteneurs, crée les conteneurs, configure le réseau des tâches, enregistre les groupes cibles des équilibreurs de charge et configure la découverte de service.

RUNNING  
La tâche est en cours d'exécution.

DEACTIVATING  
Il s'agit d'un état de transition lors duquel Amazon ECS doit effectuer des étapes supplémentaires avant que la tâche soit arrêtée. Pour les tâches qui font partie d’un service configuré pour utiliser les groupes cibles Elastic Load Balancing, l’annulation de l’enregistrement du groupe cible se produit au cours de cet état.

STOPPING  
Il s'agit d'un état de transition où Amazon ECS attend l'agent de conteneur pour prendre les mesures nécessaires.  
Pour les conteneurs Linux, l'agent de conteneur enverra le signal d'arrêt défini dans l'image de votre conteneur pour indiquer que l'application doit terminer et s'arrêter à l'aide de l'`STOPSIGNAL`instruction. C'est le `SIGTERM` cas par défaut. Ensuite, il enverra un `SIGKILL` après avoir attendu la `StopTimeout` durée définie dans la définition de la tâche. 

DEPROVISIONING  
Amazon ECS doit effectuer des étapes supplémentaires une fois que la tâche est arrêtée, mais avant que la tâche passe à l'état `STOPPED`. Par exemple, pour les tâches qui utilisent le mode de réseau `awsvpc`, l'interface réseau Elastic doit être détachée et supprimée.

STOPPED  
La tâche a été arrêtée avec succès.  
Si votre tâche s’est arrêtée en raison d’une erreur, consultez la section [Affichage des erreurs liées aux tâches Amazon ECS arrêtées](stopped-task-errors.md).

SUPPRIMÉ  
Il s'agit d'un état de transition lorsqu'une tâche s'arrête. Cet état ne s'affiche pas sur la console, mais s'affiche sur les `describe-tasks`.

# Comment Amazon ECS place les tâches sur des instances de conteneur
<a name="task-placement"></a>

Vous pouvez utiliser le placement des tâches pour configurer Amazon ECS afin de placer vos tâches sur des instances de conteneur répondant à certains critères, par exemple une zone de disponibilité ou un type d’instance.

Les composants de placement des tâches sont les suivants :
+ Stratégie de placement des tâches : l’algorithme permettant de sélectionner les instances de conteneur pour le placement des tâches ou les tâches à terminer. Par exemple, Amazon ECS peut sélectionner des instances de conteneur au hasard, ou il peut sélectionner des instances de conteneur de manière à ce que les tâches soient réparties uniformément entre un groupe d’instances.
+ Groupe de tâches : un groupe de tâches connexes, par exemple des tâches de base de données.
+ Contrainte de placement des tâches : il s’agit de règles qui doivent être respectées pour placer une tâche sur une instance de conteneur. Si la contrainte n’est pas respectée, la tâche n’est pas placée et reste dans l’état `PENDING`. Par exemple, vous pouvez utiliser une contrainte pour ne placer des tâches que sur un type d’instance spécifique. 

Amazon ECS utilise différents algorithmes pour les différentes options de capacité. 

## Instances gérées Amazon ECS
<a name="managed-instances-launch-type"></a>

Pour les tâches exécutées sur des instances gérées Amazon ECS, Amazon ECS doit déterminer où placer la tâche et, lors de la réduction du nombre de tâches, quelles tâches résilier. Amazon ECS prend cette décision en fonction des exigences d’instance spécifiées dans le modèle de lancement du fournisseur de capacité, des exigences spécifiées dans la définition de la tâche, telles que l’UC et la mémoire, et des contraintes de placement des tâches.

**Note**  
Les instances gérées Amazon ECS ne prennent pas en charge les stratégies de placement de tâches. Amazon ECS fera tout son possible pour répartir les tâches entre les zones de disponibilité accessibles.

Lorsqu'Amazon ECS place des tâches, il a recours au processus suivant afin de sélectionner les instances de conteneur :

1. Identification des instances qui répondent aux exigences en termes d’UC, de GPU, de mémoire et de port dans la définition de tâche.

1. Identification des instances de conteneur qui satisfont aux contraintes de placement des tâches.

1. Identification des instances de conteneur qui satisfont aux exigences spécifiées dans le modèle de lancement du fournisseur de capacité.

1. Sélection des instances de conteneur pour le placement des tâches.

## EC2
<a name="ec2-launch-type"></a>

Pour les tâches qui utilisent le type de lancement EC2, Amazon ECS doit déterminer où placer la tâche en fonction des exigences spécifiées dans la définition de la tâche, telles que l’UC et la mémoire. De la même manière, lorsque vous réduisez le nombre de tâches, Amazon ECS doit déterminer quelles tâches doivent être résiliées. Vous pouvez appliquer des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont Amazon ECS place et résilie les tâches. 

Les stratégies de placement des tâches par défaut dépendent du fait que vous exécutiez les tâches manuellement (tâches autonomes) ou dans le cadre d’un service. Pour les tâches exécutées dans le cadre d'un service Amazon ECS, la stratégie de placement des tâches est `spread`, en utilisant `attribute:ecs.availability-zone`. Il n’y a pas de contrainte de placement par défaut pour les tâches qui ne font pas partie des services. Pour de plus amples informations, veuillez consulter [Planification de vos conteneurs sur Amazon ECS](scheduling_tasks.md).

**Note**  
Les stratégies de placement des tâches ont une obligation de moyens, mais pas de résultat. Amazon ECS tente toujours de placer les tâches, même lorsque l'option de placement optimale n'est pas disponible. Néanmoins, les contraintes de placement des tâches constituent une obligation et peuvent empêcher le placement des tâches. 

Vous pouvez utiliser simultanément des stratégies et des contraintes de placement des tâches. Par exemple, vous pouvez utiliser une stratégie et une contrainte de placement des tâches de façon à répartir les tâches entre différentes zones de disponibilité et les regrouper par bin packing en fonction de la mémoire dans chaque zone de disponibilité, mais uniquement pour les instances G2.

Lorsqu'Amazon ECS place des tâches, il a recours au processus suivant afin de sélectionner les instances de conteneur :

1. Identification des instances qui répondent aux exigences en termes d’UC, de GPU, de mémoire et de port dans la définition de tâche.

1. Identification des instances de conteneur qui satisfont aux contraintes de placement des tâches.

1. Identification des instances de conteneur qui satisfont aux stratégies de placement des tâches.

1. Sélection des instances de conteneur pour le placement des tâches.

## Fargate
<a name="fargate-launch-type"></a>

Les stratégies et contraintes de placement des tâches ne sont pas prises en charge pour les tâches utilisant Fargate. Fargate fera de son mieux pour répartir les tâches entre les zones de disponibilité accessibles. Si le fournisseur de capacité inclut à la fois Fargate et Fargate Spot, le comportement de répartition est indépendant pour chaque fournisseur de capacité. 

# Autoscaling des instances gérées Amazon ECS et placement des tâches
<a name="managed-instance-auto-scaling"></a>

Les instances gérées Amazon ECS utilisent des algorithmes intelligents pour automatiquement mettre à l’échelle la capacité de votre cluster et répartir les tâches de manière efficace sur l’ensemble de votre infrastructure. Comprendre le fonctionnement de ces algorithmes vous permet d’optimiser les configurations de vos services et de résoudre les problèmes liés aux comportements de placement.

## Algorithme de placement des tâches
<a name="managed-instance-task-placement-algorithm"></a>

Les instances gérées Amazon ECS utilisent un algorithme de placement sophistiqué qui équilibre la disponibilité, l’utilisation des ressources et les exigences du réseau lors de la planification des tâches.

### Répartition des zones de disponibilité
<a name="managed-instance-az-spread-behavior"></a>

Par défaut, les instances gérées Amazon ECS donnent la priorité à la disponibilité en répartissant les tâches entre plusieurs zones de disponibilité :
+ Pour les services comportant plusieurs tâches, les instances gérées Amazon ECS garantissent une distribution sur au moins trois instances dans différentes zones de disponibilité lorsque cela est possible
+ Ce comportement permet une tolérance aux pannes, mais peut entraîner une baisse de l’utilisation des ressources par instance
+ La répartition des zones de disponibilité prime sur l’optimisation du bin packing

### Comportement de bin packing
<a name="managed-instance-bin-packing"></a>

Bien que les instances gérées Amazon ECS puissent effectuer du bin packing pour optimiser l’utilisation des ressources, ce comportement est influencé par la configuration de votre réseau :
+ Pour réaliser le bin packing, configurez votre service de manière à utiliser un seul sous-réseau
+ Les configurations à sous-réseaux multiples donnent la priorité à la distribution des zones de disponibilité plutôt qu’à la densité des ressources
+ Le bin packing est plus probable lors du lancement initial du service que lors des événements de mise à l’échelle

### Considérations relatives à la densité de l’ENI
<a name="managed-instance-eni-density"></a>

Pour les services utilisant le mode réseau `awsvpc`, les instances gérées Amazon ECS tiennent compte de la densité de l’interface réseau Elastic (ENI) lorsqu’elles prennent des décisions de placement :
+ Chaque tâche en mode `awsvpc` nécessite une ENI dédiée
+ Les types d’instances ont des limites ENI différentes qui affectent la densité des tâches
+ Les instances gérées Amazon ECS tiennent compte de la disponibilité de l’ENI lors de la sélection des instances cibles

**Note**  
Les calculs de densité d’ENI sont continuellement améliorés afin d’optimiser les décisions de placement.

## Logique de décision du fournisseur de capacité
<a name="managed-instance-capacity-provider-decisions"></a>

Les fournisseurs de capacité d’instances gérées Amazon ECS prennent des décisions de mise à l’échelle et de placement en fonction de plusieurs facteurs :

Besoins en ressources  
Exigences relatives à l’UC, à la mémoire et au réseau pour les tâches en attente

Disponibilité de l’instance  
Capacité et utilisation actuelles sur les instances existantes

Contraintes de réseau  
Configuration du sous-réseau et disponibilité de l’ENI

Distribution par zone de disponibilité  
Maintien de la tolérance aux pannes dans plusieurs zones de disponibilité

## Options de configuration
<a name="managed-instance-configuration-options"></a>

### Stratégie de sélection de sous-réseaux
<a name="managed-instance-subnet-strategy"></a>

La configuration de votre sous-réseau a un impact significatif sur le comportement de placement des tâches :

Sous-réseaux multiples (par défaut)  
Priorise la répartition entre les zones de disponibilité pour une haute disponibilité  
Peut entraîner une baisse de l’utilisation des ressources par instance  
Recommandé pour les charges de production nécessitant une tolérance aux pannes

Sous-réseau unique  
Permet le bin packing pour une meilleure utilisation des ressources  
Réduit la tolérance aux pannes en concentrant les tâches dans une seule zone de disponibilité  
Adapté au développement ou aux charges de travail optimisées en termes de coûts

### Considérations relatives au mode réseau
<a name="managed-instance-network-mode-considerations"></a>

Le mode réseau que vous choisissez influe sur les décisions de placement :
+ Mode `awsvpc` : chaque tâche nécessite une ENI dédiée, ce qui limite la densité des tâches par instance
+ Mode `host` : les tâches utilisent directement le réseau de l’hôte, le placement étant principalement déterminé par la disponibilité des ressources

### Considérations concernant l'architecture du processeur
<a name="managed-instance-cpu-architecture-considerations"></a>

`cpuArchitecture`Ce que vous spécifiez dans votre définition de tâche est utilisé pour placer des tâches sur une architecture spécifique. Si vous ne spécifiez pas de`cpuArchitecture`, Amazon ECS essaiera de placer les tâches sur n'importe quelle architecture de processeur disponible en fonction de la configuration du fournisseur de capacité. Vous pouvez spécifier `X86_64` ou `ARM64`.

## Résolution des problèmes de placement des tâches
<a name="managed-instance-troubleshooting-placement"></a>

### Modèles de placement courants
<a name="managed-instance-common-placement-patterns"></a>

La compréhension des modèles de placement attendus permet de distinguer le comportement normal des problèmes potentiels :

Distribution répartie  
Tâches réparties sur plusieurs instances avec une utilisation partielle  
Comportement normal lors de l’utilisation de plusieurs sous-réseaux  
Indique que la disponibilité prime sur l’efficacité des ressources

Placement concentré  
Tâches multiples placées sur un nombre réduit d’instances avec un taux d’utilisation plus élevé  
Prévu lors de l’utilisation d’une configuration de sous-réseau unique  
Peut se produire lors du lancement initial du service

Distribution inégale  
Certaines instances sont très utilisées tandis que d’autres restent sous-utilisées  
Peut indiquer les limites de l’ENI ou les contraintes de ressources  
Envisagez de revoir les types d’instances et la configuration réseau

### Optimisation du comportement de placement
<a name="managed-instance-placement-optimization"></a>

Pour optimiser le placement des tâches en fonction de vos besoins spécifiques :

1. Évaluez vos exigences de disponibilité par rapport à vos besoins d’optimisation des coûts

1. Choisissez la configuration de sous-réseau appropriée en fonction de vos priorités

1. Sélectionnez les types d’instances dotés d’une capacité ENI adaptée à votre mode réseau

1. Surveillez les modèles de placement et ajustez la configuration selon les besoins

## Bonnes pratiques
<a name="managed-instance-best-practices"></a>
+ **Pour les charges de travail de production** : utilisez plusieurs sous-réseaux répartis dans différentes zones de disponibilité pour garantir une haute disponibilité, en acceptant le compromis en termes d’utilisation des ressources
+ **Pour le développement ou les tests** : envisagez une configuration de sous-réseau unique pour optimiser l’utilisation des ressources et réduire les coûts
+ **Pour le mode `awsvpc`** : choisissez des types d’instances dotés d’une capacité d’ENI suffisante pour éviter les contraintes de placement
+ **Pour optimiser les coûts** : surveillez les modèles d’utilisation et ajustez la configuration des services pour équilibrer disponibilité et efficacité
+ **Pour résoudre les problèmes** : passez en revue la configuration du sous-réseau et le mode réseau lorsque vous étudiez des modèles de placement inattendus

# Utilisation des stratégies pour définir le placement des tâches Amazon ECS
<a name="task-placement-strategies"></a>

Pour les tâches qui utilisent le type de lancement EC2, Amazon ECS doit déterminer où placer la tâche en fonction des exigences spécifiées dans la définition de la tâche, telles que l’UC et la mémoire. De la même manière, lorsque vous réduisez le nombre de tâches, Amazon ECS doit déterminer quelles tâches doivent être résiliées. Vous pouvez appliquer des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont Amazon ECS place et résilie les tâches. 

Les stratégies de placement des tâches par défaut dépendent du fait que vous exécutiez les tâches manuellement (tâches autonomes) ou dans le cadre d’un service. Pour les tâches exécutées dans le cadre d'un service Amazon ECS, la stratégie de placement des tâches est `spread`, en utilisant `attribute:ecs.availability-zone`. Il n’y a pas de contrainte de placement par défaut pour les tâches qui ne font pas partie des services. Pour de plus amples informations, veuillez consulter [Planification de vos conteneurs sur Amazon ECS](scheduling_tasks.md).

**Note**  
Les stratégies de placement des tâches ont une obligation de moyens, mais pas de résultat. Amazon ECS tente toujours de placer les tâches, même lorsque l'option de placement optimale n'est pas disponible. Néanmoins, les contraintes de placement des tâches constituent une obligation et peuvent empêcher le placement des tâches. 

Vous pouvez utiliser simultanément des stratégies et des contraintes de placement des tâches. Par exemple, vous pouvez utiliser une stratégie et une contrainte de placement des tâches de façon à répartir les tâches entre différentes zones de disponibilité et les regrouper par bin packing en fonction de la mémoire dans chaque zone de disponibilité, mais uniquement pour les instances G2.

Lorsqu'Amazon ECS place des tâches, il a recours au processus suivant afin de sélectionner les instances de conteneur :

1. Identification des instances qui répondent aux exigences en termes d’UC, de GPU, de mémoire et de port dans la définition de tâche.

1. Identification des instances de conteneur qui satisfont aux contraintes de placement des tâches.

1. Identification des instances de conteneur qui satisfont aux stratégies de placement des tâches.

1. Sélection des instances de conteneur pour le placement des tâches.

Vous spécifiez les stratégies de placement des tâches dans la définition du service ou dans la définition des tâches à l’aide du paramètre `placementStrategy`.

```
"placementStrategy": [
    {
        "field": "The field to apply the placement strategy against",
        "type": "The placement strategy to use"
    }
]
```

Vous pouvez définir les stratégies lorsque vous exécutez une tâche ([RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)), créez un nouveau service ([CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)) ou mettez à jour un service existant ([UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)).

Le tableau suivant décrit les types et champs disponibles.


| type | Valeurs de champ valides | 
| --- | --- | 
| binpack Les tâches sont placées sur les instances de conteneur afin de laisser le moins de CPU ou de mémoire inutilisées. Cette stratégie minimise le nombre d'instances de conteneur utilisées. Lorsque cette stratégie est utilisée et qu'une action de mise à l'échelle horizontale est entreprise, Amazon ECS résilie les tâches. Elle effectue cette opération en fonction de la quantité de ressources laissée sur l'instance de conteneur après la résiliation de la tâche. L'instance de conteneur qui a le plus de ressources disponibles après la résiliation de la tâche voit cette tâche résiliée. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/task-placement-strategies.html)  | 
| random Les tâches sont placées au hasard. | Non utilisé | 
| spreadLes tâches sont placées uniformément en fonction de la valeur spécifiée. Les tâches de service sont réparties en fonction des tâches du service concerné. Les tâches autonomes sont réparties en fonction des tâches du même groupe de tâches. Pour de plus amples informations sur les groupes de tâches, consultez [Tâches Amazon ECS liées au groupe](task-groups.md). Lorsque la stratégie `spread` est utilisée et qu'une action de mise à l'échelle horizontale est entreprise, Amazon ECS sélectionne les tâches à résilier qui maintiennent un équilibre entre les zones de disponibilité. Au sein d'une zone de disponibilité, les tâches sont sélectionnées au hasard. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/task-placement-strategies.html)  | 

Les stratégies de placement des tâches peuvent également être mises à jour pour les services existants. Pour de plus amples informations, veuillez consulter [Comment Amazon ECS place les tâches sur des instances de conteneur](task-placement.md).

Vous pouvez créer une stratégie de placement des tâches qui utilise plusieurs stratégies en créant des tableaux de stratégies dans l'ordre d'exécution souhaité. Par exemple, si vous souhaitez répartir les tâches entre les zones de disponibilité, puis les regrouper en fonction de la mémoire au sein de chaque zone de disponibilité, spécifiez la stratégie de zone de disponibilité suivie de la stratégie de mémoire. Pour consulter des exemples de stratégies, voir [Exemples de stratégies de placement des tâches Amazon ECS](strategy-examples.md).

# Exemples de stratégies de placement des tâches Amazon ECS
<a name="strategy-examples"></a>

Vous pouvez définir des stratégies de placement des tâches à l'aide des actions suivantes : [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), et [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

**Topics**
+ [Répartition des tâches de manière uniforme sur plusieurs zones de disponibilité](#even-az)
+ [Répartition des tâches de manière uniforme sur toutes les instances](#even-instance)
+ [Regroupement des tâches en fonction de la mémoire](#binpack)
+ [Placement des tâches de façon aléatoire](#random)
+ [Répartition des tâches de manière uniforme entre les zones de disponibilité, puis répartition de manière uniforme entre les instances de chaque zone de disponibilité](#az-instance)
+ [Répartition des tâches de manière uniforme entre les zones de disponibilité, puis regroupement des tâches en fonction de la mémoire de chaque zone de disponibilité](#az-memory)
+ [Répartition des tâches de manière uniforme entre les instances, puis regroupement des tâches en fonction de la mémoire](#instance-memory)

## Répartition des tâches de manière uniforme sur plusieurs zones de disponibilité
<a name="even-az"></a>

La stratégie suivante répartit les tâches de façon uniforme dans les zones de disponibilité.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    }
]
```

## Répartition des tâches de manière uniforme sur toutes les instances
<a name="even-instance"></a>

La stratégie suivante répartit les tâches de façon uniforme entre toutes les instances.

```
"placementStrategy": [
    {
        "field": "instanceId",
        "type": "spread"
    }
]
```

## Regroupement des tâches en fonction de la mémoire
<a name="binpack"></a>

La stratégie suivante regroupe les tâches par bin packing en fonction de la mémoire.

```
"placementStrategy": [
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

## Placement des tâches de façon aléatoire
<a name="random"></a>

La stratégie suivante place les tâches de façon aléatoire.

```
"placementStrategy": [
    {
        "type": "random"
    }
]
```

## Répartition des tâches de manière uniforme entre les zones de disponibilité, puis répartition de manière uniforme entre les instances de chaque zone de disponibilité
<a name="az-instance"></a>

La stratégie suivante permet de répartir les tâches de façon égale entre les zones de disponibilité, puis de les répartir de façon égale entre les instances de chaque zone de disponibilité.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    },
    {
        "field": "instanceId",
        "type": "spread"
    }
]
```

## Répartition des tâches de manière uniforme entre les zones de disponibilité, puis regroupement des tâches en fonction de la mémoire de chaque zone de disponibilité
<a name="az-memory"></a>

La stratégie suivante permet de répartir les tâches de façon égale entre les zones de disponibilité, puis de répartir les tâches par bin packing en fonction de la mémoire de chaque zone de disponibilité.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    },
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

## Répartition des tâches de manière uniforme entre les instances, puis regroupement des tâches en fonction de la mémoire
<a name="instance-memory"></a>

La stratégie suivante répartit les tâches de manière uniforme entre toutes les instances, puis regroupe les tâches en fonction de la mémoire au sein de chaque instance. 

```
"placementStrategy": [
    {
        "field": "instanceId",
        "type": "spread"
    },
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

# Tâches Amazon ECS liées au groupe
<a name="task-groups"></a>

Vous pouvez identifier un ensemble de tâches connexes et les placer dans un groupe de tâches. Toutes les tâches ayant le même nom de groupe de tâches sont considérées comme un ensemble lorsque la stratégie de placement des tâches `spread` est utilisée. Par exemple, supposons que vous exécutiez différentes applications dans un cluster, par exemple des bases de données et des serveurs web. Afin de veiller à ce que les bases de données soient réparties de façon équilibrée dans les zones de disponibilité, ajoutez-les à un groupe de tâches nommé `databases`, puis utilisez la stratégie de placement des tâches `spread`. Pour de plus amples informations, veuillez consulter [Utilisation des stratégies pour définir le placement des tâches Amazon ECS](task-placement-strategies.md).

Les groupes de tâches peuvent également être utilisés comme contrainte de placement des tâches. Lorsque vous spécifiez un groupe de tâches dans la contrainte `memberOf`, les tâches sont uniquement envoyées aux instances de conteneur qui se trouvent dans le groupe de tâches spécifié. Pour obtenir un exemple, consultez [Exemple de contraintes de placement de tâche Amazon ECS](constraint-examples.md).

Par défaut, les tâches autonomes utilisent le nom de famille de définition de tâche (par exemple, `family:my-task-definition`) comme nom de groupe de tâches si aucun nom de groupe de tâches personnalisé n'est spécifié. Les tâches lancées dans le cadre d'un service utilisent le nom du service comme nom de groupe de tâches et ne peuvent pas être modifiées.

Les exigences suivantes s’appliquent au groupe de tâches.
+ Un nom de groupe de tâches doit être composé de 255 caractères maximum.
+ Chaque tâche peut faire partie d'un seul groupe.
+ Après avoir lancé une tâche, vous ne pouvez pas modifier le groupe de tâches auquel elle appartient.

# Définition des instances de conteneur utilisées par Amazon ECS pour les tâches
<a name="task-placement-constraints"></a>

Une contrainte de placement de tâche est une règle concernant une instance de conteneur qu’Amazon ECS utilise pour déterminer si la tâche est autorisée à s’exécuter sur l’instance. Au moins une instance de conteneur doit correspondre à la contrainte. Si aucune instance ne correspond à la contrainte, la tâche reste à l'état `PENDING`. Lorsque vous créez un nouveau service ou que vous mettez à jour un service existant, vous pouvez définir des contraintes de placement des tâches pour les tâches du service. 

Vous pouvez spécifier des contraintes de placement des tâches dans la définition du service, dans la définition de la tâche ou dans la tâche à l’aide du paramètre `placementConstraint`.

```
"placementConstraints": [
    {
        "expression": "The expression that defines the task placement constraints",
        "type": "The placement constraint type to use"
    }
]
```

Le tableau suivant décrit comment utiliser les paramètres.


| Constraint type (Type de contrainte) | Peut être spécifié quand | 
| --- | --- | 
| distinctInstancePlace chaque tâche sur une instance de conteneur différente.Amazon ECS examine le statut souhaité des tâches pour le placement des tâches. Par exemple, si le statut souhaité de la tâche existante est `STOPPED` (mais que le dernier statut ne l’est pas), une nouvelle tâche entrante peut être placée sur la même instance malgré la contrainte de placement `distinctInstance`. En conséquence, vous pouvez voir deux tâches dont le dernier statut est `RUNNING` sur la même instance. Nous recommandons aux clients qui recherchent une isolation forte pour leurs tâches d’utiliser Fargate. Fargate exécute chaque tâche dans un environnement de virtualisation matérielle. Cela garantit que ces charges de travail conteneurisées ne partagent pas les interfaces réseau, le stockage éphémère Fargate, l’UC ou la mémoire avec d’autres tâches. Pour plus d'informations, consultez [la section Présentation de la sécurité de AWS Fargate](https://d1.awsstatic.com/whitepapers/AWS_Fargate_Security_Overview_Whitepaper.pdf). |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/task-placement-constraints.html)  | 
| memberOfPlace les tâches sur des instances de conteneur qui correspondent à une expression.  | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/task-placement-constraints.html) | 

Lorsque vous utilisez le type de contrainte `memberOf`, vous pouvez créer une expression à l’aide du langage de requête de cluster qui définit les instances de conteneur dans lesquelles Amazon ECS peut placer des tâches. L’expression vous permet de regrouper vos instances de conteneur par attributs. L’expression va dans le paramètre `expression ` de `placementConstraint`.

## Attributs d’instance de conteneur Amazon ECS
<a name="attributes"></a>

Vous pouvez ajouter à vos instances de conteneur des métadonnées personnalisées connues sous le nom d'*attributs*. Chaque attribut a un nom et une valeur de chaîne facultative. Vous pouvez utiliser les attributs intégrés fournis par Amazon ECS ou définir des attributs personnalisés.

Les sections suivantes contiennent des exemples d'attributs intégrés, facultatifs et personnalisés.

### Attributs intégrés
<a name="ecs-automatic-attributes"></a>

Amazon ECS applique automatiquement les attributs suivants à vos instances de conteneur.

`ecs.ami-id`  
ID de l’AMI utilisée pour lancer l’instance. Cet attribut peut par exemple avoir la valeur `ami-1234abcd`.

`ecs.availability-zone`  
Zone de disponibilité de l'instance. Cet attribut peut par exemple avoir la valeur `us-east-1a`.

`ecs.instance-type`  
Type de l'instance. Cet attribut peut par exemple avoir la valeur `g2.2xlarge`.

`ecs.os-type`  
Système d'exploitation de l'instance. Les valeurs possibles pour cet attribut sont `linux` et `windows`.

`ecs.os-family`  
Version du système d'exploitation de l'instance.  
Pour les instances Linux, la valeur valide est `LINUX`. Pour les instances Windows, ECS définit la valeur au format `WINDOWS_SERVER_<OS_Release>_<FULL or CORE>`. Les valeurs valides sont `WINDOWS_SERVER_2022_FULL`, `WINDOWS_SERVER_2022_CORE`, `WINDOWS_SERVER_20H2_CORE`, `WINDOWS_SERVER_2019_FULL`, `WINDOWS_SERVER_2019_CORE` et `WINDOWS_SERVER_2016_FULL`.  
Cela est important pour les conteneurs Windows et Windows containers on AWS Fargate parce que la version du système d'exploitation de chaque conteneur Windows doit correspondre à celle de l'hôte. Si la version Windows de l'image du conteneur est différente de celle de l'hôte, le conteneur ne démarre pas. Pour plus d'informations, consultez [Compatibilité avec la version du conteneur Windows](https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/version-compatibility?tabs=windows-server-2022%2Cwindows-11) sur le site web de documentation Microsoft.  
Si votre cluster exécute plusieurs versions de Windows, vous pouvez vous assurer qu'une tâche est placée sur une instance EC2 exécutée sur la même version en utilisant la contrainte de placement : `memberOf(attribute:ecs.os-family == WINDOWS_SERVER_<OS_Release>_<FULL or CORE>)`. Pour de plus amples informations, veuillez consulter [Extraction des métadonnées d’AMI Windows optimisée pour Amazon ECS](retrieve-ecs-optimized_windows_AMI.md).

`ecs.cpu-architecture`  
Architecture du processeur de l'instance. Cet attribut peut par exemple avoir la valeur `x86_64` ou `arm64`.

`ecs.vpc-id`  
VPC dans lequel l'instance a été lancée. Cet attribut peut par exemple avoir la valeur `vpc-1234abcd`.

`ecs.subnet-id`  
Sous-réseau utilisé par l'instance. Cet attribut peut par exemple avoir la valeur `subnet-1234abcd`.

**Note**  
Les instances gérées Amazon ECS prennent en charge le sous-ensemble d’attributs suivant :  
`ecs.subnet-id`
`ecs.availability-zone`
`ecs.instance-type`
`ecs.cpu-architecture`

### Attributs facultatifs
<a name="ecs-optional-attributes"></a>

Amazon ECS peut ajouter les attributs suivants à vos instances de conteneur.

`ecs.awsvpc-trunk-id`  
Si cet attribut existe, l'instance dispose d'une interface réseau de jonction. Pour de plus amples informations, veuillez consulter [Augmentation des interfaces réseau d’une instance de conteneur Amazon ECS Linux](container-instance-eni.md).

`ecs.outpost-arn`  
Si cet attribut existe, il contient l'Amazon Resource Name (ARN) de l'Outpost. Pour de plus amples informations, veuillez consulter [Amazon Elastic Container Service sur AWS Outposts](using-outposts.md).

`ecs.capability.external`  
Si cet attribut existe, l'instance est identifiée en tant qu'instance externe. Pour de plus amples informations, veuillez consulter [Clusters Amazon ECS pour instances externes](ecs-anywhere.md).

### Attributs personnalisés
<a name="ecs-custom-attributes"></a>

Vous pouvez appliquer des attributs personnalisés à vos instances de conteneur. Par exemple, vous pouvez définir un attribut avec le nom « stack » et la valeur « prod ».

Lorsque vous spécifiez des attributs personnalisés, vous devez prendre en compte les éléments suivants.
+ Le `name` doit comprendre entre 1 et 128 caractères et peut contenir des lettres (majuscules et minuscules), des chiffres, des tirets, des traits de soulignement, des barres obliques et des points.
+ Le `value` doit comprendre entre 1 et 128 caractères et peut contenir des lettres (majuscules et minuscules), des chiffres, des tirets, des traits de soulignement, des points, des arrobases, des barres obliques, des deux-points et des espaces. La valeur ne peut pas contenir d'espaces de début ou de fin.

# Création d’expressions pour définir des instances de conteneur pour les tâches Amazon ECS
<a name="cluster-query-language"></a>

Les requêtes de cluster sont des expressions qui vous permettent de regrouper des objets. Par exemple, vous pouvez regrouper des instances de conteneur par attributs, notamment par zone de disponibilité, type d'instance ou métadonnées personnalisées. Pour de plus amples informations, veuillez consulter [Attributs d’instance de conteneur Amazon ECS](task-placement-constraints.md#attributes).

Une fois que vous avez défini un groupe d'instances de conteneur, vous pouvez personnaliser Amazon ECS de façon à placer les instances de conteneur en fonction du groupe. Pour plus d'informations, consultez [Exécution d’une application en tant que tâche Amazon ECS](standalone-task-create.md) et [Création d’un déploiement de mise à jour propagée Amazon ECS](create-service-console-v2.md). Vous pouvez également appliquer un filtre de groupe lorsque vous répertoriez les instances de conteneur.

## Syntaxe des expressions
<a name="expression-syntax"></a>

Les expressions ont la syntaxe suivante :

```
subject operator [argument]
```

**Sujet**  
Attribut ou champ à évaluer.

`agentConnected`  
Sélectionnez les instances de conteneur par leur état de connexion de l'agent de conteneur Amazon ECS. Vous pouvez utiliser ce filtre pour rechercher des instances avec des agents de conteneur déconnectés.  
Opérateurs valides : equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`agentVersion`  
Sélectionnez les instances de conteneur par la version de l'agent de conteneur Amazon ECS. Vous pouvez utiliser ce filtre pour trouver des instances qui exécutent des versions obsolètes de l'agent de conteneur Amazon ECS.  
Opérateurs valides : equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`attribute:attribute-name`  
Sélectionnez les instances de conteneur par attribut. Pour de plus amples informations, veuillez consulter [Attributs d’instance de conteneur Amazon ECS](task-placement-constraints.md#attributes).

`ec2InstanceId`  
Sélectionnez les instances de conteneur par leur ID d'instance Amazon EC2.  
Opérateurs valides : equals (==), not\$1equals (\$1=), in, not\$1in (\$1in), matches (=\$1), not\$1matches (\$1\$1)

`registeredAt`  
Sélectionnez les instances de conteneur par leur date d'enregistrement d'instance de conteneur. Vous pouvez utiliser ce filtre pour trouver de nouvelles instances enregistrées ou des instances très anciennes.  
Opérateurs valides : equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)  
Formats de date valides : 2018-06-18T22:28:28\$100:00, 2018-06-18T22:28:28Z, 2018-06-18T22:28:28, 2018-06-18

`runningTasksCount`  
Sélectionnez les instances de conteneur par nombre de tâches en cours d'exécution. Vous pouvez utiliser ce filtre pour trouver des instances vides ou presque vides (peu de tâches exécutées sur elles).  
Opérateurs valides : equals (==), not\$1equals (\$1=), greater\$1than (>), greater\$1than\$1equal (>=), less\$1than (<), less\$1than\$1equal (<=)

`task:group`  
Sélectionnez les instances de conteneur par groupe de tâches. Pour de plus amples informations, veuillez consulter [Tâches Amazon ECS liées au groupe](task-groups.md).

**Opérateur**  
Opérateur de comparaison. Les opérateurs suivants sont pris en charge.


|  Opérateur  |  Description  | 
| --- | --- | 
|  ==, equals  |  Égalité de chaînes  | 
|  \$1=, not\$1equals  |  Inégalité de chaînes  | 
|  >, greater\$1than  |  Supérieur à  | 
|  >=, greater\$1than\$1equal  |  Supérieur ou égal à  | 
|  <, less\$1than  |  Inférieur à  | 
|  <=, less\$1than\$1equal  |  Inférieur ou égal à  | 
|  exists  |  Le sujet existe  | 
|  \$1exists, not\$1exists  |  Le sujet n'existe pas  | 
|  in  |  Valeur présente dans la liste d'arguments  | 
|  \$1in, not\$1in  |  Valeur ne se trouvant pas dans la liste d'arguments  | 
|  =\$1, matches  |  Correspondance de modèle  | 
|  \$1\$1, not\$1matches  |  Non-correspondance de modèle  | 

**Note**  
Une expression ne peut pas contenir de parenthèses. En revanche, vous pouvez utiliser des parenthèses pour spécifier la priorité dans des expressions composées.

**Argument**  
Pour de nombreux opérateurs, l'argument est une valeur littérale.

Les opérateurs `in` et `not_in` attendent une liste d'arguments comme argument. Vous spécifiez une liste d'arguments comme suit :

```
[argument1, argument2, ..., argumentN]
```

Les opérateurs matches et not\$1matches attendent un argument respectant la syntaxe de l'expression régulière Java. Pour en savoir plus, consultez [java.util.regex.Pattern](http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html).

**Expressions composées**

Vous pouvez combiner des expressions à l'aide des opérateurs booléens suivants :
+ &&, and
+ \$1\$1, or
+ \$1, not

Vous pouvez spécifier la priorité à l'aide de parenthèses :

```
(expression1 or expression2) and expression3
```

## Exemples d'expressions
<a name="expression-examples"></a>

Des exemples d'expressions sont présentés ci-après.

**Exemple : égalité des chaînes**  
L'expression suivante sélectionne des instances avec le type d'instance spécifié.

```
attribute:ecs.instance-type == t2.small
```

**Exemple : liste d'arguments**  
L'expression suivante sélectionne des instances dans la zone de disponibilité us-east-1a ou us-east-1b.

```
attribute:ecs.availability-zone in [us-east-1a, us-east-1b]
```

**Exemple : expression composée**  
L'expression suivante sélectionne des instances G2 qui ne se trouvent pas dans la zone de disponibilité us-east-1d.

```
attribute:ecs.instance-type =~ g2.* and attribute:ecs.availability-zone != us-east-1d
```

**Exemple : affinité des tâches**  
L'expression suivante sélectionne des instances qui hébergent des tâches dans le groupe `service:production`.

```
task:group == service:production
```

**Exemple : anti-affinité des tâches**  
L'expression suivante sélectionne des instances qui n'hébergent pas de tâches dans le groupe de base de données.

```
not(task:group == database)
```

**Exemple : nombre de tâches en cours d'exécution**  
L'expression suivante sélectionne des instances qui n'exécutent qu'une seule tâche.

```
runningTasksCount == 1
```

**Exemple : version de l'agent de conteneur Amazon ECS**  
L'expression suivante sélectionne des instances qui exécutent une version de l'agent de conteneur antérieure à 1.14.5.

```
agentVersion < 1.14.5
```

**Exemple : Date d'enregistrement d'instance**  
L'expression suivante sélectionne des instances qui ont été enregistrées avant le 13 février 2018.

```
registeredAt < 2018-02-13
```

**Exemple : ID d'instance Amazon EC2**  
L'expression suivante sélectionne des instances avec l'instance Amazon EC2 suivante. IDs

```
ec2InstanceId in ['i-abcd1234', 'i-wxyx7890']
```

# Exemple de contraintes de placement de tâche Amazon ECS
<a name="constraint-examples"></a>

Voici des exemples de contraintes de placement des tâches.

Cet exemple utilise la contrainte `memberOf` pour placer des tâches sur des instances t2. Il peut être spécifié à l'aide des actions suivantes : [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html), et [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

```
"placementConstraints": [
    {
        "expression": "attribute:ecs.instance-type =~ t2.*",
        "type": "memberOf"
    }
]
```

L'exemple utilise la contrainte `memberOf` pour placer des tâches de réplica sur des instances avec des tâches dans le groupe de tâches `daemon-service` du service démon, en respectant les stratégies de placement des tâches qui sont également spécifiées. Cette contrainte garantit que les tâches de service démon sont placées sur l'instance EC2 avant les tâches de service de réplica.

Remplacez `daemon-service` par le nom du service démon.

```
"placementConstraints": [
    {
        "expression": "task:group == service:daemon-service",
        "type": "memberOf"
    }
]
```

L'exemple utilise la contrainte `memberOf` pour placer des tâches sur des instances avec d'autres tâches dans le groupe de tâches `databases`, en respectant les stratégies de placement des tâches qui sont également spécifiées. Pour de plus amples informations sur les groupes de tâches, veuillez consulter [Tâches Amazon ECS liées au groupe](task-groups.md). Il peut être spécifié à l'aide des actions suivantes : [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), [RegisterTaskDefinition](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RegisterTaskDefinition.html), et [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html).

```
"placementConstraints": [
    {
        "expression": "task:group == databases",
        "type": "memberOf"
    }
]
```

La contrainte `distinctInstance` place chaque tâche du groupe sur une instance différente. Il peut être spécifié à l'aide des actions suivantes : [CreateService[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html), et [RunTask](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html)

Amazon ECS examine le statut souhaité des tâches pour le placement des tâches. Par exemple, si le statut souhaité de la tâche existante est `STOPPED` (mais que le dernier statut ne l’est pas), une nouvelle tâche entrante peut être placée sur la même instance malgré la contrainte de placement `distinctInstance`. En conséquence, vous pouvez voir deux tâches dont le dernier statut est `RUNNING` sur la même instance.

```
"placementConstraints": [
    {
        "type": "distinctInstance"
    }
]
```

# Tâches autonomes Amazon ECS
<a name="standalone-tasks"></a>

Vous pouvez exécuter votre application en tant que tâche lorsqu'une application exécute un certain travail, puis s'arrête, par exemple un traitement par lots. Si vous souhaitez exécuter une tâche une seule fois, vous pouvez utiliser la console AWS CLI, APIs, ou SDKs.

Si vous devez exécuter votre application selon un calendrier basé sur un tarif, un cron ou un calendrier unique, vous pouvez créer un calendrier à l'aide du planificateur. EventBridge 

## Flux de travail des tâches
<a name="task-workflow"></a>

Lorsque vous lancez des tâches Amazon ECS (tâches autonomes ou par les services Amazon ECS), une tâche est créée et passe initialement à l’état `PROVISIONING`. Lorsqu’une tâche est dans l’état `PROVISIONING`, ni la tâche ni les conteneurs n’existent, car Amazon ECS a besoin de trouver la capacité de calcul pour placer la tâche.

Amazon ECS sélectionne la capacité de calcul appropriée pour votre tâche en fonction de votre type de lancement ou de la configuration de votre fournisseur de capacité. Vous pouvez utiliser des fournisseurs de capacité et des stratégies de fournisseur de capacité avec Fargate et EC2. Avec Fargate, vous n’avez pas à penser à l’allocation, à la configuration et à la mise à l’échelle de la capacité de votre cluster. Fargate s'occupe de toute la gestion de l'infrastructure pour vos tâches. Pour EC2, vous pouvez soit gérer la capacité de votre cluster en enregistrant des instances Amazon EC2 dans votre cluster, soit utiliser l’autoscaling de cluster pour simplifier la gestion de votre capacité de calcul. L’autoscaling de cluster prend en charge la mise à l’échelle dynamique de la capacité de votre cluster, afin que vous puissiez vous concentrer sur l’exécution des tâches. Amazon ECS détermine où la placer en fonction des exigences que vous spécifiez dans la définition de tâche, par exemple l’UC et la mémoire, ainsi que vos contraintes et stratégies de placement. Pour plus d'informations, consultez, [Comment Amazon ECS place les tâches sur des instances de conteneur](task-placement.md).

Si vous utilisez un fournisseur de capacité pour lequel la mise à l’échelle gérée est activée, les tâches qui ne peuvent pas être lancées en raison d’un manque de capacité de calcul sont placées dans l’état `PROVISIONING` plutôt que d’échouer immédiatement. Après avoir trouvé la capacité de placer votre tâche, Amazon ECS fournit les pièces jointes nécessaires (par exemple, Elastic Network Interfaces (ENIs) pour les tâches en `awsvpc` mode). Il utilise l’agent de conteneur Amazon ECS pour extraire les images de vos conteneurs, puis les démarrer. Une fois l’allocation terminée et les conteneurs concernés lancés, Amazon ECS fait passer la tâche à l’état `RUNNING`. Pour plus d’informations sur les états de tâche, consultez la section [Cycle de vie des tâches Amazon ECS](task-lifecycle-explanation.md).

# Exécution d’une application en tant que tâche Amazon ECS
<a name="standalone-task-create"></a>

Vous pouvez créer une tâche pour un processus ponctuel à l’aide de l’ AWS Management Console.

**Pour créer une tâche autonome (AWS Management Console)**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. La console Amazon ECS vous permet de créer une tâche autonome à partir de la page détaillée de votre cluster ou de la liste de révisions des définitions de tâches. Effectuez les étapes suivantes pour créer votre tâche autonome en fonction de la page de ressource que vous choisissez.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/standalone-task-create.html)

1. Pour **Cluster existant**, choisissez le cluster.

   Choisissez **Créer un cluster** pour exécuter la tâche sur un nouveau cluster

1. Choisissez comment vos tâches sont distribuées dans votre infrastructure de cluster. Sous **Configuration de calcul**, choisissez votre option. Pour utiliser une stratégie de fournisseur de capacité, vous devez configurer vos fournisseurs de capacité au niveau du cluster. 

   Si vous n’avez pas configuré votre cluster pour utiliser un fournisseur de capacité, utilisez plutôt un type de lancement.

   Si vous souhaitez exécuter vos charges de travail sur des instances gérées Amazon ECS, vous devez utiliser l’option de stratégie de fournisseur de capacité.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/standalone-task-create.html)

1. Sous **Configuration du déploiement**, procédez comme suit :

   1. Pour **Définition de tâche**, saisissez la définition de tâche.
**Important**  
La console valide la sélection pour s'assurer que la famille et la révision de définition de tâche sélectionnées sont compatibles avec la configuration de calcul définie.

   1. Pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer.

   1. Pour **Groupe de tâches**, saisissez le nom du groupe de tâches.

1. Si votre définition de tâche utilise le mode réseau `awsvpc`, développez **Networking** (Mise en réseau). Effectuez les étapes suivantes pour spécifier une configuration personnalisée.

   1. Pour **VPC**, sélectionnez le VPC à utiliser.

   1. Pour **Subnets** (Sous-réseaux), sélectionnez un ou plusieurs sous-réseaux du VPC que le planificateur de tâches prend en compte lors du placement de vos tâches.

   1. Pour **Groupe de sécurité**, vous pouvez choisir un groupe de sécurité existant ou en créer un nouveau. Pour utiliser un groupe de sécurité existant, sélectionnez-le et passez à l'étape suivante. Pour créer un nouveau groupe de sécurité, sélectionnez **Create a new security group** (Créer un nouveau groupe de sécurité). Vous devez spécifier un nom de groupe de sécurité et une description, puis ajouter une ou plusieurs règles entrantes pour le groupe de sécurité.

   1. Pour **Public IP (Adresse IP publique)**, indiquez si vous voulez attribuer automatiquement une adresse IP publique à l'interface réseau Elastic (ENI) de la tâche.

      AWS Fargate les tâches peuvent se voir attribuer une adresse IP publique lorsqu'elles sont exécutées dans un sous-réseau public afin qu'elles disposent d'une route vers Internet. Il n’est pas possible d’attribuer une adresse IP publique aux tâches EC2 à l’aide de ce champ. Pour plus d’informations, consultez les sections [Options de mise en réseau des tâches Amazon ECS pour Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html) et [Allocation d’une interface réseau pour une tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html).

1. Si votre tâche utilise un volume de données compatible avec la configuration lors du déploiement, vous pouvez configurer le volume en développant **Volume**.

   Le nom et le type de volume sont configurés lors de la création d’une révision de définition de tâche et ne peuvent pas être modifiés lorsque vous exécutez une tâche autonome. Pour mettre à jour le nom et le type du volume, vous devez créer une révision de définition de tâche et exécuter une tâche à l’aide de cette nouvelle révision.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/standalone-task-create.html)

1. (Facultatif) Pour utiliser une stratégie de placement des tâches autre que la stratégie par défaut, développez **Task Placement** (Placement des tâches), puis choisissez parmi les options suivantes.

    Pour de plus amples informations, veuillez consulter [Comment Amazon ECS place les tâches sur des instances de conteneur](task-placement.md).
   + **Répartition équilibrée par AZ** : permet de répartir les tâches entre les zones de disponibilité et les instances de conteneur de la zone de disponibilité.
   + **AZ Balanced BinPack** — Répartissez les tâches entre les zones de disponibilité et entre les instances de conteneur disposant du moins de mémoire disponible.
   + **BinPack**— Répartissez les tâches en fonction de la quantité minimale de processeur ou de mémoire disponible.
   + **Une tâche par hôte** : permet de placer au maximum une tâche du service sur chaque instance de conteneur.
   + **Personnalisé** : permet de définir votre propre stratégie de placement des tâches. 

   Si vous avez choisi **Custom** (Personnaliser), définissez l'algorithme de placement des tâches et les règles à prendre en compte lors du placement des tâches.
   + Sous **Strategy** (Stratégie), pour **Type** et **Field** (Champ), choisissez l'algorithme et l'entité à utiliser pour l'algorithme.

     Vous pouvez saisir jusqu'à 5 stratégies maximum.
   + Sous **Contrainte**, pour **Type** et **Expression**, choisissez la règle et l'attribut pour la contrainte.

     Par exemple, pour définir la contrainte permettant de placer des tâches sur des instances T2, pour **Expression**, saisissez **attribute:ecs.instance-type =\$1 t2.\$1**.

     Vous pouvez saisir jusqu'à 10 contraintes maximum.

1. (Facultatif) Pour remplacer le rôle IAM de la tâche ou le rôle d'exécution de tâches défini dans votre définition de tâche, développez**Task overrides** (Remplacements de tâche), puis effectuez les étapes suivantes :

   1. Pour **Rôle de tâche**, choisissez un rôle IAM pour cette tâche. Pour de plus amples informations, veuillez consulter [rôle IAM de tâche Amazon ECS](task-iam-roles.md).

      Seuls les rôles possédant une relation d'approbation `ecs-tasks.amazonaws.com` sont affichés. Pour savoir comment créer un rôle IAM pour vos tâches, consultez [Création du rôle IAM de tâche](task-iam-roles.md#create_task_iam_policy_and_role).

   1. Pour **Rôle d'exécution de tâche**, choisissez un rôle d'exécution de tâche. Pour de plus amples informations, veuillez consulter [Rôle IAM d'exécution de tâche Amazon ECS](task_execution_IAM_role.md).

1. (Facultatif) Pour remplacer les commandes du conteneur et les variables d'environnement, développez **Container Overrides** (Remplacements de conteneurs), puis développez le conteneur.
   +  Pour envoyer une commande au conteneur autre que la commande de définition de tâche, dans **Remplacement de commande**, saisissez la commande Docker.
   + Pour ajouter une variable d'environnement, choisissez **Add Environment Variable** (Ajouter une variable d'environnement). Pour **Key** (Clé), saisissez le nom de votre variable d'environnement. Pour **Value** (Valeur), saisissez une valeur de chaîne pour la valeur d'environnement (sans guillemets doubles (`" "`)).

     AWS entoure les chaînes de guillemets doubles (» «) et transmet la chaîne au conteneur au format suivant :

     ```
     MY_ENV_VAR="This variable contains a string."
     ```

1. (Facultatif) Pour vous aider à identifier votre tâche, développez **Tags** (balises), puis configurez vos balises.

   Pour qu'Amazon ECS étiquette automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez **Turn on Amazon ECS managed tags** (Activer les balises gérées par Amazon ECS), puis sélectionnez **Task definitions** (Définitions de tâches).

   Ajoutez ou supprimez une balise.
   + [Ajouter une balise] Choisissez **Add tag** (Ajouter une balise), puis procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

1. Choisissez **Créer**.

# Utilisation d'Amazon EventBridge Scheduler pour planifier des tâches Amazon ECS
<a name="tasks-scheduled-eventbridge-scheduler"></a>

EventBridge Le planificateur est un planificateur sans serveur qui vous permet de créer, d'exécuter et de gérer des tâches à partir d'un service géré centralisé. Il fournit une fonctionnalité de planification ponctuelle et récurrente indépendamment des bus et des règles de l'événement. EventBridge Le planificateur est hautement personnalisable et offre une évolutivité améliorée par rapport aux règles EventBridge planifiées, avec un ensemble plus large d'opérations et de services d'API cibles. AWS EventBridge Le planificateur fournit les plannings suivants que vous pouvez configurer pour vos tâches dans la console du EventBridge planificateur :
+ Basé sur un taux 
+ Basées sur cron

  Vous pouvez configurer des planifications basées sur cron dans n'importe quel fuseau horaire.
+ Planifications ponctuelles

  Vous pouvez configurer des planifications ponctuelles dans n'importe quel fuseau horaire.

Vous pouvez planifier votre Amazon ECS à l'aide d'Amazon EventBridge Scheduler.

Bien que vous puissiez créer une tâche planifiée dans la console Amazon ECS, la console EventBridge Scheduler fournit actuellement davantage de fonctionnalités.

Respectez les étapes suivantes avant de planifier une tâche :

1. Utilisez la console VPC pour obtenir le sous-réseau sur IDs lequel les tâches s'exécutent et le groupe de sécurité IDs pour les sous-réseaux. Pour plus d'informations, consultez les sections [Sous-réseaux pour votre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html) [et Contrôlez le trafic vers AWS vos ressources à l'aide de groupes de sécurité](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html) dans le guide de l'utilisateur *Amazon VPC*.

1. Configurez le EventBridge rôle d'exécution du planificateur. Pour plus d'informations, consultez la section [Configurer le rôle d'exécution](https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html#setting-up-execution-role) dans le guide de l'*utilisateur d'Amazon EventBridge Scheduler*. 

1. Si vous souhaitez utiliser une stratégie de fournisseur de capacité pour exécuter la tâche, vous devez disposer d’un fournisseur de capacité associé au cluster.

**Pour créer une planification à l'aide de la console**

1. [Ouvrez la console Amazon EventBridge Scheduler à https://console.aws.amazon.com/scheduler/ la maison.](https://console.aws.amazon.com/scheduler/home/)

1.  Sur la page **Planifications**, choisissez **Créer une planification**. 

1.  Sur la page **Spécifier le détail de la planification**, dans la section **Nom et description de la planification**, procédez comme suit : 

   1. Pour **Nom de la planification**, saisissez un nom à attribuer à votre planification. Par exemple, **MyTestSchedule**. 

   1. (Facultatif) Dans le champ **Description**, saisissez une description de la planification. Par exemple, **TestSchedule**.

   1. Pour **Groupe de planifications**, choisissez un groupe de planifications. Si vous n’avez pas de groupe, choisissez par **défaut**. Pour créer un groupe de planifications, choisissez **Crée votre propre planification**. 

      Vous utilisez des groupes de planifications pour leur ajouter des balises. 

1. Choisissez vos options de planification.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

1. (Facultatif) Si vous avez choisi **Planification récurrente** à l’étape précédente, dans la section **Délai**, procédez comme suit : 

   1. Dans le champ **Fuseau horaire**, choisissez un fuseau horaire. 

   1. Pour **Date et heure de début**, entrez une date valide au format `YYYY/MM/DD`, puis spécifiez un horodatage au format `hh:mm` de 24 heures. 

   1. Pour **Date et heure de fin**, entrez une date valide au format `YYYY/MM/DD`, puis spécifiez un horodatage au format `hh:mm` de 24 heures. 

1. Choisissez **Suivant**. 

1. Sur la page **Sélectionner une cible**, procédez comme suit : 

   1. Choisissez **Tout APIs**, puis entrez **ECS** dans la zone de recherche. 

   1. Sélectionnez **Amazon ECS**.

   1. Dans la zone de recherche **RunTask**, entrez, puis choisissez **RunTask**.

   1. Pour **Cluster ECS**, choisissez le cluster.

   1. Pour **Tâche ECS**, choisissez la définition de tâche à utiliser pour la tâche.

   1. Choisissez comment vos tâches sont distribuées dans votre infrastructure de cluster. Développez **Options de calcul**, puis choisissez l’une des options suivantes    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. Pour les **sous-réseaux**, entrez le sous-réseau dans IDs lequel exécuter la tâche.

   1. Pour les **groupes de sécurité**, entrez le groupe IDs de sécurité du sous-réseau.

   1. (Facultatif) Pour utiliser une stratégie de placement des tâches autre que la stratégie par défaut, développez **Contrainte de placement**, puis saisissez les contraintes.

       Pour de plus amples informations, veuillez consulter [Comment Amazon ECS place les tâches sur des instances de conteneur](task-placement.md).

   1. (Facultatif) Pour vous aider à identifier vos tâches, sous **Balises**, configurez vos balises.

      Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec les balises de définition des tâches, sélectionnez **Activer les balises gérées par Amazon ECS**.

1. Choisissez **Suivant**. 

1. Sur la page **Settings (Paramètres)**, procédez comme suit : 

   1. Pour activer la planification, sous **État de la planification**, activez **Activer la planification**. 

   1. Pour configurer une stratégie de nouvelles tentatives pour votre planification, sous **Politique de nouvelle tentative et file d’attente de lettres mortes (DLQ)**, procédez comme suit :
      + Activez **Réessayer**.
      + Pour **Durée maximale de rétention de l'événement**, entrez le nombre maximum d'**heures** et de **minutes pendant lequel** le EventBridge planificateur doit conserver un événement non traité.
      + La durée maximale est 24 heures.
      + Pour Nombre **maximum de tentatives**, entrez le nombre maximum de fois que le EventBridge planificateur réessaie le calendrier si la cible renvoie une erreur. 

         La valeur maximale est 185 nouvelles tentatives. 

      Avec les politiques de nouvelle tentative, si un calendrier ne parvient pas à invoquer sa cible, le EventBridge planificateur le réexécute. Si elle est configurée, vous devez définir la durée de rétention maximale et les nouvelles tentatives pour la planification.

   1. Choisissez l'endroit où EventBridge Scheduler stocke les événements non livrés.     
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. Pour utiliser une clé gérée par le client afin de chiffrer votre entrée cible, sous **Chiffrement**, choisissez **Personnaliser les paramètres de chiffrement (avancé)**. 

      Si vous choisissez cette option, entrez un ARN de clé KMS existant ou choisissez **Créez un AWS KMS key**pour accéder à la console AWS KMS . Pour plus d'informations sur la manière dont EventBridge Scheduler chiffre vos données au repos, consultez la section [Chiffrement au repos dans le guide de l'utilisateur](https://docs.aws.amazon.com/scheduler/latest/UserGuide/encryption-rest.html) d'*Amazon EventBridge Scheduler*. 

   1. Pour **Autorisations**, choisissez **Utiliser le rôle existant**, puis sélectionnez le rôle.

      Pour que le EventBridge planificateur crée un nouveau rôle d'exécution pour vous, choisissez **Créer un nouveau rôle pour ce** calendrier. Ensuite, saisissez un nom pour **Nom du rôle**. Si vous choisissez cette option, le EventBridge planificateur associe au rôle les autorisations requises pour votre cible modélisée. 

1. Choisissez **Suivant**. 

1.  Sur la page **Examiner et créer une planification**, examinez les détails de votre planification. Dans chaque section, choisissez **Modifier** pour revenir à cette étape et modifier ses détails. 

1. Choisissez **Créer une planification**. 

   Vous pouvez consulter la liste de vos planifications nouvelles et existantes sur la page **Planifications**. Sous la colonne **État**, vérifiez que votre nouvelle planification est **activée**. 

## Étapes suivantes
<a name="eventbridge-scheduler-next-steps"></a>

Vous pouvez utiliser la console du EventBridge planificateur ou le AWS CLI pour gérer le calendrier. Pour plus d'informations, consultez [la section Gérer un calendrier](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule.html) dans le guide de l'*utilisateur d'Amazon EventBridge Scheduler*.

# Arrêt d’une tâche Amazon ECS
<a name="standalone-task-stop"></a>

Si vous n’avez plus besoin de maintenir une tâche autonome en cours d’exécution, vous pouvez arrêter la tâche. La console Amazon ECS permet d’arrêter facilement une ou plusieurs tâches.

Vous ne pouvez pas redémarrer une tâche autonome arrêtée.

Si vous souhaitez arrêter un service, consultez la section [Suppression d’un service Amazon ECS à l’aide de la console](delete-service-v2.md).

**Pour arrêter une tâche autonome (AWS Management Console)**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, choisissez le cluster pour accéder à la page de détails du cluster.

1. Sur la page de détails du cluster, choisissez l’onglet **Tâches**. 

1. Vous pouvez filtrer les tâches par type de lancement à l’aide de la liste **Filtrer par type de lancement**.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/standalone-task-stop.html)

# Services Amazon ECS
<a name="ecs_services"></a>

Vous pouvez utiliser un service Amazon ECS service pour exécuter et gérer simultanément un nombre spécifié d'instances d'une définition de tâche dans un cluster Amazon ECS. Si l'une de vos tâches échoue ou s'arrête, le planificateur de service d'Amazon ECS service lance une autre instance de votre définition de tâche pour la remplacer. Cela permet de maintenir le nombre de tâches souhaité dans le service.

Le cas échéant, vous pouvez également exécuter votre service derrière un équilibreur de charge. Cet équilibreur de charge répartit le trafic sur les tâches associées au service.

Nous vous recommandons d'utiliser le planificateur de service pour les services et applications sans état de longue durée. Le planificateur de service garantit que la stratégie de planification que vous spécifiez est suivie et replanifie les tâches en cas d'échec de l'une d'elles. Par exemple, si l'infrastructure sous-jacente échoue, le planificateur de services replanifie une tâche. Vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont le planificateur place et résilie les tâches. Si une tâche d'un service s'arrête, le planificateur lance une nouvelle tâche pour la remplacer. Ce processus se poursuit jusqu'à ce que votre service atteigne le nombre de tâches souhaité en fonction de la stratégie de planification que le service utilise.

Le planificateur de services remplace également les tâches jugées défectueuses après l'échec d'une surveillance de l'état du conteneur ou du groupe cible de l'équilibreur de charge. Ce remplacement dépend des paramètres de définition du service `maximumPercent` et `desiredCount`. Si une tâche est marquée comme défectueuse, le planificateur de services lance d'abord une tâche de remplacement. Ensuite, voici ce qui se passe.
+ Si l’état de la tâche de remplacement est `HEALTHY`, le planificateur de service arrête la tâche défectueuse.
+ Si l'état de santé de la tâche de remplacement est `UNHEALTHY`, le planificateur arrête soit la tâche de remplacement défectueuse, soit la tâche défectueuse existante pour que le nombre total de tâches soit égal à `desiredCount`.

Si le paramètre `maximumPercent` empêche le planificateur de démarrer d'abord une tâche de remplacement, le planificateur arrête une par une les tâches défectueuses au hasard pour libérer de la capacité, puis lance une tâche de remplacement. Le processus de démarrage et d'arrêt se poursuit jusqu'à ce que toutes les tâches défectueuses soient remplacées par des tâches saines. Une fois que toutes les tâches défectueuses ont été remplacées et que seules les tâches saines sont en cours d'exécution, si le nombre total de tâches dépasse le `desiredCount`, les tâches saines sont arrêtées au hasard jusqu'à ce que le nombre total de tâches soit égal à `desiredCount`. Pour plus d'informations sur `maximumPercent` et `desiredCount`, veuillez consulter [Paramètres de définition de service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html) (langue française non garantie).

Le planificateur de service inclut une logique qui limite la fréquence de redémarrage des tâches en cas d'échec de démarrage répété. Si une tâche est arrêtée sans avoir saisi d'état `RUNNING`, le planificateur de service commence à réduire les tentatives de lancement et envoie un message d'événement de service. Ce comportement évite d'utiliser inutilement les ressources pour des tâches qui ont échoué avant que vous puissiez résoudre le problème. Une fois le service mis à jour, le planificateur de service se comporte de nouveau normalement. Pour plus d’informations, consultez [Logique de limitation d’un service Amazon ECS](service-throttle-logic.md) et [Affichage des messages d’événement d’un service Amazon ECS](service-event-messages.md).

## Option de calcul d’infrastructure
<a name="service-conmpute-options"></a>

Deux options de calcul permettent de distribuer vos tâches.
+ Une capacity provider strategy (stratégie de fournisseurs de capacités) permet à Amazon ECS de distribuer vos tâches avec un ou plusieurs fournisseurs de capacité. 

  Si vous souhaitez exécuter vos charges de travail sur des instances gérées Amazon ECS, vous devez utiliser l’option de stratégie de fournisseur de capacité.

  Pour la **stratégie des fournisseurs de capacités**, la console sélectionne une option de calcul par défaut. Voici l'ordre utilisé par la console pour sélectionner une valeur par défaut :
  + Si votre cluster a une stratégie de fournisseur de capacité définie par défaut, elle est sélectionnée.
  + Si votre cluster n’a pas de stratégie de fournisseur de capacité par défaut définie, mais que les fournisseurs de capacité Fargate ont été ajoutés au cluster, une stratégie de fournisseur de capacité personnalisée qui utilise le fournisseur de capacité `FARGATE` est sélectionnée.
  + Si votre cluster ne dispose pas d’une stratégie de fournisseur de capacité par défaut définie, mais qu’un ou plusieurs fournisseurs de capacité de groupe Auto Scaling ont été ajoutés au cluster, l’option **Utiliser une stratégie personnalisée (avancée)** est sélectionnée et vous devez définir manuellement la stratégie.
  + Si votre cluster n'a pas de stratégie de fournisseur de capacité par défaut définie et qu'aucun fournisseur de capacité n'est ajouté au cluster, le type de lancement Fargate est sélectionné.
+ Un type de lancement permet à Amazon ECS de lancer vos tâches directement sur Fargate ou sur les instances EC2 enregistrées dans vos clusters.

  Si vous souhaitez exécuter vos charges de travail sur des instances gérées Amazon ECS, vous devez utiliser l’option de stratégie de fournisseur de capacité.

  Par défaut, le service démarre dans les sous-réseaux de votre VPC de cluster.

## Mise à l'échelle automatique du service
<a name="service-auto-scaling-options"></a>

L’autoscaling du service est la capacité à augmenter ou diminuer automatiquement le nombre souhaité de tâches dans votre service Amazon ECS. Amazon ECS utilise le service Application Auto Scaling pour fournir cette fonctionnalité.

Pour de plus amples informations, veuillez consulter [Mise à l’échelle automatique de votre service Amazon ECS](service-auto-scaling.md).

## Équilibrage de charge des services
<a name="service-load-balancing-options"></a>

Les services Amazon ECS hébergés sur ce site AWS Fargate prennent en charge les équilibreurs de charge d'application, les équilibreurs de charge réseau et les équilibreurs de charge de passerelle. Utilisez le tableau suivant pour savoir quel type d’équilibreur de charge utiliser.


| Type d’équilibreur de charge | À utiliser dans les cas suivants | 
| --- | --- | 
|  Application Load Balancer  | Trafic routier HTTP/HTTPS (ou couche 7).Les équilibreurs de charge Application Load Balancer offrent plusieurs fonctions qui les rendent intéressants à utiliser avec les services Amazon ECS service : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/ecs_services.html) | 
| Network Load Balancer | Acheminer le trafic TCP ou UDP (ou couche 4). | 
| Passerelle équilibreur de charge | Acheminer le trafic TCP ou UDP (ou couche 4). Utiliser des appareils virtuels, tels que des pare-feu, des systèmes de détection et de prévention des intrusions et des systèmes d’inspection approfondie des paquets. | 

Pour de plus amples informations, veuillez consulter [Utilisation de l’équilibrage de charge pour répartir le trafic des services Amazon ECS](service-load-balancing.md).

## Services d’interconnexion
<a name="service-connecting-options"></a>

Si vous avez besoin d’une application pour vous connecter à d’autres applications qui s’exécutent en tant que services Amazon ECS, Amazon ECS propose les méthodes suivantes pour y parvenir sans équilibreur de charge :
+ Service Connect : permet des service-to-service communications avec détection automatique à l'aide de noms abrégés et de ports standard.
+ Découverte de service : la découverte de service utilise Route 53 pour créer un espace de noms pour votre service, ce qui permet de le découvrir via le DNS.
+ Amazon VPC Lattice - VPC Lattice est un service de mise en réseau d'applications entièrement géré permettant de connecter, de sécuriser et de surveiller vos services sur plusieurs comptes et. VPCs Un coût y est associé.

Pour de plus amples informations, veuillez consulter [Interconnexion des services Amazon ECS](interconnecting-services.md).

# Contrôleurs et stratégies de déploiement de service Amazon ECS
<a name="ecs_service-options"></a>

Avant de déployer votre service, déterminez les options de déploiement et les fonctionnalités utilisées par le service.

## Stratégie de planification
<a name="service-strategy"></a>

Deux stratégies de planificateur de service sont disponibles :
+ `REPLICA` – La stratégie de planification des réplicas place et gère le nombre de tâches souhaité dans votre cluster. Par défaut, le planificateur de service répartit les tâches entre les zones de disponibilité. Vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont les tâches sont placées. Pour de plus amples informations, veuillez consulter [Stratégie de planification de réplica](#service_scheduler_replica).
+ `DAEMON` – La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Lors de l'utilisation de cette stratégie, il n'est pas nécessaire de spécifier un nombre de tâches souhaité, une stratégie de placement des tâches ou d'utiliser les politiques Service Auto Scaling. Pour de plus amples informations, veuillez consulter [Stratégie de planification de démon](#service_scheduler_daemon).
**Note**  
Les tâches Fargate ne prennent pas en charge la stratégie de planification `DAEMON`.

### Stratégie de planification de réplica
<a name="service_scheduler_replica"></a>

La stratégie de planification de *réplica* place et gère le nombre de tâches souhaité dans votre cluster.

Pour un service qui exécute des tâches sur Fargate, lorsque le planificateur de service lance de nouvelles tâches ou cesse l'exécution des tâches, le planificateur de service tente de maintenir un équilibre entre les zones de disponibilité de votre service. Vous n'avez pas besoin de préciser les stratégies ou les contraintes de placement des tâches.

Lorsque vous créez un service qui exécute des tâches sur des instances EC2, vous pouvez, si vous le souhaitez, spécifier des stratégies et des contraintes de placement de tâches afin de personnaliser les décisions relatives à cette opération. Si aucune stratégie ou contrainte de placement de tâche n'est spécifiée, le planificateur de service répartit les tâches entre les zones de disponibilité par défaut. Le planificateur de service utilise la logique suivante :
+ Détermine les instances de conteneur de votre cluster susceptibles de prendre en charge la définition de tâche de votre service (par exemple, avec le processeur, la mémoire, les ports et les attributs d'instances de conteneur exigés).
+ Détermine les instances de conteneur qui respectent les contraintes de placement éventuellement définies pour le service.
+ Lorsqu'un service de réplica dépend d'un service démon (par exemple, une tâche de routeur de journaux démon qui doit être exécutée avant que les tâches puissent utiliser la journalisation), créez une contrainte de placement des tâches qui garantit que les tâches du service démon sont placées sur l'instance EC2 avant les tâches du service de réplica. Pour de plus amples informations, veuillez consulter [Exemple de contraintes de placement de tâche Amazon ECS](constraint-examples.md).
+ Lorsqu'une stratégie de placement est définie, utilisez-la pour sélectionner une instance parmi les candidats restants.
+ Lorsqu'aucune stratégie de placement n'est définie, utilisez la logique suivante pour équilibrer les tâches entre les zones de disponibilité (Availability Zones) de votre cluster :
  + Trie les instances de conteneur valides. Accorde la priorité aux instances ayant le plus petit nombre de tâches en cours d'exécution pour ce service dans leur zone de disponibilité respective. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C n'en ont pas, les instances de conteneur valides des zones B ou C sont considérées comme optimales pour le placement.
  + Place la nouvelle tâche de service sur une instance de conteneur valide dans une zone de disponibilité optimale basée sur les étapes précédentes. Privilégie les instances de conteneur ayant le plus petit nombre de tâches en cours d'exécution pour ce service.

Nous vous recommandons d’utiliser la fonctionnalité de rééquilibrage des services lorsque vous utilisez la stratégie `REPLICA`, car elle permet de garantir la haute disponibilité de votre service.

### Stratégie de planification de démon
<a name="service_scheduler_daemon"></a>

La stratégie de planification du *démon* déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Le planificateur de service évalue les contraintes de placement des tâches pour les tâches en cours d’exécution et arrête les tâches qui ne respectent pas les contraintes de placement. Lorsque vous utilisez cette stratégie, vous n’avez pas besoin de spécifier un nombre souhaité de tâches, une stratégie de placement des tâches ou d’utiliser des politiques Service Auto Scaling.

Amazon ECS réserve des ressources de calcul d'instance de conteneur, y compris le CPU, la mémoire et l'interface réseau pour les tâches de démon. Lorsque vous lancez un service de démon sur un cluster avec d'autres services de réplica, Amazon ECS accorde la priorité à la tâche de démon. Cela signifie que la tâche démon est la première tâche à être lancée sur les instances et la dernière tâche à être arrêtée après l’arrêt de toutes les tâches réplica. Cette stratégie garantit que les ressources ne sont pas utilisées par les tâches de réplica en attente et sont disponibles pour les tâches de démon.

Le planificateur de service du démon ne place aucune tâche sur les instances qui ont un statut `DRAINING`. Si une instance de conteneur passe au statut `DRAINING`, les tâches du démon sont arrêtées. Le planificateur de service surveille également l'ajout de nouvelles instances de conteneur à votre cluster et leur ajoute les tâches du démon.

Lorsque vous spécifiez une configuration de déploiement, la valeur du paramètre `maximumPercent` doit être `100` (spécifiée sous forme de pourcentage), qui est la valeur par défaut utilisée si elle n’est pas définie. La valeur par défaut du paramètre `minimumHealthyPercent` est `0` (spécifiée sous forme de pourcentage).

Vous devez redémarrer le service lorsque vous modifiez les contraintes de placement pour le service de démon. Amazon ECS met à jour dynamiquement les ressources qui sont réservées sur les instances éligibles pour la tâche démon. Pour les instances existantes, le planificateur tente de placer la tâche sur l'instance. 

Un nouveau déploiement démarre lorsqu'il existe une modification de la taille de la tâche ou de la réservation de ressource de conteneur dans la définition de tâche. Un nouveau déploiement démarre également lors de la mise à jour d’un service ou lors de la définition d’une révision différente de la définition de tâche. Amazon ECS récupère les réservations de CPU et de mémoire mises à jour pour le démon, puis bloque cette capacité pour la tâche démon.

Si les ressources sont insuffisantes pour l'un ou l'autre des cas ci-dessus, l'une des situations suivantes se produit :
+ Le placement de la tâche échoue.
+ Un CloudWatch événement est généré.
+ Amazon ECS continue d'essayer de planifier la tâche sur l'instance en attendant que les ressources soient disponibles. 
+ Amazon ECS libère toutes les instances réservées qui ne répondent plus aux critères de contrainte de placement et arrête les tâches démon correspondantes.

La stratégie de planification de démon peut être utilisée dans les cas suivants :
+ Exécution de conteneurs d'applications
+ Exécution de conteneurs de support pour les tâches de journalisation, de surveillance et de suivi

Les tâches qui utilisent Fargate ou les types de contrôleur de déploiement `CODE_DEPLOY` ou `EXTERNAL` ne prennent pas en charge la stratégie de planification de démon.

Lorsque le planificateur de service arrête d'exécuter les tâches, il tente de conserver un équilibre entre les zones de disponibilité de votre cluster. Le planificateur utilise la logique suivante : 
+ Si une stratégie de placement est définie, utilisez cette stratégie pour sélectionner les tâches à résilier. Par exemple, si une stratégie de répartition par zone de disponibilité est définie pour un service, une tâche est sélectionnée, laissant ainsi aux tâches restantes la meilleure répartition.
+ Si aucune stratégie de placement n'est définie, maintenez l'équilibre entre les zones de disponibilité de votre cluster selon la logique suivante :
  + Triez les instances de conteneur valides. Accordez la priorité aux instances ayant le plus grand nombre de tâches en cours d'exécution pour ce service dans leur zone de disponibilité respective. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C en ont chacune deux tâches de service en cours d'exécution, les instances de conteneur des zones B ou C sont considérées comme optimales pour la mise hors service.
  + Arrêtez la tâche sur une instance de conteneur dans une zone de disponibilité optimale basée sur les étapes précédentes. Privilégier les instances de conteneur ayant le plus grand nombre de tâches en cours d'exécution pour ce service.

## Contrôleurs de déploiement
<a name="service_deployment-controllers"></a>

Le contrôleur de déploiement est le mécanisme qui détermine la manière dont les tâches sont déployées pour votre service. Les options valides sont :
+ ECS

  Lorsque vous créez un service qui utilise le contrôleur de déploiement `ECS`, vous pouvez choisir entre les stratégies de déploiement suivantes :
  + `ROLLING` : lorsque vous démarrez un service qui utilise la stratégie de déploiement *Mise à jour propagée* (`ROLLING`), le planificateur de service Amazon ECS remplace les tâches en cours d’exécution par de nouvelles tâches. Le nombre de tâches ajoutées au service ou supprimées du service par Amazon ECS lors d'une mise à jour propagée est contrôlé par la configuration de déploiement du service. 

    Les déploiements de mises à jour continues sont les mieux adaptés aux scénarios suivants :
    + Mises à jour progressives du service : vous devez mettre à jour votre service de manière incrémentielle sans mettre l’ensemble du service hors ligne en une seule fois.
    + Besoins en ressources limités : vous souhaitez éviter les coûts supplémentaires liés à l’exploitation simultanée de deux environnements complets (comme l’exigent les déploiements bleu/vert).
    + Durée de déploiement acceptable : votre application peut tolérer un processus de déploiement plus long, car les mises à jour progressives remplacent les tâches une par une.
    + Restauration instantanée non requise : votre service peut tolérer un processus de restauration qui prend quelques minutes au lieu de quelques secondes.
    + Processus de déploiement simple : vous préférez une approche de déploiement simple, sans la complexité liée à la gestion de plusieurs environnements, groupes cibles et écouteurs.
    + Aucun équilibreur de charge requis : votre service n'utilise ni n'exige d'équilibreur de charge, d'Application Load Balancer, de Network Load Balancer ou de Service Connect (qui sont nécessaires pour les déploiements). blue/green 
    + Applications avec état : votre application conserve un état qui rend difficile l’exécution de deux environnements parallèles.
    + Sensibilité aux coûts : vous souhaitez minimiser les coûts de déploiement en évitant d’exécuter des environnements en double pendant le déploiement.

    Les mises à jour propagées constituent la stratégie de déploiement par défaut pour les services et fournissent un équilibre entre la sécurité du déploiement et l’efficacité des ressources pour de nombreux scénarios d’application courants.
  + `BLUE_GREEN` : une stratégie de déploiement *bleu/vert* (`BLUE_GREEN`) est une méthodologie de mise en production qui réduit la durée d’indisponibilité et les risques en exécutant deux environnements de production identiques appelés bleu et vert. Avec les blue/green déploiements Amazon ECS, vous pouvez valider les nouvelles révisions des services avant de diriger le trafic de production vers celles-ci. Cette approche fournit un moyen plus sûr de déployer les modifications avec la possibilité de revenir rapidement en arrière si nécessaire.

    Les blue/green déploiements Amazon ECS sont parfaitement adaptés aux scénarios suivants :
    + Validation des services : lorsque vous devez valider les nouvelles révisions de service avant de leur diriger le trafic de production.
    + Aucune durée d’indisponibilité : lorsque votre service nécessite des déploiements sans interruption
    + Restauration instantanée : lorsque vous avez besoin de pouvoir restaurer rapidement votre système si des problèmes sont détectés.
    + Exigence relative à l’équilibreur de charge : lorsque votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect.
  + `LINEAR`: Une stratégie de déploiement *linéaire* (`LINEAR`) déplace progressivement le trafic de l'environnement de production actuel vers un nouvel environnement par incréments de pourcentage égaux sur une période spécifiée. Avec les déploiements linéaires d'Amazon ECS, vous pouvez contrôler le rythme de transfert du trafic et valider les nouvelles révisions de service en fonction de l'augmentation du trafic de production.

    Les déploiements linéaires Amazon ECS sont parfaitement adaptés aux scénarios suivants :
    + Validation progressive : lorsque vous souhaitez valider progressivement votre nouvelle version de service en fonction de l'augmentation du trafic
    + Surveillance des performances : lorsque vous avez besoin de temps pour surveiller les indicateurs et les performances pendant le déploiement
    + Minimisation des risques : lorsque vous souhaitez minimiser les risques en exposant la nouvelle version au trafic de production de manière incrémentielle
    + Exigence relative à l’équilibreur de charge : lorsque votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect.
  + `CANARY`: Une stratégie de déploiement *Canary* (`CANARY`) déplace d'abord un petit pourcentage du trafic vers la nouvelle version du service, puis déplace le trafic restant en une seule fois après une période spécifiée. Cela vous permet de tester la nouvelle version auprès d'un sous-ensemble d'utilisateurs avant le déploiement complet.

    Les déploiements Amazon ECS Canary sont parfaitement adaptés aux scénarios suivants :
    + Test des fonctionnalités : lorsque vous souhaitez tester de nouvelles fonctionnalités auprès d'un petit sous-ensemble d'utilisateurs avant leur déploiement complet
    + Validation de production : lorsque vous devez valider les performances et les fonctionnalités avec un trafic de production réel
    + Contrôle du rayon de souffle : lorsque vous souhaitez minimiser le rayon de souffle si des problèmes sont découverts dans la nouvelle version
    + Exigence relative à l’équilibreur de charge : lorsque votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect.
+ Externe

  Utilisation d’un contrôleur de déploiement tiers.
+ Déploiement bleu/vert (alimenté par) AWS CodeDeploy

  CodeDeploy installe une version mise à jour de l'application en tant que nouvel ensemble de tâches de remplacement et redirige le trafic de production de l'ensemble de tâches d'application d'origine vers le jeu de tâches de remplacement. L'ensemble de tâches d'origine est arrêté après un déploiement réussi. Utilisez ce contrôleur de déploiement pour vérifier le nouveau déploiement d’un service avant de lui envoyer un trafic de production.

# Détection des échecs de déploiement d’Amazon ECS
<a name="deployment-failure-detection"></a>

Amazon ECS propose deux méthodes pour détecter les échecs de déploiement :
+ Disjoncteur de déploiement
+ CloudWatch Alarmes

Les deux méthodes peuvent être configurées pour rétablir automatiquement le dernier bon état connu des déploiements ayant échoué.

Éléments à prendre en compte :
+ Les deux méthodes ne prennent en charge que le déploiement de mises à jour continues et les types de blue/green déploiement.
+ Lorsque les deux méthodes sont utilisées, l’une ou l’autre peut provoquer un échec du déploiement.
+ La méthode de restauration nécessite un déploiement antérieur à l’état TERMINÉ.
+ EventBridge des événements sont générés pour les modifications de l'état du déploiement.

# Détection des pannes par le disjoncteur de déploiement Amazon ECS
<a name="deployment-circuit-breaker"></a>

Le disjoncteur du circuit de déploiement est un mécanisme de mise à jour propagée qui détermine si les tâches atteignent un état stable. Le disjoncteur du circuit de déploiement dispose d'une option qui ramène automatiquement un déploiement ayant échoué à l'état `COMPLETED`.

Lorsqu'un déploiement de service change d'état, Amazon ECS envoie un événement de changement d'état de déploiement de service à EventBridge. Cela permet de surveiller l'état de vos déploiements de services par programmation. Pour de plus amples informations, veuillez consulter [Événements de modification de l’état de déploiement de service Amazon ECS](ecs_service_deployment_events.md). Nous vous recommandons de créer et de surveiller une EventBridge règle avec un `eventName` de `SERVICE_DEPLOYMENT_FAILED` afin de pouvoir effectuer une action manuelle pour démarrer votre déploiement. Pour plus d'informations, consultez [Getting started with EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html) dans le *guide de EventBridge l'utilisateur Amazon*.

Lorsque le disjoncteur du circuit de déploiement détermine qu'un déploiement a échoué, il recherche le déploiement le plus récent à l'état `COMPLETED`. Il s'agit du déploiement qu'il utilise comme déploiement de restauration. Lorsque la restauration commence, le déploiement passe de `COMPLETED` à `IN_PROGRESS`. Cela signifie que le déploiement n’est pas éligible à une autre restauration tant qu’il n’a pas atteint un état `COMPLETED`. Lorsque le disjoncteur du circuit de déploiement ne trouve aucun déploiement à l'état `COMPLETED`, il ne lance pas de nouvelles tâches et le déploiement est bloqué. 

Lorsque vous créez un service, le planificateur assure le suivi des tâches qui n’ont pas pu être lancées en deux étapes.
+ Étape 1 : le planificateur surveille les tâches pour voir si elles passent à l’état EN COURS D’EXÉCUTION.
  + Succès : le déploiement a une chance de passer à l’état TERMINÉ car plusieurs tâches sont passées à l’état EN COURS D’EXÉCUTION. Les critères de défaillance sont ignorés et le disjoncteur passe à l’étape 2.
  + Échec : certaines tâches consécutives ne sont pas passées à l’état EN COURS D’EXÉCUTION et le déploiement peut passer à l’état ÉCHEC. 
+ Étape 2 : le déploiement entre dans cette phase lorsqu’au moins une tâche est EN COURS D’EXÉCUTION. Le disjoncteur vérifie les surveillances de l’état pour les tâches du déploiement actuel en cours d’évaluation. Les contrôles de santé validés sont Elastic Load Balancing, les contrôles de santé des AWS Cloud Map services et les contrôles de santé des conteneurs. 
  + Réussite : au moins une tâche est en cours d’exécution et les surveillances de l’état ont été validées.
  + Échec : les tâches remplacées en raison d’échecs liés aux surveillances de l’état ont atteint le seuil d’échec.

Tenez compte des points suivants lorsque vous utilisez la méthode du disjoncteur de déploiement sur un service. EventBridge génère la règle.
+ La réponse `DescribeServices` donne un aperçu de l'état d'un déploiement, le `rolloutState` et `rolloutStateReason`. Lorsqu'un nouveau déploiement est démarré, il commence avec l'état `IN_PROGRESS`. Lorsque le service atteint un état stable, l'état du déploiement passe à `COMPLETED`. Si le service n'arrive pas à atteindre un état stable et que le disjoncteur de circuit est activé, le déploiement passe à l'état `FAILED`. Un déploiement dans un état `FAILED` ne lance aucune nouvelle tâche.
+ Outre les événements de changement d'état de déploiement de service qu'Amazon ECS envoie pour les déploiements qui ont démarré et se sont terminés, Amazon ECS envoie également un événement lorsqu'un déploiement avec le disjoncteur de circuit activé échoue. Ces événements fournissent des informations sur la raison pour laquelle un déploiement a échoué ou si un déploiement a été démarré en raison d'une restauration. Pour de plus amples informations, veuillez consulter [Événements de modification de l’état de déploiement de service Amazon ECS](ecs_service_deployment_events.md).
+ Si un nouveau déploiement est démarré parce qu'un déploiement précédent a échoué et que la restauration a eu lieu, le champ `reason` de l'événement de changement d'état de déploiement de service indique que le déploiement a été démarré en raison d'une restauration.
+ Le disjoncteur de circuit de déploiement est pris en charge uniquement pour les services Amazon ECS qui utilisent le contrôleur de déploiement de la mise à jour continue (`ECS`).
+ Vous devez utiliser la console Amazon ECS, ou AWS CLI lorsque vous utilisez le disjoncteur de déploiement avec l' CloudWatch option. Pour plus d'informations, consultez [Créer un service à l'aide de paramètres définis](create-service-console-v2.md#create-custom-service) et [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html) dans la *Référence AWS Command Line Interface *.

L'`create-service` AWS CLI exemple suivant montre comment créer un service Linux lorsque le disjoncteur de déploiement est utilisé avec l'option de restauration.

```
aws ecs create-service \
     --service-name MyService \
     --deployment-controller type=ECS \
     --desired-count 3 \
     --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}" \
     --task-definition sample-fargate:1 \
     --launch-type FARGATE \
     --platform-family LINUX \
     --platform-version 1.4.0 \
     --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"
```

Exemple :

Le déploiement 1 est à l'état `COMPLETED`.

Le déploiement 2 ne pouvant pas démarrer, le disjoncteur du circuit revient au déploiement 1. Le déploiement 1 passe à l'état `IN_PROGRESS`.

Le déploiement 3 démarre et aucun déploiement n'est à l'état `COMPLETED`. Le déploiement 3 ne peut donc ni être restauré, ni lancer de tâches. 

## Seuil d'échec
<a name="failure-threshold"></a>

Le disjoncteur de déploiement calcule la valeur de seuil, puis utilise cette valeur pour déterminer quand passer le déploiement à l'état `FAILED`.

Le disjoncteur de déploiement a un seuil minimum de 3 et un seuil maximum de 200. Il utilise les valeurs de la formule suivante pour déterminer l'échec du déploiement.

```
Minimum threshold <= 0.5 * desired task count => maximum threshold
```

Lorsque le résultat du calcul est supérieur au minimum de 3, mais inférieur au maximum de 200, le seuil de défaillance est défini sur le seuil calculé (arrondi au chiffre supérieur).

**Note**  
Vous ne pouvez modifier aucune des valeurs de seuil.

La surveillance de l'état du déploiement comporte deux étapes.

1. Le disjoncteur de déploiement surveille les tâches qui font partie du déploiement et vérifie les tâches qui se trouvent dans l'état `RUNNING`. Le planificateur ignore les critères d'échec lorsqu'une tâche du déploiement actuel se trouve dans l'état `RUNNING` et passe à l'étape suivante. Lorsque les tâches ne parviennent pas à atteindre l'état `RUNNING`, le disjoncteur de déploiement augmente d'un le nombre d'échecs. Lorsque le nombre d'échecs est égal au seuil, le déploiement est marqué comme étant `FAILED`.

1. Cette étape débute lorsqu’il y a une ou plusieurs tâches dans l’état `RUNNING`. Le disjoncteur de déploiement effectue une surveillance de l'état sur les ressources suivantes pour les tâches du déploiement actuel :
   + Equilibreurs de charge Elastic Load Balancing
   + AWS Cloud Map service
   + Surveillance de l'état des conteneurs Amazon ECS

   Lorsqu'une surveillance de l'état échoue pour la tâche, le disjoncteur de déploiement augmente d'un le nombre d'échecs. Lorsque le nombre d'échecs est égal au seuil, le déploiement est marqué comme étant `FAILED`.

Le tableau suivant fournit quelques exemples.


| Nombre souhaité | Calculs | Threshold | 
| --- | --- | --- | 
|  1  |  <pre>3 <= 0.5 * 1 => 200</pre>  | 3 (la valeur calculée est inférieure au minimum) | 
|  25  |  <pre>3 <= 0.5 * 25 => 200</pre>  | 13 (la valeur est arrondie à la valeur supérieure) | 
|  400  |  <pre>3 <= 0.5 * 400 => 200</pre>  | 200 | 
|  800  |  <pre>3 <= 0.5 * 800 => 200</pre>  | 200 (la valeur calculée est supérieure au maximum) | 

Par exemple, lorsque le seuil est de 3, le disjoncteur se déclenche lorsque le nombre de défaillances atteint 0. Lorsqu’une tâche ne parvient pas à atteindre l’état `RUNNING`, le disjoncteur de déploiement augmente le nombre d’échecs d’une unité. Lorsque le nombre d’échecs est égal à 3, le déploiement est marqué comme `FAILED`.

Pour obtenir des exemples supplémentaires sur l'utilisation de l'option de restauration, consultez [Announcing Amazon ECS deployment circuit breaker](https://aws.amazon.com/blogs/containers/announcing-amazon-ecs-deployment-circuit-breaker/) (Annonce du disjoncteur de circuit de déploiement Amazon ECS).

# Comment les CloudWatch alarmes détectent les échecs de déploiement d'Amazon ECS
<a name="deployment-alarm-failure"></a>

Vous pouvez configurer Amazon ECS pour définir le déploiement comme un échec lorsqu'il détecte qu'une CloudWatch alarme spécifiée est passée dans `ALARM` cet état.

Vous pouvez éventuellement définir la configuration pour qu'elle revienne au dernier déploiement réussi en cas d'échec d'un déploiement.

L'`create-service` AWS CLI exemple suivant montre comment créer un service Linux lorsque les alarmes de déploiement sont utilisées avec l'option de restauration.

```
aws ecs create-service \
     --service-name MyService \
     --deployment-controller type=ECS \
     --desired-count 3 \
     --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \
     --task-definition sample-fargate:1 \
     --launch-type FARGATE \
     --platform-family LINUX \
     --platform-version 1.4.0 \
     --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"
```

Tenez compte des points suivants lorsque vous utilisez la méthode CloudWatch des alarmes Amazon sur un service.
+ La durée pendant laquelle les révisions de service bleues et vertes se déroulent simultanément après le transfert du trafic de production. Amazon ECS calcule cette période en fonction de la configuration d'alarme associée au déploiement. Vous ne pouvez pas définir cette valeur. 
+ Le paramètre de demande `deploymentConfiguration` contient désormais le type de données `alarms`. Vous pouvez spécifier les noms des alarmes, si vous souhaitez utiliser la méthode et si vous souhaitez lancer une restauration lorsque les alarmes indiquent un échec de déploiement. Pour plus d'informations, consultez le [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html)manuel *Amazon Elastic Container Service API Reference*.
+ La réponse `DescribeServices` donne un aperçu de l'état d'un déploiement, le `rolloutState` et `rolloutStateReason`. Lorsqu'un nouveau déploiement démarre, il commence à l'état `IN_PROGRESS`. Lorsque le service atteint un état stable et que la durée de l'intégration est terminée, l'état du déploiement passe à `COMPLETED`. Si le service n'arrive pas à atteindre un état stable et que l'alarme passe à l'état `ALARM`, le déploiement passe à un état `FAILED`. Un déploiement dans un état `FAILED` ne lancera aucune nouvelle tâche.
+ Outre les événements de changement d'état de déploiement de service qu'Amazon ECS envoie pour les déploiements qui ont démarré et se sont terminés, Amazon ECS envoie également un événement lorsqu'un déploiement qui utilise des alarmes échoue. Ces événements fournissent des informations sur la raison pour laquelle un déploiement a échoué ou si un déploiement a été démarré en raison d'une restauration. Pour de plus amples informations, veuillez consulter [Événements de modification de l’état de déploiement de service Amazon ECS](ecs_service_deployment_events.md).
+ Si un nouveau déploiement démarre parce qu'un déploiement précédent a échoué et que la restauration a été activée, le champ `reason` de l'événement de changement d'état de déploiement de service indique que le déploiement a démarré en raison d'une restauration.
+ Si vous utilisez le disjoncteur de déploiement et les CloudWatch alarmes Amazon pour détecter les défaillances, l'un ou l'autre peut provoquer un échec du déploiement dès que les critères de l'une ou l'autre méthode sont remplis. Une restauration se produit lorsque vous utilisez l'option de restauration pour la méthode à l'origine de l'échec du déploiement.
+ Les CloudWatch alarmes Amazon ne sont prises en charge que pour les services Amazon ECS qui utilisent le contrôleur de déploiement rolling update (`ECS`).
+ Vous pouvez configurer cette option à l’aide de la console Amazon ECS ou de l’ AWS CLI. Pour plus d'informations, consultez [Créer un service à l'aide de paramètres définis](create-service-console-v2.md#create-custom-service) et [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html) dans la *Référence AWS Command Line Interface *.
+ Vous remarquerez peut-être que l'état du déploiement reste `IN_PROGRESS` pendant une durée prolongée. La raison en est qu'Amazon ECS ne modifie pas le statut tant qu'il n'a pas supprimé le déploiement actif, et cela ne se produit qu'après la durée de l'intégration. En fonction de votre configuration d'alarme, le déploiement peut sembler prendre plusieurs minutes de plus que lorsque vous n'utilisez pas d'alarmes (même si le nouvel ensemble de tâches principales est augmenté et l'ancien déploiement réduit). Si vous utilisez des CloudFormation délais d'attente, envisagez de les augmenter. Pour de plus amples informations, veuillez consulter [Création de conditions d'attente dans un modèle](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-waitcondition.html) dans le *Guide de l'utilisateur AWS CloudFormation *.
+ Amazon ECS appelle `DescribeAlarms` pour sonder les alarmes. Les appels à prendre en `DescribeAlarms` compte dans les quotas de CloudWatch service associés à votre compte. Si d'autres AWS services appellent`DescribeAlarms`, Amazon ECS risque d'avoir un impact sur le fait d'interroger les alarmes. Par exemple, si un autre service effectue suffisamment d’appels à `DescribeAlarms` pour atteindre le quota, ce service est limité ; Amazon ECS est alors également limité et incapable d’interroger les alarmes. Si une alarme est générée pendant la période de limitation, Amazon ECS peut ne pas la détecter et la restauration peut ne pas avoir lieu. Cela n'a aucun autre impact sur le déploiement. Pour plus d'informations sur les quotas CloudWatch de service, consultez la section [Quotas de CloudWatch service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_limits.htm) dans le *Guide de CloudWatch l'utilisateur*.
+ Si une alarme est activée à l’état `ALARM` au début d'un déploiement, Amazon ECS ne surveille pas les alarmes pendant la durée de ce déploiement (il ignore la configuration des alarmes). Ce comportement concerne le cas où vous souhaitez lancer un nouveau déploiement afin de corriger un échec initial.

## Alarmes recommandées
<a name="ecs-deployment-alarms"></a>

Nous vous recommandons d'utiliser les métriques d'alarme suivantes :
+ Si vous utilisez un Application Load Balancer, utilisez les métriques d'Application Load Balancer `HTTPCode_ELB_5XX_Count` et `HTTPCode_ELB_4XX_Count`. Ces métriques surveillent la présence de pics HTTP. Pour plus d'informations sur les métriques d'Application Load Balancer, consultez CloudWatch les métriques de [votre Application Load](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html) Balancer dans *le Guide d'utilisation des* Application Load Balancers.
+ Si vous avez déjà une application, utilisez les métriques `CPUUtilization` et `MemoryUtilization`. Elles vérifient l'utilisation de l'UC et de la mémoire en pourcentage utilisées par le cluster ou le service. Pour de plus amples informations, veuillez consulter [Considérations](cloudwatch-metrics.md#enable_cloudwatch).
+ Si vous utilisez des Amazon Simple Queue Service files d'attente dans vos tâches, utilisez la métrique `ApproximateNumberOfMessagesNotVisible` Amazon SQS. Cette métrique vérifie le nombre de messages dans la file d'attente qui sont retardés et qui ne peuvent pas être lus immédiatement. Pour plus d'informations sur les métriques Amazon SQS, consultez la section Mesures [disponibles CloudWatch pour Amazon SQS dans le manuel Amazon](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-available-cloudwatch-metrics.html) *Simple Queue* Service Developer Guide.

## Durée de l’intégration
<a name="deployment-bake-time"></a>

Lorsque vous utilisez l'option de restauration pour vos déploiements de services, Amazon ECS attend un délai supplémentaire après le déploiement de la révision du service cible avant d'envoyer une alarme. CloudWatch C’est ce que l’on appelle la durée de l’intégration. Cette durée commence lorsque :
+ toutes les tâches d’une révision de service cible sont en cours d’exécution et en bon état ;
+ les révisions du service source sont réduites à 0 %.

La durée de l’intégration par défaut est inférieure à 5 minutes. Le déploiement de service est marqué comme terminé après l’expiration de la durée de l’intégration.

Vous pouvez configurer la durée de l’intégration pour un déploiement continu. Lorsque vous utilisez des CloudWatch alarmes pour détecter une panne, si vous modifiez le temps de cuisson, puis que vous décidez de choisir la valeur par défaut d'Amazon ECS, vous devez définir manuellement le temps de cuisson.

# Hooks de cycle de vie pour les déploiements de service Amazon ECS
<a name="deployment-lifecycle-hooks"></a>

Lorsqu’un déploiement démarre, il passe par différentes étapes du cycle de vie. Ces étapes peuvent avoir l’état EN\$1COURS ou RÉUSSI. Vous pouvez utiliser les hooks du cycle de vie, qui sont des fonctions Lambda qu’Amazon ECS exécute en votre nom à des étapes du cycle de vie spécifiées. Les fonctions peuvent être l’une des suivantes :
+ Une API asynchrone qui valide la surveillance de l’état endéans 15 minutes.
+ Une API de consultation qui lance un autre processus asynchrone qui évalue l’achèvement du hook de cycle de vie. 

Une fois l’exécution de la fonction terminée, elle doit renvoyer un `hookStatus` pour que le déploiement se poursuive. Si aucun `hookStatus` n’est renvoyé ou si la fonction échoue, le déploiement est annulé. Voici les valeurs pour `hookStatus` :
+ `SUCCEEDED` : le déploiement se poursuit jusqu’à l’étape suivante du cycle de vie
+ `FAILED` : le déploiement revient au dernier déploiement réussi.
+ `IN_PROGRESS` : Amazon ECS réexécute la fonction après un court laps de temps. Par défaut, il s’agit d’un intervalle de 30 secondes, mais cette valeur est personnalisable en renvoyant un `callBackDelay` avec le `hookStatus`.

L’exemple suivant montre comment renvoyer un `hookStatus` avec un délai de rappel personnalisé. Dans cet exemple, Amazon ECS réessaierait ce hook au bout de 60 secondes au lieu des 30 secondes par défaut :

```
{
    "hookStatus": "IN_PROGRESS",
    "callBackDelay": 60
}
```

En cas de restauration, Amazon ECS exécute les hooks de cycle de vie pour les étapes du cycle de vie suivantes :
+ PRODUCTION\$1TRAFFIC\$1SHIFT
+ TEST\$1TRAFFIC\$1SHIFT

## Données utiles de cycle de vie
<a name="service-deployment-lifecycle-payloads"></a>

 Lorsque vous configurez des hooks de cycle de vie pour vos déploiements de service ECS, Amazon ECS invoque ces hooks à des étapes spécifiques du processus de déploiement. Chaque étape du cycle de vie fournit des données utiles JSON avec des informations sur l’état actuel du déploiement. Ce document décrit la structure les données utiles pour chaque étape du cycle de vie. 

### Structure de données utiles communes
<a name="common-payload-structure"></a>

 Toutes les données utiles liées aux étapes du cycle de vie incluent les champs communs suivants : 
+  `serviceArn` : l’Amazon Resource Name (ARN) du service. 
+  `targetServiceRevisionArn` : lÂRN de la révision de service cible est en cours de déploiement. 
+  `testTrafficWeights`- Une carte de révision des services en fonction ARNs des pourcentages de pondération du trafic de test correspondants. 
+  `productionTrafficWeights`- Une carte de révision des services en fonction ARNs des pourcentages de pondération du trafic de production correspondants. 

### Données utiles relatives aux étapes de cycle de vie
<a name="lifecycle-stage-payloads"></a>

#### RECONCILE\$1SERVICE
<a name="reconcile-service"></a>

 Cette étape a lieu au début du processus de déploiement lorsque le service est en cours de réconciliation. Voici un exemple de données utiles pour cette étape du cycle de vie.

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100,
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0
  },
  "productionTrafficWeights": {
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100,
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0
  }
}
```

 **Résultats attendus à cette étape :** 
+ Le jeu de tâches principal est à un niveau de 0 %

#### PRE\$1SCALE\$1UP
<a name="pre-scale-up"></a>

 Cette étape a lieu avant que les nouvelles tâches ne soient augmentée verticalement. Voici un exemple de données utiles pour cette étape du cycle de vie.

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {},
  "productionTrafficWeights": {}
}
```

 **Résultats attendus à cette étape :** 
+ Les tâches de révision de service verte sont à un niveau de 0 %

#### POST\$1SCALE\$1UP
<a name="post-scale-up"></a>

 Cette étape intervient une fois que les nouvelles tâches ont été augmentées verticalement et qu’elles sont saines. Voici un exemple de données utiles pour cette étape du cycle de vie.

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {},
  "productionTrafficWeights": {}
}
```

 **Résultats attendus à cette étape :** 
+ Les tâches de révision de service verte sont à un niveau de 100 %
+ Les tâches dans la révision de service verte sont saines

#### TEST\$1TRAFFIC\$1SHIFT
<a name="test-traffic-shift"></a>

 Cette étape se produit lorsque le trafic de test est transféré vers les tâches de révision de service verte. 

Voici un exemple de données utiles pour cette étape du cycle de vie.

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100,
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0
  },
  "productionTrafficWeights": {}
}
```

 **Résultats attendus à cette étape :** 
+ Le trafic de test est en train de passer aux tâches de révision de service verte. 

#### POST\$1TEST\$1TRAFFIC\$1SHIFT
<a name="post-test-traffic-shift"></a>

 Cette étape intervient une fois que le trafic de test a été entièrement transféré vers les nouvelles tâches. 

Voici un exemple de données utiles pour cette étape du cycle de vie.

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {},
  "productionTrafficWeights": {}
}
```

 **Résultats attendus à cette étape :** 
+ 100 % du trafic de test a été affecté aux tâches de révision de service verte. 

#### PRODUCTION\$1TRAFFIC\$1SHIFT
<a name="production-traffic-shift"></a>

 Cette étape se produit lorsque le trafic de production est transféré vers les tâches de révision de service verte. 

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {},
  "productionTrafficWeights": {
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892": 100,
    "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/78652123": 0
  }
}
```

 **Résultats attendus à cette étape :** 
+ Le trafic de production est en train de passer à la révision de service verte. 

#### POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT
<a name="post-production-traffic-shift"></a>

 Cette étape intervient une fois que le trafic de production a été entièrement transféré aux tâches de révision de service verte. 

```
{
  "serviceArn": "arn:aws:ecs:us-west-2:1234567890:service/myCluster/myService",
  "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:1234567890:service-revision/myCluster/myService/01275892",
  "testTrafficWeights": {},
  "productionTrafficWeights": {}
}
```

 **Résultats attendus à cette étape :** 
+ 100 % du trafic de production a été transféré vers les tâches de révision de service verte. 

### Catégories d’étapes du cycle de vie
<a name="lifecycle-stage-categories"></a>

 Les étapes du cycle de vie entrent dans deux catégories principales : 

1.  **Étapes d’invocation uniques** : ces étapes ne sont invoquées qu’une seule fois lors du déploiement d’un service : 
   + PRE\$1SCALE\$1UP
   + POST\$1SCALE\$1UP
   + POST\$1TEST\$1TRAFFIC\$1SHIFT
   + POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT

1.  **Étapes d’invocation récurrentes** : ces étapes peuvent être invoquées plusieurs fois au cours du déploiement d’un service, par exemple lors d’une opération de restauration : 
   + TEST\$1TRAFFIC\$1SHIFT
   + PRODUCTION\$1TRAFFIC\$1SHIFT

### État du déploiement pendant les hooks de cycle de vie
<a name="deployment-status-during-lifecycle-hooks"></a>

 Pendant l’exécution des hooks de cycle de vie, le statut de déploiement sera `IN_PROGRESS` pour toutes les étapes du cycle de vie. 


| Étape du cycle de vie | Statut du déploiement | 
| --- | --- | 
| RECONCILE\$1SERVICE | EN\$1COURS | 
| PRE\$1SCALE\$1UP | EN\$1COURS | 
| POST\$1SCALE\$1UP | EN\$1COURS | 
| TEST\$1TRAFFIC\$1SHIFT | EN\$1COURS | 
| POST\$1TEST\$1TRAFFIC\$1SHIFT | EN\$1COURS | 
| PRODUCTION\$1TRAFFIC\$1SHIFT | EN\$1COURS | 
| POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT | EN\$1COURS | 

# Arrêt de déploiements de service Amazon ECS
<a name="stop-service-deployment"></a>

Vous pouvez arrêter manuellement un déploiement lorsqu'un déploiement défaillant n'a pas été détecté par le disjoncteur ou les CloudWatch alarmes. Les types d’arrêt suivants sont disponibles :
+ Restauration : cette option restaure le déploiement de service à la version précédente du service. 

  Vous pouvez utiliser cette option même si vous n’avez pas configuré le déploiement de service pour l’option de restauration. 

Vous pouvez arrêter un déploiement qui se trouve dans l’un des états suivants. Pour de plus amples informations sur les états de déploiement de service, consultez la section [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).
+ EN ATTENTE : le déploiement de service passe à l’état RESTAURATION\$1DEMAMDÉE, puis l’opération de restauration commence.
+ EN\$1COURS : le déploiement de service passe à l’état RESTAURATION\$1DEMAMDÉE, puis l’opération de restauration commence.
+ ARRÊT\$1DEMANDÉ : le déploiement de service continue de s’arrêter.
+ RESTAURATION\$1DEMAMDÉE : le déploiement de service poursuit l’opération de restauration.
+ RESTAURATION\$1EN\$1COURS : le déploiement de service poursuit l’opération de restauration.

## Procédure
<a name="stop-service-deployment-procedure"></a>

Avant de commencer, configurez les autorisations requises pour consulter les déploiements de service. Pour de plus amples informations, veuillez consulter [Autorisations requises pour consulter les déploiements de service Amazon ECS](service-deployment-permissions.md).

------
#### [ Amazon ECS Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page des détails du service s’affiche.

1. Sur la page des détails du service, choisissez **Déploiements**.

   La page des déploiements s’affiche.

1. Sous **Déploiement en cours**, choisissez **Restaurer**. Ensuite, dans la fenêtre de confirmation, choisissez **Restaurer**.

------
#### [ AWS CLI ]

1. Exécutez `list-service-deployments` pour récupérer l’ARN de déploiement de service. 

   Remplacez le *user-input* par vos valeurs.

   ```
   aws ecs list-service-deployments --cluster cluster-name --service service-name
   ```

   Notez le `serviceDeploymentArn` du déploiement que vous souhaitez arrêter.

   ```
   {
       "serviceDeployments": [
           {
               "serviceDeploymentArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/cluster-name/service-name/NCWGC2ZR-taawPAYrIaU5",
               "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/cluster-name/service-name",
               "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/cluster-name",
               "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/cluster-name/service-name/4980306466373577095",
               "status": "SUCCESSFUL"
           }
       ]
   }
   ```

1. Exécutez `stop-service-deployments`. Utilisez celui `serviceDeploymentArn` qui a été renvoyé par `list-service-deployments`.

   Remplacez le *user-input* par vos valeurs.

   ```
   aws ecs stop-service-deployment --service-deployment-arn arn:aws:ecs:region:123456789012:service-deployment/cluster-name/service-name/NCWGC2ZR-taawPAYrIaU5 --stop-type ROLLBACK
   ```

------

## Étapes suivantes
<a name="stop-service-deployment-next-step"></a>

Décidez quelles modifications doivent être apportées au service, puis mettez-le à jour. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).

# Déploiement de services Amazon ECS en remplaçant des tâches
<a name="deployment-type-ecs"></a>

Lorsque vous créez un service qui utilise le type de déploiement *Mise à jour propagée* (`ECS`), le planificateur de service Amazon ECS remplace les tâches en cours d’exécution par de nouvelles tâches. Le nombre de tâches ajoutées au service ou supprimées du service par Amazon ECS lors d'une mise à jour propagée est contrôlé par la configuration de déploiement du service. 

Amazon ECS utilise les paramètres suivants pour déterminer le nombre de tâches :
+ Le `minimumHealthyPercent` représente la limite inférieure du nombre de tâches qui devraient être exécutées et saines pour un service lors d'un déploiement continu ou lorsqu'une instance de conteneur est épuisée, en pourcentage du nombre de tâches souhaité pour le service. Cette valeur est arrondie à la valeur supérieure. Par exemple, si le pourcentage minimum d'instances saines est `50` et que le nombre de tâches souhaité est de quatre, le planificateur peut arrêter deux tâches existantes avant de démarrer deux nouvelles tâches. De même, si le pourcentage de santé minimum est de 75 % et que le nombre de tâches souhaité est de deux, le planificateur ne peut pas arrêter de tâche car la valeur résultante est également de deux.
+ Le `maximumPercent` représente la limite supérieure du nombre de tâches qui doivent être exécutées pour un service lors d'un déploiement continu ou lorsqu'une instance de conteneur est épuisée, en pourcentage du nombre de tâches souhaité pour un service. Cette valeur est arrondie à la valeur inférieure. Par exemple, si le pourcentage maximum est de quatre `200` et que le nombre de tâches souhaité est de quatre, le planificateur peut démarrer quatre nouvelles tâches avant d'arrêter quatre tâches existantes. De même, si le pourcentage maximal est `125` et que le nombre de tâches souhaité est de trois, le planificateur ne peut pas démarrer de tâche, car la valeur résultante est également de trois.

Lors d'un déploiement continu, lorsque les tâches ne fonctionnent plus correctement, Amazon ECS les remplace afin de maintenir la disponibilité de votre service `minimumHealthyPercent` et d'en protéger la disponibilité. Les tâches défectueuses sont remplacées à l'aide de la même révision de service à laquelle elles appartiennent. Cela garantit que le remplacement de tâches défectueux dans la révision source est indépendant des échecs de tâches dans la révision cible. Lorsque le `maximumPercent` paramètre le permet, le planificateur lance des tâches de remplacement avant d'arrêter celles qui ne fonctionnent pas correctement. Si le `maximumPercent` paramètre empêche le planificateur de démarrer d'abord une tâche de remplacement, il arrête une tâche défectueuse à la fois pour libérer de la capacité avant de lancer une tâche de remplacement.

**Important**  
Lorsque vous définissez un pourcentage minimum ou maximal d'instances saines, vous devez vous assurer que le planificateur peut arrêter ou démarrer au moins une tâche lorsqu'un déploiement est déclenché. Si votre service a un déploiement bloqué en raison d'une configuration de déploiement non valide, un message d'événement de service est envoyé. Pour de plus amples informations, veuillez consulter [service (*service-name*) n'a pas pu arrêter ou démarrer des tâches pendant un déploiement en raison de la configuration du déploiement du service. Mettez à jour la valeur minimumHealthyPercent ou MaximumPercent et réessayez.](service-event-messages-list.md#service-event-messages-7).

Les déploiements progressifs s’appuient sur deux méthodes permettant d’identifier rapidement l’échec d’un déploiement de service :
+ [Détection des pannes par le disjoncteur de déploiement Amazon ECS](deployment-circuit-breaker.md)
+ [Comment les CloudWatch alarmes détectent les échecs de déploiement d'Amazon ECS](deployment-alarm-failure.md)

Les méthodes peuvent être utilisées séparément ou conjointement. Lorsque les deux méthodes sont utilisées, le déploiement est défini en échec dès que les critères d’échec de l’une ou l’autre méthode sont remplis.

Suivez les instructions suivantes pour déterminer quelle méthode utiliser :
+ Disjoncteur : utilisez cette méthode lorsque vous souhaitez arrêter un déploiement car les tâches ne peuvent pas démarrer.
+ CloudWatch alarmes - Utilisez cette méthode lorsque vous souhaitez arrêter un déploiement en fonction des métriques de l'application.

Les deux méthodes permettent de restaurer la version de service précédente.

## Résolution des images de conteneurs
<a name="deployment-container-image-stability"></a>

Amazon ECS résout les noms des images de conteneurs et toutes les balises d’image spécifiées dans la définition de la tâche en condensés d’images de conteneurs. Si vous créez un service qui exécute et gère une seule tâche, cette tâche est utilisée pour établir des condensés d’images pour les conteneurs de la tâche. Si vous créez un service qui exécute et gère plusieurs tâches, la première tâche démarrée par le planificateur de service lors du déploiement est utilisée pour établir les condensés d’images pour les conteneurs contenus dans les tâches.

Si au moins trois tentatives d’établissement des condensés d’images du conteneur échouent, le déploiement se poursuit sans résolution de condensé d’image. Si le disjoncteur de déploiement est activé, le déploiement échoue également et est annulé.

Une fois les condensés des images du conteneur établis, Amazon ECS les utilise pour démarrer toutes les autres tâches souhaitées et pour toute future mise à jour de service. Ainsi, toutes les tâches d’un service exécutent toujours des images de conteneur identiques, ce qui garantit la cohérence des versions de votre logiciel.

Vous pouvez configurer ce comportement pour chaque conteneur de votre tâche en utilisant le paramètre `versionConsistency` figurant dans la définition du conteneur. Pour de plus amples informations, veuillez consulter [versionConsistency](task_definition_parameters.md#ContainerDefinition-versionconsistency).

**Note**  
Les versions de l’agent Amazon ECS inférieures à `1.31.0` ne prennent pas en charge la résolution du condensé d’image. Les versions de l’agent `1.31.0` à `1.69.0` ne prenent en charge la résolution de condensé d’images que pour les images transférées vers les référentiels Amazon ECR. Les versions de l’agent `1.70.0` ou supérieures prennent en charge la résolution de condensé d’image pour toutes les images. 
La version de plateforme Linux Fargate minimale pour la résolution du résumé d’image est `1.3.0`. La version de plateforme Windows Fargate minimale pour la résolution du condensé d’image est `1.0.0`.
Amazon ECS ne capture pas les résumés des conteneurs annexes gérés par Amazon ECS, tels que l'agent de GuardDuty sécurité Amazon ou le proxy Service Connect.
Pour réduire la latence potentielle associée à la résolution des images de conteneur dans les services comportant plusieurs tâches, exécutez la version `1.83.0` ou supérieure de l’agent Amazon ECS sur les instances de conteneur EC2. Pour éviter toute latence potentielle, spécifiez des condensés d’images de conteneur dans votre définition de tâche.
Si vous créez un service avec un nombre de tâches souhaité égal à zéro, Amazon ECS ne peut pas établir de résumés de conteneurs tant que vous n’avez pas déclenché un autre déploiement du service avec un nombre de tâches souhaité supérieur à zéro.
Pour établir des condensés d’images mis à jour, vous pouvez forcer un nouveau déploiement. Les condensés mis à jour seront utilisés pour démarrer de nouvelles tâches et n’affecteront pas les tâches déjà en cours. Pour plus d'informations sur le forçage de nouveaux déploiements, consultez [forceNewDeployment](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html#ECS-UpdateService-request-forceNewDeployment)la *référence des API Amazon ECS*.
Lorsque vous utilisez des fournisseurs de capacité EC2, si la capacité est insuffisante pour démarrer une tâche lors du déploiement initial, la cohérence des versions logicielles peut échouer. Pour garantir la cohérence des versions même lorsque la capacité est limitée, définisse explicitement `versionConsistency: "enabled"` dans la configuration de votre conteneur de définition de tâches plutôt que de vous fier au comportement par défaut. Cela oblige Amazon ECS à attendre que la capacité soit disponible avant de procéder au déploiement.

# Pratiques exemplaires relatives aux paramètres d’un service Amazon ECS
<a name="service-options"></a>

Pour éviter toute durée d’indisponibilité de l’application, le processus de déploiement est le suivant :

1. Démarrez les nouveaux conteneurs d’applications tout en maintenant les conteneurs existants en activité.

1. Vérifiez que les nouveaux conteneurs sont sains.

1. Arrêtez les anciens conteneurs.

 En fonction de la configuration de votre déploiement et de la quantité d’espace libre non réservé dans votre cluster, plusieurs cycles peuvent être nécessaires pour remplacer toutes les anciennes tâches par de nouvelles tâches. 

Il existe deux options de configuration de service que vous pouvez utiliser pour modifier le nombre :
+ `minimumHealthyPercent` : 100 % (par défaut)

  La limite inférieure du nombre de tâches pour lesquelles votre service doit rester dans l’état `RUNNING` lors d’un déploiement. Cette valeur est exprimée en tant que pourcentage de `desiredCount` arrondi à la valeur supérieure la plus proche. Ce paramètre vous permet de procéder au déploiement sans avoir recours à une capacité de cluster supplémentaire.
+ `maximumPercent` : 200 % (par défaut)

   La limite supérieure du nombre de tâches pour votre service autorisées dans l’état `RUNNING` ou `PENDING` pendant un déploiement. Cette valeur est exprimée en tant que pourcentage de `desiredCount` arrondi à la valeur inférieure la plus proche.

**Exemple : options de configuration par défaut**

Considérons le service suivant qui comporte six tâches, déployées dans un cluster pouvant accueillir huit tâches au total. Les options de configuration de service par défaut ne permettent pas au déploiement d’aller en dessous de 100 % des six tâches souhaitées.

Le processus de déploiement est le suivant :

1. L’objectif est de remplacer les six tâches.

1. Le planificateur lance deux nouvelles tâches, car les paramètres par défaut exigent que six tâches soient en cours d’exécution.

   Il existe désormais six tâches existantes et deux nouvelles tâches.

1. Le planificateur arrête deux des tâches existantes.

   Il existe désormais quatre tâches existantes et deux nouvelles tâches.

1. Le planificateur lance deux nouvelles tâches supplémentaires.

   Il existe désormais quatre tâches existantes et quatre nouvelles tâches.

1. Le planificateur arrête deux des tâches existantes.

   Il existe désormais deux tâches existantes et quatre nouvelles.

1. Le planificateur lance deux nouvelles tâches supplémentaires.

   Il y a maintenant deux tâches existantes et six nouvelles tâches

1. Le planificateur arrête les deux dernières tâches existantes.

   Il y a désormais six nouvelles tâches.

Dans l’exemple ci-dessus, si vous utilisez les valeurs par défaut pour les options, il y a une attente de 2,5 minutes pour chaque nouvelle tâche qui démarre. En outre, l’équilibreur de charge devra peut-être attendre 5 minutes pour que l’ancienne tâche s’arrête. 

**Exemple : modifier `minimumHealthyPercent`**

Vous pouvez accélérer le déploiement en définissant la valeur `minimumHealthyPercent` sur 50 %.

Considérons le service suivant qui comporte six tâches, déployées dans un cluster pouvant accueillir huit tâches au total. Le processus de déploiement est le suivant :

1. L’objectif est de remplacer six tâches.

1. Le planificateur arrête trois des tâches existantes. 

   Il subsiste trois tâches en cours d’exécution qui correspondent à la valeur de `minimumHealthyPercent`.

1. Le planificateur lance cinq nouvelles tâches.

   Il existe trois tâches existantes et cinq nouvelles tâches.

1. Le planificateur arrête les trois tâches existantes restantes.

   Il y a cinq nouvelles tâches

1. Le planificateur lance la dernière nouvelle tâche.

   Il y a six nouvelles tâches.

**Exemple : modifier l’espace libre du cluster**

Vous pouvez également ajouter de l’espace libre afin de pouvoir exécuter des tâches supplémentaires. 

Considérons le service suivant qui comporte six tâches, déployées dans un cluster pouvant accueillir dix tâches au total. Le processus de déploiement est le suivant :

1. L’objectif est de remplacer les tâches existantes.

1. Le planificateur arrête trois des tâches existantes.

   Il y a trois tâches existantes.

1. Le planificateur lance six nouvelles tâches.

   Il y a maintenant trois tâches existantes et six nouvelles tâches

1. Le planificateur arrête les trois tâches existantes.

   Il y a six nouvelles tâches.

**Recommandations**

Utilisez les valeurs suivantes pour les options de configuration du service lorsque vos tâches sont inactives pendant un certain temps et que leur taux d’utilisation n’est pas élevé.
+ `minimumHealthyPercent` : 50 %
+ `maximumPercent` : 200 % 

# Création d’un déploiement de mise à jour propagée Amazon ECS
<a name="create-service-console-v2"></a>

Créez un service pour exécuter et maintenir simultanément un nombre spécifié d’instances d’une définition de tâche dans un cluster. Si l'une de vos tâches échoue ou s'arrête, le planificateur de service d'Amazon ECS service lance une autre instance de votre définition de tâche pour la remplacer. Cela permet de maintenir le nombre de tâches souhaité dans le service.

Définissez les paramètres de configuration suivants avant de créer un service :
+ Deux options de calcul permettent de distribuer vos tâches.
  + Une **capacity provider strategy** (stratégie de fournisseurs de capacités) permet à Amazon ECS de distribuer vos tâches avec un ou plusieurs fournisseurs de capacité. 

    Si vous souhaitez exécuter vos charges de travail sur des instances gérées Amazon ECS, vous devez utiliser l’option de stratégie de fournisseur de capacité.
  + Un **type de lancement** permet à Amazon ECS de lancer vos tâches directement sur Fargate ou sur les instances Amazon EC2 enregistrées dans vos clusters.

    Si vous souhaitez exécuter vos charges de travail sur des instances gérées Amazon ECS, vous devez utiliser l’option de stratégie de fournisseur de capacité.
+ Les définitions de tâches qui utilisent le mode réseau `awsvpc` ou les services configurés pour utiliser un équilibreur de charge doivent avoir une configuration réseau. Par défaut, la console sélectionne l'Amazon VPC par défaut ainsi que tous ses sous-réseaux et son groupe de sécurité par défaut. 
+ La stratégie de placement des tâches par défaut répartit les tâches de manière uniforme entre les zones de disponibilité. 

  Nous vous recommandons d’utiliser le rééquilibrage des zones de disponibilité pour garantir la haute disponibilité de votre service. Pour de plus amples informations, veuillez consulter [Équilibrage d’un service Amazon ECS entre les zones de disponibilité](service-rebalancing.md).
+ Lorsque vous utilisez **Launch Type** (Type de lancement) pour le déploiement de votre service, le service démarre par défaut dans les sous-réseaux de votre VPC de cluster.
+ Pour la **stratégie des fournisseurs de capacités**, la console sélectionne une option de calcul par défaut. Voici l'ordre utilisé par la console pour sélectionner une valeur par défaut :
  + Si votre cluster a une stratégie de fournisseur de capacité définie par défaut, elle est sélectionnée.
  + Si votre cluster n’a pas de stratégie de fournisseur de capacité par défaut définie, mais que les fournisseurs de capacité Fargate ont été ajoutés au cluster, une stratégie de fournisseur de capacité personnalisée qui utilise le fournisseur de capacité `FARGATE` est sélectionnée.
  + Si votre cluster ne dispose pas d’une stratégie de fournisseur de capacité par défaut définie, mais qu’un ou plusieurs fournisseurs de capacité de groupe Auto Scaling ont été ajoutés au cluster, l’option **Utiliser une stratégie personnalisée (avancée)** est sélectionnée et vous devez définir manuellement la stratégie.
  + Si votre cluster n'a pas de stratégie de fournisseur de capacité par défaut définie et qu'aucun fournisseur de capacité n'est ajouté au cluster, le type de lancement Fargate est sélectionné.
+ Les options par défaut de détection des échecs de déploiement consistent à utiliser l’option **Disjoncteur de déploiement Amazon ECS** avec l’option **Restauration en cas d’échec**.

  Pour de plus amples informations, veuillez consulter [Détection des pannes par le disjoncteur de déploiement Amazon ECS](deployment-circuit-breaker.md).
+ Décidez si vous souhaitez qu’Amazon ECS augmente ou diminue automatiquement le nombre souhaité de tâches dans votre service. Pour plus d'informations, consultez [Mise à l’échelle automatique de votre service Amazon ECS](service-auto-scaling.md).
+ Si vous avez besoin d'une application pour vous connecter à d'autres applications qui s'exécutent dans Amazon ECS, déterminez l'option adaptée à votre architecture. Pour de plus amples informations, veuillez consulter [Interconnexion des services Amazon ECS](interconnecting-services.md). 
+ Lorsque vous créez un service qui utilise le disjoncteur Amazon ECS, Amazon ECS crée un déploiement et une révision de service. Ces ressources vous permettent de consulter des informations détaillées sur l’historique des services. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).

  Pour plus d'informations sur la création d'un service à l'aide du AWS CLI, reportez-vous [https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)à la section *AWS Command Line Interface Référence*.

  Pour plus d'informations sur la création d'un service à l'aide de AWS CloudFormation, consultez [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ecs-service.html)le *guide de AWS CloudFormation l'utilisateur*.

## Création d’un service avec les options par défaut
<a name="create-default-service"></a>

Vous pouvez utiliser la console pour créer et déployer rapidement un service. Le service a la configuration suivante :
+ Déploie dans le VPC et les sous-réseaux associés à votre cluster
+ Déploie une tâche
+ Utilise le déploiement continu
+ Utilise la stratégie de fournisseur de capacité avec votre fournisseur de capacité par défaut
+ Utilise le disjoncteur de déploiement pour détecter les défaillances et définit l'option permettant d'annuler automatiquement le déploiement en cas de problème

Pour déployer un service à l'aide des paramètres par défaut, procédez comme suit.

**Pour créer un service (console Amazon ECS)**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans la page de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, choisissez le cluster dans lequel créer le service.

1. Sous l'onglet **Services** choisissez **Create** (Créer).

   La page **Créer un service** s’affiche.

1. Sous **Détails du service**, procédez comme suit :

   1. Pour **Définition de tâche**, saisissez la famille et la révision de définition de tâche à utiliser.

   1. Pour **Service name** (Nom du service), saisissez un nom pour votre service.

1. Pour utiliser ECS Exec afin de déboguer le service, sous **Configuration de la résolution des problèmes**, sélectionnez **Activer ECS Exec**.

1. Sous **Configuration du déploiement**, procédez comme suit :

   1. Pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.

1. (Facultatif) Pour vous aider à identifier votre service et vos tâches, développez **Tags** (balises), puis configurez vos balises.

   Pour qu'Amazon ECS étiquette automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez **Turn on Amazon ECS managed tags** (Activer les balises gérées par Amazon ECS), puis sélectionnez **Task definitions** (Définitions de tâches).

   Pour qu'Amazon ECS étiquette automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises d'un service, sélectionnez **Turn on Amazon ECS managed tags** (Activer les balises gérées par Amazon ECS), puis sélectionnez **Service**.

   Ajoutez ou supprimez une balise.
   + [Ajouter une balise] Choisissez **Add tag** (Ajouter une balise), puis procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

## Créer un service à l'aide de paramètres définis
<a name="create-custom-service"></a>

Pour créer un service à l’aide de paramètres définis, procédez comme suit.

**Pour créer un service (console Amazon ECS)**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Déterminez la ressource à partir de laquelle vous lancez le service.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/create-service-console-v2.html)

   La page **Créer un service** s’affiche.

1. Sous Détails du service, procédez comme suit :

   1. Pour **Définition de tâche**, saisissez la définition de tâche à utiliser. Ensuite, pour **Révision**, choisissez la révision à utiliser.

   1. Pour **Service name** (Nom du service), saisissez un nom pour votre service.

1. Pour **Cluster existant**, choisissez le cluster.

   Choisissez **Créer un cluster** pour exécuter la tâche sur un nouveau cluster

1. Choisissez comment vos tâches sont distribuées dans votre infrastructure de cluster. Sous **Configuration de calcul**, choisissez votre option.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. Pour utiliser ECS Exec afin de déboguer le service, sous **Configuration de la résolution des problèmes**, sélectionnez **Activer ECS Exec**.

1. Sous **Configuration du déploiement**, procédez comme suit :

   1. Pour **Service type** (Type de service), choisissez la stratégie de planification du service.
      + Pour que le planificateur déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster, choisissez **Daemon** (Démon).
      + Pour que. le planificateur place et gère le nombre de tâches souhaité dans votre cluster, choisissez **Replica**.

   1. Si vous choisissez **Replica** pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.

   1. Si vous avez choisi **Replica**, pour qu’Amazon ECS surveille la répartition des tâches entre les zones de disponibilité et les redistribue en cas de déséquilibre, sous **Rééquilibrage des services entre zones de disponibilité**, sélectionnez **Rééquilibrage des services entre zones de disponibilité**.

   1. Pour **Période de grâce pour la surveillance de l’état**, saisissez la durée (en secondes) pendant laquelle le planificateur de service ignore les surveillances de l’état de Elastic Load Balancing, VPC Lattice et des conteneurs qui ne sont pas saines après le démarrage initial d’une tâche. Si vous ne spécifiez aucune valeur pour la période de grâce de surveillance de l’état, la valeur par défaut 0 est utilisée.

   1. Déterminez le type de déploiement de votre service. Développez **Options de déploiement**, puis spécifiez les paramètres suivants.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/create-service-console-v2.html)

   1. Pour configurer la manière dont Amazon ECS détecte et gère les échecs de déploiement, développez **Deployment failure detection** (Détection des échecs de déploiement), puis choisissez vos options. 

      1. Pour arrêter un déploiement lorsque les tâches ne peuvent pas démarrer, sélectionnez **Use the Amazon ECS deployment circuit breaker** (Utiliser le disjoncteur de déploiement Amazon ECS).

         Pour que le logiciel restaure automatiquement le dernier état de déploiement terminé lorsque le disjoncteur de déploiement définit le déploiement comme ayant échoué, sélectionnez **Restauration en cas d’échec**.

      1. Pour arrêter un déploiement en fonction des métriques de l'application, sélectionnez **Utiliser une ou plusieurs CloudWatch alarmes**. Ensuite, à partir du **nom de l'CloudWatch alarme**, choisissez les alarmes. Pour créer une nouvelle alarme, rendez-vous sur la CloudWatch console.

         Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsqu'une CloudWatch alarme indique que le déploiement a échoué, sélectionnez Annulation en **cas d'échec**.

1. Si votre définition de tâche utilise le mode réseau `awsvpc`, vous pouvez spécifier une configuration réseau personnalisée ; développez **Mise en réseau**, puis procédez comme suit :

   1. Pour **VPC**, sélectionnez le VPC à utiliser.

   1. Pour **Subnets** (Sous-réseaux), sélectionnez un ou plusieurs sous-réseaux du VPC que le planificateur de tâches prend en compte lors du placement de vos tâches.

   1. Pour **Security group (Groupe de sécurité)**, vous pouvez sélectionner un groupe de sécurité existant ou en créer un nouveau. Pour utiliser un groupe de sécurité existant, sélectionnez-le et passez à l'étape suivante. Pour créer un nouveau groupe de sécurité, sélectionnez **Create a new security group** (Créer un nouveau groupe de sécurité). Vous devez spécifier un nom de groupe de sécurité et une description, puis ajouter une ou plusieurs règles entrantes pour le groupe de sécurité.

   1. Pour **Public IP (Adresse IP publique)**, indiquez si vous voulez attribuer automatiquement une adresse IP publique à l'interface réseau Elastic (ENI) de la tâche.

      AWS Fargate les tâches peuvent se voir attribuer une adresse IP publique lorsqu'elles sont exécutées dans un sous-réseau public afin qu'elles disposent d'une route vers Internet. Il n’est pas possible d’attribuer une adresse IP publique aux tâches EC2 à l’aide de ce champ. Pour plus d’informations, consultez les sections [Options de mise en réseau des tâches Amazon ECS pour Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html) et [Allocation d’une interface réseau pour une tâche Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html).

1. (Facultatif) Pour interconnecter votre service à l’aide de Service Connect, développez **Service Connect**, puis spécifiez les éléments suivants :

   1.  Sélectionnez **Activer Service Connect**.

   1. Sous **Service Connect configuration** (Configuration de Service Connect), spécifiez le mode client.
      + Si votre service exécute une application client réseau qui doit uniquement se connecter à d’autres services de l’espace de noms, sélectionnez **Côté client uniquement**.
      + Si votre service exécute une application réseau ou un service Web et doit fournir des points de terminaison pour ce service, et se connecte à d'autres services dans l'espace de noms, choisissez **Client and server** (Client et serveur).

   1. Pour utiliser un espace de noms qui n'est pas l'espace de noms de cluster par défaut, dans **Namespace** (Espace de noms), choisissez l'espace de noms du service. Il peut s'agir d'un espace de noms créé séparément dans le même espace Région AWS dans votre région Compte AWS ou d'un espace de noms dans la même région qui est partagé avec votre compte en utilisant AWS Resource Access Manager ()AWS RAM. *Pour plus d'informations sur les AWS Cloud Map espaces de noms partagés, consultez la section [Partage d'espaces de AWS Cloud Map noms entre comptes](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) dans le Guide du AWS Cloud Map développeur.*

   1. (Facultatif) Spécifiez une configuration de journal. Sélectionnez **Utiliser la collecte de journaux**. L'option par défaut envoie les journaux du conteneur à CloudWatch Logs. Les autres options du pilote de journal sont configurées à l'aide de AWS FireLens. Pour de plus amples informations, veuillez consulter [Envoyer les journaux Amazon ECS à un AWS service ou AWS Partner](using_firelens.md).

      Voici une description plus détaillée de chaque destination de journal de conteneur.
      + **Amazon CloudWatch** — Configurez la tâche pour envoyer les journaux des conteneurs à CloudWatch Logs. Les options du pilote de journal par défaut sont fournies, ce qui permet de créer un groupe de CloudWatch journaux en votre nom. Pour spécifier un autre nom de groupe de journaux, modifiez les valeurs des options de pilote.
      + **Amazon Data Firehose** : configurez la tâche pour envoyer des journaux de conteneur à Firehose. Les options par défaut du pilote de journalisation sont fournies. Elles envoient les journaux vers un flux de livraison Firehose. Pour spécifier un autre nom de flux de diffusion, modifiez les valeurs des options de pilote.
      + **Amazon Kinesis Data Streams** : configurez la tâche pour envoyer des journaux de conteneur à Kinesis Data Streams. Les options par défaut du pilote de journalisation sont fournies. Elles permettent d’envoyer les journaux vers un flux Kinesis Data Streams. Pour spécifier un autre nom de flux, modifiez les valeurs des options de pilote.
      + **Amazon OpenSearch Service** — Configurez la tâche pour envoyer les journaux des conteneurs vers un domaine OpenSearch de service. Les options de pilote de journal doivent être fournies. 
      + **Simple Storage Service (Amazon S3)** : configurez la tâche pour envoyer des journaux de conteneur à un compartiment Simple Storage Service (Amazon S3). Les options de pilote de journal par défaut sont fournies, mais vous devez spécifier un nom de compartiment Simple Storage Service (Amazon S3) valide.

   1. (Facultatif) Pour activer les journaux d'accès, procédez comme suit :

      1. Développez la **configuration du journal d'accès**. Pour **Format**, choisissez **JSON** ou`TEXT`.

      1. Pour inclure les paramètres de requête dans les journaux d'accès, sélectionnez **Inclure les paramètres de requête**.

1. (Facultatif) Pour interconnecter votre service à l’aide de la découverte de service, développez **Découverte de service**, puis spécifiez les éléments suivants :

   1. Sélectionnez **Utiliser la découverte de service**.

   1. Pour utiliser un nouvel espace de noms, sous **Configurer l’espace de noms**, choisissez **Créer un espace de noms**, puis fournissez un nom et une description de l’espace de noms. Pour utiliser un espace de noms existant, choisissez **Sélectionner un espace de noms existant**, puis choisissez l’espace de noms que vous souhaitez utiliser.

   1. Fournissez des informations sur le service de découverte de service, telles que le nom et la description du service.

   1. Pour qu’Amazon ECS effectue des surveillances de l’état périodiques au niveau du conteneur, sélectionnez **Activer la propagation de l’état des tâches Amazon ECS**.

   1. Pour **DNS record type (Type de registre DNS)**, sélectionnez le type de registre DNS à créer pour votre service. La découverte de service Amazon ECS prend uniquement en charge les registres **A** et **SRV**, en fonction du mode réseau spécifié par votre définition de tâche. Pour de plus amples informations sur ces types de registres, veuillez consulter [Supported DNS Record Types (Types de registres DNS pris en charge)](https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html) dans le *Guide du développeur Amazon Route 53*.
      + Si la définition de tâche spécifiée par votre tâche de service utilise le mode réseau `bridge` ou `host`, seuls les enregistrements de type **SRV** sont pris en charge. Choisissez une combinaison de nom et de port de conteneur à associer au registre.
      + Si la définition de tâche spécifiée par votre tâche de service utilise le mode réseau `awsvpc`, sélectionnez le type d'enregistrement **A** ou **SRV**. Si vous avez choisi **A**, passez à l’étape suivante. Si vous choisissez **SRV**, spécifiez le port sur lequel le service est accessible ou une combinaison de nom et de port de conteneur à associer à l'enregistrement.

      Pour **Durée de vie**, saisissez la durée en secondes pendant laquelle un jeu d'enregistrements est conservé en cache par les résolveurs DNS et les navigateurs Web.

1. (Facultatif) Pour interconnecter votre service à l’aide de VPC Lattice, développez **VPC Lattice**, puis procédez comme suit :

   1. Sélectionnez **Activer le VPC Lattice**

   1. Pour **Rôle d’infrastructure**, choisissez le rôle d’infrastructure.

      Si vous n’avez pas créé de rôle, choisissez **Créer un rôle d’infrastructure**.

   1. Sous **Groupes cibles**, sélectionnez le ou les groupes cibles. Vous devez choisir au moins un groupe cible et pouvez en avoir jusqu’à cinq. Sélectionnez **Ajouter un groupe cible** pour ajouter d’autres groupes cibles. Choisissez le **Nom du port**, le **Protocole** et le **Port** pour chaque groupe cible que vous avez choisi. 

      Pour supprimer un groupe cible, sélectionnez **Supprimer**.
**Note**  
Si vous souhaitez ajouter un groupe cible existant, vous devez utiliser l’ AWS CLI. *Pour obtenir des instructions sur la façon d'ajouter des groupes cibles à l'aide de AWS CLI, voir [register-targets](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/register-targets.html) dans la AWS Command Line Interface référence.*
Bien qu’un service VPC Lattice puisse avoir plusieurs groupes cibles, chaque groupe cible ne peut être ajouté qu’à un seul service.

   1. Pour terminer la configuration de VPC Lattice, incluez vos nouveaux groupes cibles dans l’action par défaut de l’écouteur ou dans les règles d’un service VPC Lattice existant dans la console VPC Lattice. Pour plus d’informations, consultez la section [Règles d’écoute pour votre service VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/listener-rules.html).

1. (Facultatif) Pour configurer un équilibreur de charge pour votre service, développez **Load balancing** (Répartition de charge).

   Choisissez l'équilibreur de charge.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. (Facultatif) Pour configurer l’autoscaling du service, développez **Autoscaling du service**, puis spécifiez les paramètres suivants. Pour utiliser l’autoscaling prédictif, qui examine les données de charge passées à partir des flux de trafic, configurez-le après avoir créé le service. Pour de plus amples informations, veuillez consulter [Utilisez des modèles historiques pour faire évoluer les services Amazon ECS grâce à une mise à l'échelle prédictive](predictive-auto-scaling.md).

   1. Pour utiliser la mise à l'échelle automatique du service, sélectionnez **Service Auto Scaling** (mise à l'échelle automatique du service).

   1. Pour **Nombre minimum de tâches**, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.

   1. Pour **Nombre maximal de tâches**, saisissez la limite supérieure du nombre de tâches à utiliser par l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.

   1. Choisissez le type de stratégie. Sous **Type de stratégie de mise à l’échelle**, choisissez l’une des options suivantes.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. (Facultatif) Pour utiliser une stratégie de placement des tâches autre que la stratégie par défaut, développez **Task Placement** (Placement des tâches), puis choisissez parmi les options suivantes.

    Pour de plus amples informations, veuillez consulter [Comment Amazon ECS place les tâches sur des instances de conteneur](task-placement.md).
   + **Répartition équilibrée par AZ** : permet de répartir les tâches entre les zones de disponibilité et les instances de conteneur de la zone de disponibilité.
   + **AZ Balanced BinPack** — Répartissez les tâches entre les zones de disponibilité et entre les instances de conteneur disposant du moins de mémoire disponible.
   + **BinPack**— Répartissez les tâches en fonction de la quantité minimale de processeur ou de mémoire disponible.
   + **Une tâche par hôte** : permet de placer au maximum une tâche du service sur chaque instance de conteneur.
   + **Personnalisé** : permet de définir votre propre stratégie de placement des tâches. 

   Si vous avez choisi **Custom** (Personnaliser), définissez l'algorithme de placement des tâches et les règles à prendre en compte lors du placement des tâches.
   + Sous **Strategy** (Stratégie), pour **Type** et **Field** (Champ), choisissez l'algorithme et l'entité à utiliser pour l'algorithme.

     Vous pouvez saisir jusqu'à 5 stratégies maximum.
   + Sous **Contrainte**, pour **Type** et **Expression**, choisissez la règle et l'attribut pour la contrainte.

     Par exemple, pour définir la contrainte permettant de placer des tâches sur des instances T2, pour **Expression**, saisissez **attribute:ecs.instance-type =\$1 t2.\$1**.

     Vous pouvez saisir jusqu'à 10 contraintes maximum.

1. Si votre tâche utilise un volume de données compatible avec la configuration lors du déploiement, vous pouvez configurer le volume en développant **Volume**.

   Le nom et le type de volume sont configurés lorsque vous créez une révision de définition de tâche et ne peuvent pas être modifiés lors de la création d’un service. Pour mettre à jour le nom et le type du volume, vous devez créer une révision de définition de tâche et créer un service à l’aide de la nouvelle révision.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/create-service-console-v2.html)

1. Pour utiliser ECS Exec afin de déboguer le service, sous **Configuration de la résolution des problèmes**, sélectionnez **Activer ECS Exec**.

1. (Facultatif) Pour vous aider à identifier votre service et vos tâches, développez **Tags** (balises), puis configurez vos balises.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Définitions de tâches**.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises d'un service, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Service**.

   Ajoutez ou supprimez une balise.
   + [Ajouter une balise] Choisissez **Add tag** (Ajouter une balise), puis procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

1. Choisissez **Créer**.

## Étapes suivantes
<a name="create-service-next-steps"></a>

Voici les actions supplémentaires à effectuer après avoir créé un service.
+ Configurez l’autoscaling prédictif, qui examine les données de charge passées issues des flux de trafic. Pour de plus amples informations, veuillez consulter [Utilisez des modèles historiques pour faire évoluer les services Amazon ECS grâce à une mise à l'échelle prédictive](predictive-auto-scaling.md).
+ Suivez votre déploiement et consultez l’historique des services pour les services qui utilisent le disjoncteur Amazon ECS. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).

# blue/green Déploiements Amazon ECS
<a name="deployment-type-blue-green"></a>

Un blue/green déploiement est une méthodologie de publication qui réduit les temps d'arrêt et les risques en exécutant deux environnements de production identiques appelés bleu et vert. Avec les blue/green déploiements Amazon ECS, vous pouvez valider les nouvelles révisions des services avant de diriger le trafic de production vers celles-ci. Cette approche fournit un moyen plus sûr de déployer les modifications avec la possibilité de revenir rapidement en arrière si nécessaire.

## Avantages
<a name="blue-green-deployment-benefits"></a>

Les avantages de l'utilisation des blue/green déploiements sont les suivants :
+ Réduction des risques en testant le trafic de production avant de passer à la production. Vous pouvez valider le nouveau déploiement avec le trafic de test avant de diriger le trafic de production vers celui-ci.
+ Déploiements sans durée d’indisponibilité. L’environnement de production reste disponible tout au long du processus de déploiement, garantissant ainsi la disponibilité continue du service.
+ Restauration facile si des problèmes sont détectés. Si des problèmes surviennent avec le déploiement vert, vous pouvez rapidement revenir au déploiement bleu sans interruption de service prolongée.
+ Environnement de test contrôlé. L’environnement vert fournit un espace isolé pour tester les nouvelles fonctionnalités avec des modèles de trafic réels avant le déploiement complet.
+ Processus de déploiement prévisible. L’approche structurée avec des étapes du cycle de vie définies rend les déploiements plus cohérents et fiables.
+ Validation automatisée via des hooks de cycle de vie. Vous pouvez implémenter des tests automatisés à différentes étapes du déploiement afin de vérifier le fonctionnement.

## Terminologie
<a name="blue-green-deployment-terms"></a>

Les conditions de blue/green déploiement d'Amazon ECS sont les suivantes :
+ Durée de l’intégration : durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément après le transfert du trafic de production.
+ Déploiement bleu : révision actuelle du service de production que vous souhaitez remplacer.
+ Déploiement vert : nouvelle version du service que vous souhaitez déployer.
+ Étapes du cycle de vie : une série d’événements au cours de l’opération de déploiement, tels que le « après transfert du trafic de production » :
+ Hook de cycle de vie : fonction Lambda qui vérifie le déploiement à une étape spécifique du cycle de vie.
+ Écouteur : une ressource Elastic Load Balancing qui vérifie les demandes de connexion à l’aide du protocole et du port que vous configurez. Les règles que vous définissez pour un écouteur déterminent la manière dont Amazon ECS achemine les requêtes vers ses cibles enregistrées.
+ Règle : ressource Elastic Load Balancing associée à un écouteur. Une règle définit la manière dont les requêtes sont acheminées et comprend une action, une condition et une priorité.
+ Groupe cible : ressource Elastic Load Balancing utilisée pour acheminer les requêtes vers une ou plusieurs cibles enregistrées (par exemple, des instances EC2). Lorsque vous créez un écouteur, vous spécifiez un groupe cible pour son action par défaut. Le trafic est transféré vers le groupe cible spécifié dans la règle de l'écouteur.
+ Transfert de trafic : processus utilisé par Amazon ECS pour transférer le trafic du déploiement bleu au déploiement vert. Pour les blue/green déploiements Amazon ECS, tout le trafic passe du service bleu au service vert en une seule fois.

## Considérations
<a name="blue-green-deployment-considerations"></a>

Tenez compte des éléments suivants lors du choix d’un type de déploiement :
+ Utilisation des ressources : Blue/green les déploiements exécutent temporairement les révisions des services bleu et vert simultanément, ce qui peut doubler votre utilisation des ressources pendant les déploiements.
+ Surveillance du déploiement : Blue/green les déploiements fournissent des informations plus détaillées sur l'état du déploiement, ce qui vous permet de surveiller chaque étape du processus de déploiement.
+ Annulation : Blue/green les déploiements facilitent le retour à la version précédente en cas de détection de problèmes, car la version bleue est maintenue en cours d'exécution jusqu'à l'expiration du délai de cuisson.
+ Crochets du cycle de vie du Network Load Balancer : si vous utilisez un Network Load Balancer blue/green pour les déploiements, 10 minutes supplémentaires sont nécessaires pour les étapes du cycle de vie TEST\$1TRAFFIC\$1SHIFT et PRODUCTION\$1TRAFFIC\$1SHIFT. Cela est dû au fait qu'Amazon ECS veille à ce que le trafic puisse être transféré en toute sécurité.

# Flux de travail des déploiements blue/green de services Amazon ECS
<a name="blue-green-deployment-how-it-works"></a>

Le processus de blue/green déploiement d'Amazon ECS suit une approche structurée comportant six phases distinctes qui garantissent des mises à jour d'applications sûres et fiables. Chaque phase a un objectif spécifique en validant et en faisant passer votre application de la version actuelle (bleu) à la nouvelle version (vert).

1. **Phase de préparation** : création de l’environnement vert à côté de l’environnement bleu existant. Cela inclut la mise à disposition de nouvelles révisions de service et la préparation des groupes cibles.

1. **Phase de déploiement** : déploiement de la nouvelle version du service dans un environnement vert. Amazon ECS lance de nouvelles tâches à l’aide de la révision de service mise à jour tandis que l’environnement bleu continue de desservir le trafic de production.

1. **Phase de test** : validation de l’environnement vert à l’aide du routage du trafic de test. L’Application Load Balancer dirige les requêtes de test vers l’environnement vert tandis que le trafic de production reste en mode bleu.

1. **Phase de transfert du trafic** : déplacement du trafic de production du bleu au vert en fonction de votre stratégie de déploiement configurée. Cette phase inclut des points de contrôle de surveillance et de validation.

1. **Phase de surveillance** : surveillance de l’état de l’application, des métriques de performance et des états d’alarme pendant la durée de l’intégration. Une opération de restauration est lancée lorsque des problèmes sont détectés.

1. **Phase d’achèvement** : finalisation du déploiement en résiliant l’environnement bleu ou en le maintenant pour d’éventuels scénarios de restauration, en fonction de votre configuration.

## Flux de travail
<a name="blue-green-deployment-workflow"></a>

Le schéma suivant illustre le flux de travail de blue/green déploiement complet, illustrant l'interaction entre Amazon ECS et l'Application Load Balancer :

![\[Schéma complet illustrant le processus de blue/green déploiement dans Amazon ECS avec les interactions détaillées entre les composants, les phases de transfert du trafic et les points de contrôle de surveillance\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/images/blue-green.png)


Le processus de déploiement amélioré inclut les étapes détaillées suivantes :

1. **État initial** : le service bleu (production actuelle) gère 100 % du trafic de production. L’Application Load Balancer possède un écouteur unique avec des règles qui acheminent toutes les requêtes vers le groupe cible bleu contenant des tâches bleues saines.

1. **Allocation d’un environnement vert** : Amazon ECS crée de nouvelles tâches à l’aide de la définition de tâche mise à jour. Ces tâches sont enregistrées auprès d’un nouveau groupe cible vert, mais ne reçoivent aucun trafic au départ.

1. **Validation de la surveillance de l’état** : l’Application Load Balancer effectue des surveillances de l’état sur les tâches vertes. Ce n’est que lorsque les tâches vertes ont satisfait aux surveillances de l’état que le déploiement passe à la phase suivante.

1. **Routage du trafic de test** : si elles sont configurées, les règles d’écoute de l’Application Load Balancer acheminent certains types de trafic (tels que les requêtes avec des en-têtes de test) vers l’environnement vert à des fins de validation, tandis que le trafic de production reste sur l’environnement bleu. Ceci est contrôlé par le même écouteur qui gère le trafic de production, en utilisant des règles différentes basées sur les attributs des requêtes.

1. **Transfert du trafic de production** : en fonction de la configuration de déploiement, le trafic passe du bleu au vert. Dans les blue/green déploiements ECS, il s'agit d'un changement immédiat (all-at-once) où 100 % du trafic est transféré de l'environnement bleu vers l'environnement vert. L’Application Load Balancer utilise un écouteur unique avec des règles d’écoute qui contrôlent la distribution du trafic entre les groupes cibles bleus et verts en fonction des pondérations.

1. **Surveillance et validation** : tout au long du transfert de trafic, Amazon ECS surveille les CloudWatch métriques, les états d'alarme et l'état du déploiement. Des déclencheurs de restauration automatique s’activent si des problèmes sont détectés.

1. **Durée de l’intégration** : durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément après le transfert du trafic de production.

1. **Résiliation de l’environnement bleu** : une fois le transfert de trafic et la validation réussis, l’environnement bleu est résilié pour libérer les ressources du cluster, ou maintenu pour permettre une restauration rapide.

1. **État final** : l’environnement vert devient le nouvel environnement de production, gérant 100 % du trafic. Le déploiement est marqué comme réussi.

## Étapes du cycle de vie du déploiement
<a name="blue-green-deployment-stages"></a>

Le processus de blue/green déploiement passe par des étapes distinctes du cycle de vie (une série d'événements au cours de l'opération de déploiement, tels que « après le transfert du trafic de production »), chacune comportant des responsabilités et des points de contrôle de validation spécifiques. La compréhension de ces étapes vous permet de suivre la progression du déploiement et de résoudre les problèmes de manière efficace.

 Chaque étape du cycle de vie peut durer jusqu’à 24 heures. Nous recommandons que la valeur reste inférieure à 24 heures. Cela est dû au fait que les processus asynchrones ont besoin de temps pour déclencher les hooks. Le système expire, échoue au déploiement, puis lance une restauration après une période de 24 heures. CloudFormation les déploiements sont soumis à des restrictions de délai d'expiration supplémentaires. Bien que la limite de 24 heures reste en vigueur, elle CloudFormation impose une limite de 36 heures à l'ensemble du déploiement. CloudFormation échoue au déploiement, puis lance une annulation si le processus ne se termine pas dans les 36 heures.


| Étapes du cycle de vie | Description | Utiliser cette étape pour le hook de cycle de vie ? | 
| --- | --- | --- | 
| RECONCILE\$1SERVICE | Cette étape ne se produit que lorsque vous démarrez un nouveau déploiement de service avec plus d’une révision de service dans un état ACTIF. | Oui | 
| PRE\$1SCALE\$1UP | La révision de service verte n’a pas commencé. La révision de service bleue gère 100 % du trafic de production. Il n’y a aucun trafic de test. | Oui | 
| SCALE\$1UP | Le moment où la révision de service verte augmente verticalement jusqu’à 100 % et lance de nouvelles tâches. La révision de service verte ne génère aucun trafic pour le moment. | Non | 
| POST\$1SCALE\$1UP | La révision de service verte a commencé. La révision de service bleue gère 100 % du trafic de production. Il n’y a aucun trafic de test. | Oui | 
| TEST\$1TRAFFIC\$1SHIFT | Les révisions de service bleues et vertes sont en cours. La révision de service bleue gère 100 % du trafic de production. La révision de service verte passe de 0 % à 100 % du trafic de test. | Oui | 
| POST\$1TEST\$1TRAFFIC\$1SHIFT | Le transfert du trafic de test est terminé. La révision de service verte gère 100 % du trafic de test. | Oui | 
| PRODUCTION\$1TRAFFIC\$1SHIFT | Le trafic de production est transféré vers la révision de service verte. La révision de service verte passe de 0 % à 100 % du trafic de production. | Oui | 
| POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT | Le transfert du trafic de production est terminé. | Oui | 
| BAKE\$1TIME | Durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément. | Non | 
| CLEAN\$1UP | La révision de service bleue a été complètement réduite à 0 tâches en cours d’exécution. Au terme de cette étape, la révision de service verte devient la révision de service de production. | Non | 

Chaque étape du cycle de vie comprend des points de contrôle de validation intégrés qui doivent être validés avant de passer à l’étape suivante. Si une validation échoue, le déploiement peut être automatiquement annulé pour garantir la disponibilité et la fiabilité du service.

Lorsque vous utilisez une fonction Lambda, celle-ci doit terminer le travail ou renvoyer EN\$1COURS dans les 15 minutes. Vous pouvez utiliser le `callBackDelaySeconds` pour retarder l’appel à Lambda. Pour plus d'informations, consultez [la fonction app.py](https://github.com/aws-samples/sample-amazon-ecs-blue-green-deployment-patterns/blob/main/ecs-bluegreen-lifecycle-hooks/src/approvalFunction/app.py#L20-L25) dans le sample-amazon-ecs-blue champ - green-deployment-patterns on GitHub.

# Ressources requises pour les blue/green déploiements Amazon ECS
<a name="blue-green-deployment-implementation"></a>

Pour utiliser un blue/green déploiement avec transfert de trafic géré, votre service doit utiliser l'une des fonctionnalités suivantes :
+ Elastic Load Balancing
+ Service Connect

Les services qui n'utilisent pas Service Discovery, Service Connect, VPC Lattice ou Elastic Load Balancing peuvent également utiliser des blue/green déploiements, mais ne bénéficient d'aucun des avantages de la gestion du transfert de trafic.

La liste suivante fournit un aperçu général de ce que vous devez configurer pour les blue/green déploiements Amazon ECS :
+ Votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect Configurez les ressources appropriées.
  + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
  + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
  + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).
+ Définissez le contrôleur de déploiement de service sur `ECS`.
+ Configurez la stratégie de déploiement sur `blue/green` dans votre définition de service.
+ Configurez éventuellement des paramètres supplémentaires tels que :
  + La durée de l’intégration pour le nouveau déploiement
  + CloudWatch alarmes pour annulation automatique
  + Les hooks de cycle de vie du déploiement pour les tests (il s’agit de fonctions Lambda qui s’exécutent à des étapes de déploiement spécifiées)

## Bonnes pratiques
<a name="blue-green-deployment-best-practices"></a>

Suivez ces bonnes pratiques pour réussir vos blue/green déploiements Amazon ECS :
+ Configurez les surveillances de l’état appropriées qui reflètent précisément l’état de votre application.
+ Définissez une durée de l’intégration permettant de tester suffisamment le déploiement vert.
+ Implémentez des CloudWatch alarmes pour détecter automatiquement les problèmes et déclencher des annulations.
+ Utilisez les hooks de cycle de vie pour effectuer des tests automatisés à chaque étape du déploiement.
+ Assurez-vous que votre application peut gérer les révisions de service bleues et vertes exécutées simultanément.
+ Prévoyez une capacité de cluster suffisante pour gérer les deux révisions de service lors du déploiement.
+ Testez vos procédures de restauration avant de les mettre en œuvre en production.

# Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary
<a name="alb-resources-for-blue-green"></a>

Pour utiliser les équilibreurs de charge d'application avec les blue/green déploiements Amazon ECS, vous devez configurer des ressources spécifiques qui permettent le routage du trafic entre les révisions de service bleues et vertes. 

## Groupes cibles
<a name="alb-target-groups"></a>

Pour les blue/green déploiements avec Elastic Load Balancing, vous devez créer deux groupes cibles :
+ Un groupe cible principal pour la révision de service bleue (trafic de production actuel)
+ Un autre groupe cible pour la révision de service verte (nouvelle version)

Les deux groupes cibles doivent être configurés avec les paramètres suivants :
+ Type de cible : `IP` (pour Fargate ou EC2 en mode réseau `awsvpc`)
+ Protocole : `HTTP` (ou le protocole utilisé par votre application)
+ Port : port sur lequel votre application écoute (généralement `80` pour le protocole HTTP)
+ VPC : le même VPC que vos tâches Amazon ECS
+ Paramètres de surveillance de l’état : configurés pour vérifier correctement l’état de votre application

Au cours d'un blue/green déploiement, Amazon ECS enregistre automatiquement les tâches auprès du groupe cible approprié en fonction de l'étape de déploiement.

**Example Création de groupes cibles pour un Application Load Balancer**  
Les commandes CLI suivantes créent deux groupes cibles à utiliser avec un Application Load Balancer dans le cadre d'un blue/green déploiement :  

```
aws elbv2 create-target-group \
    --name blue-target-group \
    --protocol HTTP \
    --port 80 \
    --vpc-id vpc-abcd1234 \
    --target-type ip \
    --health-check-path / \
    --health-check-protocol HTTP \
    --health-check-interval-seconds 30 \
    --health-check-timeout-seconds 5 \
    --healthy-threshold-count 2 \
    --unhealthy-threshold-count 2

aws elbv2 create-target-group \
    --name green-target-group \
    --protocol HTTP \
    --port 80 \
    --vpc-id vpc-abcd1234 \
    --target-type ip \
    --health-check-path / \
    --health-check-protocol HTTP \
    --health-check-interval-seconds 30 \
    --health-check-timeout-seconds 5 \
    --healthy-threshold-count 2 \
    --unhealthy-threshold-count 2
```

## Application Load Balancer
<a name="alb-load-balancer"></a>

Vous devez créer un Application Load Balancer avec la configuration suivante :
+ Schéma : connecté à Internet ou interne, selon vos besoins
+ Type d'adresse IP : IPv4
+ VPC : le même VPC que vos tâches Amazon ECS
+ Sous-réseaux : au moins deux sous-réseaux dans des zones de disponibilité différentes
+ Groupes de sécurité : groupe de sécurité qui autorise le trafic sur les ports de l’écouteur

Le groupe de sécurité attaché à l’Application Load Balancer doit disposer d’une règle sortante qui autorise le trafic vers le groupe de sécurité associé à vos tâches Amazon ECS.

**Example Création d'un équilibreur de charge Application Load Balancer**  
Les commandes CLI suivantes créent un Application Load Balancer pour une utilisation dans un déploiement bleu/vert :  

```
aws elbv2 create-load-balancer \
    --name my-application-load-balancer \
    --type application \
    --security-groups sg-abcd1234 \
    --subnets subnet-12345678 subnet-87654321
```

## Écouteurs et règles
<a name="alb-listeners"></a>

Pour les blue/green déploiements, vous devez configurer des écouteurs sur votre Application Load Balancer :
+ Écouteur de production : gère le trafic de production (généralement sur le port 80 ou 443)
  + Transfère initialement le trafic au groupe cible principal (révision de service bleue)
  + Après le déploiement, transfert le trafic vers le groupe cible alternatif (révision de service verte)
+ Écouteur de test (facultatif) : gère le trafic de test pour valider la révision de service verte avant de passer au trafic de production.
  + Peut être configuré sur un autre port (par exemple, 8080 ou 8443)
  + Transfère le trafic vers le groupe cible alternatif (révision de service verte) pendant les tests

Au cours d'un blue/green déploiement, Amazon ECS met automatiquement à jour les règles du récepteur pour acheminer le trafic vers le groupe cible approprié en fonction de la phase de déploiement.

**Example Création d’un écouteur de production**  
La commande CLI suivante crée un écouteur de production sur le port 80 qui transmet le trafic au groupe cible principal (bleu) :  

```
aws elbv2 create-listener \
    --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \
    --protocol HTTP \
    --port 80 \
    --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/abcdef123456
```

**Example Création d’un écouteur de test**  
La commande CLI suivante crée un écouteur de test sur le port 8080 qui transfère le trafic vers le groupe cible alternatif (vert) :  

```
aws elbv2 create-listener \
    --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/app/my-application-load-balancer/abcdef123456 \
    --protocol HTTP \
    --port 8080 \
    --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
```

**Example Création d’une règle d’écoute pour le routage basé sur le chemin**  
La commande CLI suivante crée une règle qui transmet le trafic d’un chemin spécifique au groupe cible vert à des fins de test :  

```
aws elbv2 create-rule \
    --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \
    --priority 10 \
    --conditions Field=path-pattern,Values='/test/*' \
    --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
```

**Example Création d’une règle d’écoute pour le routage basé sur l’en-tête**  
La commande CLI suivante crée une règle qui transfère le trafic avec un en-tête spécifique vers le groupe cible vert à des fins de test :  

```
aws elbv2 create-rule \
    --listener-arn arn:aws:elasticloadbalancing:region:123456789012:listener/app/my-application-load-balancer/abcdef123456/ghijkl789012 \
    --priority 20 \
    --conditions Field=http-header,HttpHeaderConfig='{Name=X-Environment,Values=[test]}' \
    --actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/ghijkl789012
```

## Configuration du service
<a name="alb-service-configuration"></a>

Vous devez disposer des autorisations nécessaires pour autoriser Amazon ECS à gérer les ressources de l’équilibreur de charge dans vos clusters en votre nom. Pour de plus amples informations, veuillez consulter [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md). 

Lorsque vous créez ou mettez à jour un service Amazon ECS pour blue/green des déploiements avec Elastic Load Balancing, vous devez spécifier la configuration suivante.

Remplacez le *user-input* par vos valeurs.

Les principaux composants de cette configuration sont les suivants :
+ `targetGroupArn` : l’ARN du groupe cible principal (révision de service bleue).
+ `alternateTargetGroupArn` : l’ARN du groupe cible alternatif (révision de service verte).
+ `productionListenerRule` : l’ARN de la règle d’écoute du trafic de production.
+ `roleArn` : l’ARN du rôle qui permet à Amazon ECS de gérer les ressources Elastic Load Balancing.
+ `strategy` : l’défini sur `BLUE_GREEN` pour activer les déploiements bleu/vert.
+ `bakeTimeInMinutes` : la durée pendant laquelle les révisions de service bleues et vertes se déroulent simultanément après le transfert du trafic de production.
+ `TestListenerRule` : l’ARN de la règle d’écoute du trafic de test. Ce paramètre est facultatif.

```
{
    "loadBalancers": [
        {
            "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/primary-target-group/abcdef123456",
            "containerName": "container-name",
            "containerPort": 80,
            "advancedConfiguration": {
                "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:account-id:targetgroup/alternate-target-group/ghijkl789012",
                "productionListenerRule": "arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/load-balancer-name/abcdef123456/listener/ghijkl789012/rule/mnopqr345678",
                "roleArn": "arn:aws:iam::123456789012:role/ecs-elb-role"
            }
        }
    ],
    "deploymentConfiguration": {
        "strategy": "BLUE_GREEN",
        "maximumPercent": 200,
        "minimumHealthyPercent": 100,
        "bakeTimeInMinutes": 5
    }
}
```

## Flux de trafic pendant le déploiement
<a name="alb-traffic-flow"></a>

Lors d'un blue/green déploiement avec Elastic Load Balancing, le trafic circule dans le système comme suit :

1. *État initial* : tout le trafic de production est acheminé vers le groupe cible principal (révision de service bleue).

1. *Déploiement de la révision de service verte* : Amazon ECS déploie les nouvelles tâches et les enregistre auprès du groupe cible alternatif.

1. *Trafic de test* : si un écouteur de test est configuré, le trafic de test est acheminé vers le groupe cible alternatif pour valider la révision de service verte.

1. *Transfert du trafic de production* : Amazon ECS met à jour la règle d’écoute de production pour acheminer le trafic vers le groupe cible alternatif (révision de service verte).

1. *Durée de l’intégration* : durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément après le transfert du trafic de production.

1. *Achèvement* : après un déploiement réussi, la révision de service bleue est résiliée.

Si des problèmes sont détectés lors du déploiement, Amazon ECS peut automatiquement procéder à une restauration en redirigeant le trafic vers le groupe cible principal (révision de service bleue).

# Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary
<a name="nlb-resources-for-blue-green"></a>

Pour utiliser un Network Load Balancer avec les blue/green déploiements Amazon ECS, vous devez configurer des ressources spécifiques qui permettent le routage du trafic entre les révisions de service bleues et vertes. Cette section explique les composants requis et leur configuration.

Lorsque votre configuration inclut un Network Load Balancer, Amazon ECS ajoute un délai de 10 minutes aux étapes du cycle de vie suivantes :
+ TEST\$1TRAFFIC\$1SHIFT
+ PRODUCTION\$1TRAFFIC\$1SHIFT

Ce délai est à l’origine des problèmes de synchronisation du Network Load Balancer, qui peuvent entraîner une inadéquation entre les pondérations de trafic configurées et le routage réel du trafic dans le plan de données. 

## Groupes cibles
<a name="nlb-target-groups"></a>

Pour les blue/green déploiements avec un Network Load Balancer, vous devez créer deux groupes cibles :
+ Un groupe cible principal pour la révision de service bleue (trafic de production actuel)
+ Un autre groupe cible pour la révision de service verte (nouvelle révision de service)

Les deux groupes cibles doivent être configurés avec les paramètres suivants :
+ Type de cible : `ip` (pour Fargate ou EC2 en mode réseau `awsvpc`)
+ Protocole : `TCP` (ou le protocole utilisé par votre application)
+ Port : port sur lequel votre application écoute (généralement `80` pour le protocole HTTP)
+ VPC : le même VPC que vos tâches Amazon ECS
+ Paramètres de surveillance de l’état : configurés pour vérifier correctement l’état de votre application

  Pour les surveillances de l’état du protocole TCP, le Network Load Balancer établit une connexion TCP avec la cible. Si la connexion est réussie, la cible est considérée comme saine.

  Pour les bilans de HTTP/HTTPS santé, le Network Load Balancer envoie une HTTP/HTTPS demande à la cible et vérifie la réponse.

Au cours d'un blue/green déploiement, Amazon ECS enregistre automatiquement les tâches auprès du groupe cible approprié en fonction de l'étape de déploiement.

**Example Création de groupes cibles pour un Network Load Balancer**  
Les commandes AWS CLI suivantes créent deux groupes cibles à utiliser avec un Network Load Balancer dans le cadre d'un blue/green déploiement :  

```
aws elbv2 create-target-group \
    --name blue-target-group \
    --protocol TCP \
    --port 80 \
    --vpc-id vpc-abcd1234 \
    --target-type ip \
    --health-check-protocol TCP

aws elbv2 create-target-group \
    --name green-target-group \
    --protocol TCP \
    --port 80 \
    --vpc-id vpc-abcd1234 \
    --target-type ip \
    --health-check-protocol TCP
```

## Network Load Balancer
<a name="nlb-load-balancer"></a>

Vous devez créer un Network Load Balancer avec la configuration suivante :
+ Schéma : connecté à Internet ou interne, selon vos besoins
+ Type d'adresse IP : IPv4
+ VPC : le même VPC que vos tâches Amazon ECS
+ Sous-réseaux : au moins deux sous-réseaux dans des zones de disponibilité différentes

Contrairement aux Application Load Balancer, les Network Load Balancer fonctionnent au niveau de la couche transport (couche 4) et n’utilisent pas de groupes de sécurité. Vous devez plutôt vous assurer que les groupes de sécurité associés à vos tâches Amazon ECS autorisent le trafic provenant du Network Load Balancer sur les ports de l’écouteur.

**Example Créer un Network Load Balancer**  
La commande AWS CLI suivante crée un Network Load Balancer à utiliser dans le cadre d'un blue/green déploiement :  

```
aws elbv2 create-load-balancer \
    --name my-network-load-balancer \
    --type network \
    --subnets subnet-12345678 subnet-87654321
```

## Considérations relatives à l'utilisation du NLB lors de déploiements blue/green
<a name="nlb-considerations"></a>

Lorsque vous utilisez un Network Load Balancer pour les blue/green déploiements, tenez compte des points suivants :
+ **Fonctionnement de couche 4** : les Network Load Balancer fonctionnent au niveau de la couche transport (couche 4) et n’inspectent pas le contenu de la couche application (couche 7). Cela signifie que vous ne pouvez pas utiliser les en-têtes ou les chemins HTTP pour les décisions de routage.
+ **Surveillance de l’état** : les surveillances de l’état du Network Load Balancer sont limitées aux protocoles TCP, HTTP ou HTTPS. Pour les surveillances de l’état du protocole TCP, le Network Load Balancer vérifie uniquement que la connexion peut être établie.
+ **Préservation de la connexion** : les Network Load Balancer préservent l’adresse IP source du client, ce qui peut être utile à des fins de sécurité et de journalisation.
+ **Adresses IP statiques** : les Network Load Balancer fournissent des adresses IP statiques pour chaque sous-réseau, ce qui peut être utile pour les listes blanches ou lorsque les clients doivent se connecter à une adresse IP fixe.
+ **Trafic de test** : étant donné que les Network Load Balancer ne prennent pas en charge le routage basé sur le contenu, le trafic de test doit être envoyé vers un port différent du trafic de production.

## Écouteurs et règles
<a name="nlb-listeners"></a>

Pour les blue/green déploiements avec un Network Load Balancer, vous devez configurer des écouteurs :
+ Écouteur de production : gère le trafic de production (généralement sur le port 80 ou 443)
  + Transfère initialement le trafic au groupe cible principal (révision de service bleue)
  + Après le déploiement, transfert le trafic vers le groupe cible alternatif (révision de service verte)
+ Écouteur de test (facultatif) : gère le trafic de test pour valider la révision de service verte avant de passer au trafic de production.
  + Peut être configuré sur un autre port (par exemple, 8080 ou 8443)
  + Transfère le trafic vers le groupe cible alternatif (révision de service verte) pendant les tests

Contrairement aux Application Load Balancer, les Network Load Balancer ne prennent pas en charge les règles de routage basées sur le contenu. Au lieu de cela, le trafic est acheminé en fonction du port et du protocole de l’écouteur.

Les commandes AWS CLI suivantes créent des écouteurs de production et de test pour un Network Load Balancer :

Remplacez le *user-input* par vos valeurs.

```
aws elbv2 create-listener \
    --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456 \
    --protocol TCP \
    --port 80 \
    --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456

aws elbv2 create-listener \
    --load-balancer-arn arn:aws:elasticloadbalancing:region:123456789012:loadbalancer/net/my-network-lb/1234567890123456 \
    --protocol TCP \
    --port 8080 \
    --default-actions Type=forward, TargetGroupArn=arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456
```

## Configuration du service
<a name="nlb-service-configuration"></a>

Vous devez disposer des autorisations nécessaires pour autoriser Amazon ECS à gérer les ressources de l’équilibreur de charge dans vos clusters en votre nom. Pour de plus amples informations, veuillez consulter [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md). 

Lorsque vous créez ou mettez à jour un service Amazon ECS pour blue/green des déploiements avec un Network Load Balancer, vous devez spécifier la configuration suivante :

Remplacez le *user-input* par vos valeurs.

Les principaux composants de cette configuration sont les suivants :
+ `targetGroupArn` : l’ARN du groupe cible principal (révision de service bleue)
+ `alternateTargetGroupArn` : l’ARN du groupe cible alternatif (révision de service verte)
+ `productionListenerRule` : l’ARN de l’écouteur du trafic de production.
+ `testListenerRule` : (facultatif) l’ARN de l’écouteur du trafic de test
+ `roleArn` : l’ARN du rôle qui permet à Amazon ECS de gérer les ressources Network Load Balancer
+ `strategy`: défini sur pour activer `BLUE_GREEN` les blue/green déploiements
+ `bakeTimeInMinutes`: durée pendant laquelle les révisions du service bleu et vert sont exécutées simultanément après le déplacement du trafic de production

```
{
    "loadBalancers": [
        {
            "targetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/blue-target-group/1234567890123456",
            "containerName": "container-name",
            "containerPort": 80,
            "advancedConfiguration": {
                "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:region:123456789012:targetgroup/green-target-group/1234567890123456",
                "productionListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/1234567890123456",
                "testListenerRule": "arn:aws:elasticloadbalancing:region:123456789012:listener/net/my-network-lb/1234567890123456/2345678901234567",
                "roleArn": "arn:aws:iam::123456789012:role/ecs-nlb-role"
            }
        }
    ],
    "deploymentConfiguration": {
        "strategy": "BLUE_GREEN",
        "maximumPercent": 200,
        "minimumHealthyPercent": 100,
        "bakeTimeInMinutes": 5
    }
}
```

## Flux de trafic pendant le déploiement
<a name="nlb-traffic-flow"></a>

Lors d'un blue/green déploiement avec un Network Load Balancer, le trafic circule dans le système comme suit :

1. *État initial* : tout le trafic de production est acheminé vers le groupe cible principal (révision de service bleue).

1. *Déploiement de la révision de service verte* : Amazon ECS déploie les nouvelles tâches et les enregistre auprès du groupe cible alternatif.

1. *Trafic de test* : si un écouteur de test est configuré, le trafic de test est acheminé vers le groupe cible alternatif pour valider la révision de service verte.

1. *Transfert du trafic de production* : Amazon ECS met à jour l’écouteur de production pour acheminer le trafic vers le groupe cible alternatif (révision de service verte).

1. *Durée de l’intégration* : durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément après le transfert du trafic de production.

1. *Achèvement* : après un déploiement réussi, la révision de service bleue est résiliée.

Si des problèmes sont détectés lors du déploiement, Amazon ECS peut automatiquement procéder à une restauration en redirigeant le trafic vers le groupe cible principal (révision de service bleue).

# Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary
<a name="service-connect-blue-green"></a>

Lorsque vous utilisez Service Connect avec blue/green des déploiements, vous devez configurer des composants spécifiques pour permettre le routage correct du trafic entre les révisions de service bleues et vertes. Cette section explique les composants requis et leur configuration.

## Présentation de l’architecture
<a name="service-connect-blue-green-architecture"></a>

Service Connect développe à la fois des fonctionnalités de découverte de services et de maillage de services par le biais d’un proxy parallèle géré qui est automatiquement injecté dans vos tâches Amazon ECS. Ces proxys gèrent les décisions de routage, les nouvelles tentatives et la collecte des métriques, tout en AWS Cloud Map fournissant le backend du registre des services. Lorsque vous déployez un service avec Service Connect activé, le service s'enregistre et les AWS Cloud Map services clients le découvrent via l'espace de noms.

Dans une implémentation standard de Service Connect, les services client se connectent à des noms de service logiques, et le proxy sidecar gère le routage vers les instances de service réelles. Avec blue/green les déploiements, ce modèle est étendu pour inclure le routage du trafic de test via la `testTrafficRules` configuration.

Au cours d'un blue/green déploiement, les composants clés suivants fonctionnent ensemble :
+ **Proxy Service Connect** : tout le trafic entre les services passe par le proxy Service Connect, qui prend les décisions de routage en fonction de la configuration.
+ **AWS Cloud Map Enregistrement** : les déploiements bleu et vert sont enregistrés auprès de AWS Cloud Map, mais le déploiement vert est initialement enregistré en tant que point de terminaison « test ».
+ **Routage du trafic de test** : les `testTrafficRules` dans la configuration de Service Connect déterminent comment identifier et acheminer le trafic de test vers le déploiement vert. Cela se fait par le biais d’un **routage basé sur les en-têtes**, dans le cadre duquel des en-têtes HTTP spécifiques contenus dans les requêtes dirigent le trafic vers la révision de test. Par défaut, Service Connect reconnaît l’en-tête `x-amzn-ecs-blue-green-test` des protocoles HTTP lorsqu’aucune règle personnalisée n’est spécifiée.
+ **Configuration du client** : tous les clients de l’espace de noms reçoivent automatiquement les itinéraires de production et de test, mais seules les requêtes correspondant aux règles de test seront transférées vers le déploiement vert.

La puissance de cette approche réside dans le fait qu’elle permet de gérer la complexité de la découverte de service pendant les transitions. À mesure que le trafic passe du déploiement bleu au déploiement vert, tous les mécanismes de connectivité et de découverte sont automatiquement mis à jour. Il n’est pas nécessaire de mettre à jour les enregistrements DNS, de reconfigurer les équilibreurs de charge ou de déployer les modifications apportées à la découverte de service séparément, car le maillage de services gère tout cela.

## Routage et tests du trafic
<a name="service-connect-blue-green-traffic-routing"></a>

Service Connect fournit des fonctionnalités avancées de routage du trafic pour les blue/green déploiements, notamment le routage basé sur les en-têtes et la configuration d'alias client pour les scénarios de test.

### Test des règles d’en-tête du trafic
<a name="service-connect-test-traffic-header-rules"></a>

Au cours blue/green des déploiements, vous pouvez configurer les règles d'en-tête du trafic de test pour acheminer des demandes spécifiques vers la (nouvelle) révision du service vert à des fins de test. Cela vous permet de valider la nouvelle version avec un trafic contrôlé avant de terminer le déploiement.

Service Connect utilise le **routage basé sur les en-têtes** pour identifier le trafic de test. Par défaut, Service Connect reconnaît l’en-tête `x-amzn-ecs-blue-green-test` des protocoles HTTP lorsqu’aucune règle personnalisée n’est spécifiée. Lorsque cet en-tête est présent dans une requête, le proxy Service Connect achemine automatiquement la requête vers le déploiement vert à des fins de test.

Les règles d’en-tête du trafic de test vous permettent :
+ d’acheminer les demandes avec des en-têtes spécifiques vers la révision de service verte ;
+ de tester de nouvelles fonctionnalités avec un sous-ensemble de trafic ;
+ de valider le comportement du service avant le basculement complet du trafic ;
+ de mettre en œuvre des stratégies de test canary.
+ de réaliser des tests d’intégration dans un environnement similaire à celui de la production.

Le mécanisme de routage basé sur les en-têtes fonctionne en toute transparence avec votre architecture applicative existante. Les services clients n'ont pas besoin de connaître le processus de blue/green déploiement : ils incluent simplement les en-têtes appropriés lors de l'envoi de demandes de test, et le proxy Service Connect gère automatiquement la logique de routage.

Pour plus d'informations sur la configuration des règles d'en-tête du trafic de test, consultez [ServiceConnectTestTrafficHeaderRules](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectTestTrafficHeaderRules.html)le manuel *Amazon Elastic Container Service API Reference*.

### Règles de correspondance des en-têtes
<a name="service-connect-header-match-rules"></a>

Les règles de correspondance des en-têtes définissent les critères de routage du trafic de test lors blue/green des déploiements. Vous pouvez configurer plusieurs conditions de correspondance pour contrôler avec précision les demandes qui sont acheminées vers la révision de service verte.

La correspondance des en-têtes prend en charge :
+ la correspondance exacte des valeurs d’en-tête ;
+ la vérification de la présence d’en-têtes ;
+ la correspondance basée sur des modèles ;
+ plusieurs combinaisons d’en-têtes.

Les exemples de cas d’utilisation incluent le routage des demandes avec des chaînes d’agent utilisateur spécifiques, des versions d’API ou des indicateurs de fonctionnalité vers le service vert à des fins de test.

Pour plus d'informations sur la configuration de la correspondance des en-têtes, consultez [ServiceConnectTestTrafficHeaderMatchRules](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectTestTrafficHeaderMatchRules.html)le manuel *Amazon Elastic Container Service API Reference*.

### Alias clients pour les déploiements blue/green
<a name="service-connect-client-alias-blue-green"></a>

Les alias de client fournissent des points de terminaison DNS stables pour les services lors blue/green des déploiements. Ils permettent un routage fluide du trafic entre les révisions de service bleues et vertes sans obliger les applications clientes à modifier leurs points de terminaison de connexion.

Lors d'un blue/green déploiement, les alias du client :
+ maintiennent des noms DNS cohérents pour les connexions client ;
+ permettent la commutation automatique du trafic entre les révisions de service ;
+ prennent en charge les stratégies de migration progressive du trafic ;
+ fournissent des fonctionnalités de restauration en redirigeant le trafic vers la version bleue.

Vous pouvez configurer plusieurs alias de client pour différents ports ou protocoles, ce qui permet à des architectures de service complexes de maintenir la connectivité pendant les déploiements.

Pour plus d'informations sur la configuration des alias clients, consultez le [ServiceConnectClientAlias](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectClientAlias.html)manuel *Amazon Elastic Container Service API Reference*.

### Pratiques exemplaires en matière de test de routage du trafic :
<a name="service-connect-blue-green-best-practices"></a>

Lors de la mise en œuvre du routage du trafic pour blue/green les déploiements avec Service Connect, tenez compte des meilleures pratiques suivantes :
+ **Commencer par des tests basés sur les en-têtes** : utilisez les règles d’en-tête du trafic de test pour valider le service vert avec un trafic maîtrisé avant de transférer tout le trafic.
+ **Configurer les surveillances de l’état** : assurez-vous que les services bleu et vert disposent de surveillances de l’état appropriés configurés pour empêcher le routage du trafic vers des instances défectueuses.
+ **Surveiller les métriques de service** : suivez les indicateurs de performance clés des deux révisions de service pendant le déploiement afin d’identifier les problèmes à un stade précoce.
+ **Planifier une stratégie de restauration** : configurez les alias clients et les règles de routage pour permettre une restauration rapide du service bleu si des problèmes sont détectés.
+ **Tester la logique de correspondance des en-têtes** : validez vos règles de correspondance des en-têtes dans un environnement hors production avant de les appliquer à des déploiements de production.

## Flux de travail de blue/green déploiement de Service Connect
<a name="service-connect-blue-green-workflow"></a>

Comprendre comment Service Connect gère le processus de blue/green déploiement vous permet de mettre en œuvre et de résoudre efficacement vos déploiements. Le flux de travail suivant montre comment les différents composants interagissent au cours de chaque phase du déploiement.

### Phases de déploiement
<a name="service-connect-deployment-phases"></a>

Le blue/green déploiement de Service Connect passe par plusieurs phases distinctes :

1. **État initial** : le service bleu gère 100 % du trafic de production. Tous les services clients de l’espace de noms se connectent au service bleu via le nom de service logique configuré dans Service Connect.

1. **Enregistrement du service écologique** : Lorsque le déploiement écologique commence, il est enregistré en AWS Cloud Map tant que point de terminaison « test ». Le proxy Service Connect des services clients reçoit automatiquement les configurations d’itinéraires de production et de test.

1. **Routage du trafic de test** : les requêtes contenant les en-têtes de trafic de test (tels que `x-amzn-ecs-blue-green-test`) sont automatiquement acheminées vers le service vert par le proxy Service Connect. Le trafic de production continue d’affluer vers le service bleu.

1. **Préparation au transfert du trafic** : une fois les tests réussis, le processus de déploiement prépare le transfert du trafic de production. Les services bleus et verts restent enregistrés et sains.

1. **Transfert du trafic de production** : la configuration de Service Connect est mise à jour pour acheminer le trafic de production vers le service vert. Cela se produit automatiquement sans nécessiter de mises à jour du service client ou de modifications du DNS.

1. **Durée de l’intégration** : durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément après le transfert du trafic de production.

1. Annulation de l'**enregistrement du service bleu** : une fois le transfert de trafic et la validation réussis, le service bleu est désenregistré AWS Cloud Map et le déploiement est terminé.

### Comportement du proxy Service Connect
<a name="service-connect-proxy-behavior"></a>

Le proxy Service Connect joue un rôle crucial dans la gestion du trafic lors des blue/green déploiements. Comprendre son comportement vous aide à concevoir des stratégies de test et de déploiement efficaces.

Principaux comportements des proxys lors des blue/green déploiements :
+ **Découverte automatique des itinéraires** : le proxy découvre automatiquement les itinéraires de production et de test AWS Cloud Map sans qu'il soit nécessaire de redémarrer l'application ou de modifier la configuration.
+ **Routage basé sur les en-têtes** : le proxy examine les en-têtes des requêtes entrantes et achemine le trafic vers la version de service appropriée en fonction des règles de trafic de test configurées.
+ **Intégration de la surveillance de l’état** : le proxy n’achemine le trafic que vers des instances de service saines, excluant automatiquement les tâches défectueuses du groupe de routage.
+ **Nouvelle tentative et disjoncteur** : le proxy intègre une logique de réessai et des fonctionnalités de disjoncteur, améliorant ainsi la résilience lors des déploiements.
+ **Collecte de métriques** : le proxy collecte des métriques détaillées pour les services bleus et verts, permettant une surveillance complète lors des déploiements.

### Mise à jour de la découverte de service
<a name="service-connect-service-discovery-updates"></a>

L'un des principaux avantages de l'utilisation de Service Connect pour les blue/green déploiements est la gestion automatique des mises à jour de découverte de services. Les blue/green déploiements traditionnels nécessitent souvent des mises à jour DNS complexes ou une reconfiguration de l'équilibreur de charge, mais Service Connect gère ces modifications de manière transparente.

Au cours d’un déploiement, Service Connect gère les éléments suivants :
+ **Mises à jour de l’espace de noms** : l’espace de noms Service Connect inclut automatiquement les points de terminaison de service bleus et verts, avec des règles de routage appropriées.
+ **Configuration du client** : tous les services clients de l’espace de noms reçoivent automatiquement des informations de routage mises à jour sans nécessiter un redémarrage ni un redéploiement.
+ **Transition progressive** : les mises à jour de la découverte de service se font progressivement et en toute sécurité, sans perturber les requêtes en cours.
+ **Support de restauration** : si une restauration est nécessaire, Service Connect peut rapidement rétablir les configurations de découverte de service afin de rediriger le trafic vers le service bleu.

# Création d'un blue/green déploiement Amazon ECS
<a name="deploy-blue-green-service"></a>

 En utilisant les blue/green déploiements Amazon ECS, vous pouvez apporter et tester des modifications de service avant de les implémenter dans un environnement de production. 

## Conditions préalables
<a name="deploy-blue-green-service-prerequisites"></a>

Effectuez les opérations suivantes avant de démarrer un blue/green déploiement. 

1. Configurez les autorisations appropriées.
   + Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
   + Pour plus d’informations sur les autorisations Lambda, consultez la section[Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

1. Les blue/green déploiements Amazon ECS nécessitent que votre service utilise l'une des fonctionnalités suivantes : Configurez les ressources appropriées.
   + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
   + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
   + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).

1. Décidez si vous souhaitez exécuter des fonctions Lambda pendant les étapes du cycle de vie.
   + PRE\$1SCALE\$1UP
   + POST\$1SCALE\$1UP
   + TEST\$1TRAFFIC\$1SHIFT
   + POST\$1TEST\$1TRAFFIC\$1SHIFT
   + PRODUCTION\$1TRAFFIC\$1SHIFT
   + POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT

   Pour plus d’informations sur l’utilisation de Lambda, consultez la section [Créer une fonction Lambda avec la console](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function) dans le *Guide du développeur AWS Lambda *.

## Procédure
<a name="deploy-blue-green-service-procedure"></a>

Vous pouvez utiliser la console ou le AWS CLI pour créer un blue/green service Amazon ECS.

------
#### [ Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Déterminez la ressource à partir de laquelle vous lancez le service.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

   La page **Créer un service** s’affiche.

1. Sous **Détails du service**, procédez comme suit :

   1. Pour **Famille de définition de tâche**, choisissez la définition de tâche à utiliser. Ensuite, pour **Révision de définition de tâche**, saisissez la révision à utiliser.

   1. Pour **Service name** (Nom du service), saisissez un nom pour votre service.

1. Pour exécuter le service dans un cluster existant, pour **Cluster existant**, sélectionnez le cluster. Pour exécuter le service dans un nouveau cluster, choisissez **Créer un cluster** 

1. Choisissez comment vos tâches sont distribuées dans votre infrastructure de cluster. Sous **Configuration de calcul**, choisissez votre option.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

1. Sous **Configuration du déploiement**, procédez comme suit :

   1. Pour **Type de service**, choisissez **Replica**.

   1. Pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.

   1. Pour qu’Amazon ECS surveille la répartition des tâches entre les zones de disponibilité et les redistribue en cas de déséquilibre, sous **Rééquilibrage des services entre zones de disponibilité**, sélectionnez **Rééquilibrage des services entre zones de disponibilité**.

   1. Pour **Période de grâce pour la surveillance de l’état**, saisissez la durée (en secondes) pendant laquelle le planificateur de service ignore les surveillances de l’état de Elastic Load Balancing, VPC Lattice et des conteneurs qui ne sont pas saines après le démarrage initial d’une tâche. Si vous ne spécifiez aucune valeur pour la période de grâce de surveillance de l’état, la valeur par défaut 0 est utilisée.

1. 

   1. Pour **Durée de l’intégration**, saisissez le nombre de minutes pendant lesquelles les révisions de service bleues et vertes seront exécutées simultanément avant que la révision bleue ne soit résiliée. Cela laisse le temps de procéder à des vérifications et à des tests.

   1. (Facultatif) Exécutez des fonctions Lambda à des étapes spécifiques du déploiement. Sous **Hooks de cycle de vie du déploiement**, sélectionnez les étapes dans lesquelles exécuter les hooks de cycle de vie.

      Pour ajouter un hook de cycle de vie

      1. Choisissez **Ajouter**.

      1. Pour **Fonction Lambda**, saisissez le nom ou l’ARN de la fonction.

      1. Pour **Rôle**, sélectionnez le rôle IAM qui dispose de l’autorisation requise pour invoquer la fonction Lambda.

      1. Pour **Étapes du cycle de vie**, sélectionnez les étapes dans lesquelles la fonction Lambda doit être exécutée.

1. Pour configurer la manière dont Amazon ECS détecte et gère les échecs de déploiement, développez **Deployment failure detection** (Détection des échecs de déploiement), puis choisissez vos options. 

   1. Pour arrêter un déploiement lorsque les tâches ne peuvent pas démarrer, sélectionnez **Use the Amazon ECS deployment circuit breaker** (Utiliser le disjoncteur de déploiement Amazon ECS).

      Pour que le logiciel restaure automatiquement le dernier état de déploiement terminé lorsque le disjoncteur de déploiement définit le déploiement comme ayant échoué, sélectionnez **Restauration en cas d’échec**.

   1. Pour arrêter un déploiement en fonction des métriques de l'application, sélectionnez **Utiliser une ou plusieurs CloudWatch alarmes**. Ensuite, à partir du **nom de l'CloudWatch alarme**, choisissez les alarmes. Pour créer une nouvelle alarme, rendez-vous sur la CloudWatch console.

      Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsqu'une CloudWatch alarme indique que le déploiement a échoué, sélectionnez Annulation en **cas d'échec**.

1. (Facultatif) Pour interconnecter votre service à l’aide de Service Connect, développez **Service Connect**, puis spécifiez les éléments suivants :

   1.  Sélectionnez **Activer Service Connect**.

   1. Sous **Service Connect configuration** (Configuration de Service Connect), spécifiez le mode client.
      + Si votre service exécute une application client réseau qui doit uniquement se connecter à d’autres services de l’espace de noms, sélectionnez **Côté client uniquement**.
      + Si votre service exécute une application réseau ou un service Web et doit fournir des points de terminaison pour ce service, et se connecte à d'autres services dans l'espace de noms, choisissez **Client and server** (Client et serveur).

   1. Pour utiliser un espace de noms qui n'est pas l'espace de noms de cluster par défaut, dans **Namespace** (Espace de noms), choisissez l'espace de noms du service. Il peut s'agir d'un espace de noms créé séparément dans le même espace Région AWS dans votre région Compte AWS ou d'un espace de noms dans la même région qui est partagé avec votre compte en utilisant AWS Resource Access Manager ()AWS RAM. *Pour plus d'informations sur les AWS Cloud Map espaces de noms partagés, consultez la section [Partage d'espaces de AWS Cloud Map noms entre comptes](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) dans le Guide du AWS Cloud Map développeur.*

   1. (Facultatif) Configurez les règles d'en-tête du trafic de test pour les blue/green déploiements. Sous **Routage du trafic de test**, spécifiez les éléments suivants :

      1. Sélectionnez **Activer les règles d’en-tête du trafic de test** pour acheminer des requêtes spécifiques vers la révision de service verte pendant les tests.

      1. Pour **Règles de correspondance des en-têtes**, configurez les critères de routage du trafic de test suivants :
         + **Nom de l’en-tête** : saisissez le nom de l’en-tête HTTP correspondant (par exemple, `X-Test-Version` ou `User-Agent`).
         + **Type de correspondance** : choisissez les critères de correspondance :
           + **Correspondance exacte** : acheminer les requêtes dont la valeur d’en-tête correspond exactement à la valeur spécifiée
           + **En-tête présent** : acheminer les requêtes contenant l’en-tête spécifié, quelle que soit sa valeur
           + **Correspondance de modèle** : acheminer les requêtes dont la valeur d’en-tête correspond à un modèle spécifié
         + **Valeur d’en-tête** (si vous utilisez une correspondance exacte ou une correspondance de modèle) : saisissez la valeur ou le modèle à comparer.

         Vous pouvez ajouter plusieurs règles de correspondance d’en-têtes pour créer une logique de routage complexe. Les requêtes correspondant à l’une des règles configurées seront acheminées vers la version verte du service à des fins de test.

      1. Choisissez **Ajouter une règle d’en-tête** pour configurer des conditions de correspondance d’en-tête supplémentaires.
**Note**  
Les règles d’en-tête du trafic de test vous permettent de valider les nouvelles fonctionnalités avec un trafic contrôlé avant de procéder au déploiement complet. Cela vous permet de tester la révision de service verte avec des requêtes spécifiques (telles que celles provenant d’outils de test internes ou d’utilisateurs bêta) tout en maintenant un flux de trafic normal vers la révision de service bleue.

   1. (Facultatif) Spécifiez une configuration de journal. Sélectionnez **Utiliser la collecte de journaux**. L'option par défaut envoie les journaux du conteneur à CloudWatch Logs. Les autres options du pilote de journal sont configurées à l'aide de AWS FireLens. Pour de plus amples informations, veuillez consulter [Envoyer les journaux Amazon ECS à un AWS service ou AWS Partner](using_firelens.md).

      Voici une description plus détaillée de chaque destination de journal de conteneur.
      + **Amazon CloudWatch** — Configurez la tâche pour envoyer les journaux des conteneurs à CloudWatch Logs. Les options du pilote de journal par défaut sont fournies, ce qui permet de créer un groupe de CloudWatch journaux en votre nom. Pour spécifier un autre nom de groupe de journaux, modifiez les valeurs des options de pilote.
      + **Amazon Data Firehose** : configurez la tâche pour envoyer des journaux de conteneur à Firehose. Les options par défaut du pilote de journalisation sont fournies. Elles envoient les journaux vers un flux de livraison Firehose. Pour spécifier un autre nom de flux de diffusion, modifiez les valeurs des options de pilote.
      + **Amazon Kinesis Data Streams** : configurez la tâche pour envoyer des journaux de conteneur à Kinesis Data Streams. Les options par défaut du pilote de journalisation sont fournies. Elles permettent d’envoyer les journaux vers un flux Kinesis Data Streams. Pour spécifier un autre nom de flux, modifiez les valeurs des options de pilote.
      + **Amazon OpenSearch Service** — Configurez la tâche pour envoyer les journaux des conteneurs vers un domaine OpenSearch de service. Les options de pilote de journal doivent être fournies. 
      + **Simple Storage Service (Amazon S3)** : configurez la tâche pour envoyer des journaux de conteneur à un compartiment Simple Storage Service (Amazon S3). Les options de pilote de journal par défaut sont fournies, mais vous devez spécifier un nom de compartiment Simple Storage Service (Amazon S3) valide.

1. (Facultatif) Configurez l’**équilibrage de charge** pour un déploiement bleu/vert.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-blue-green-service.html)

1. (Facultatif) Pour vous aider à identifier votre service et vos tâches, développez **Tags** (balises), puis configurez vos balises.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Définitions de tâches**.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises d'un service, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Service**.

   Ajoutez ou supprimez une balise.
   + [Ajouter une balise] Choisissez **Add tag** (Ajouter une balise), puis procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

1. Choisissez **Créer**.

------
#### [ AWS CLI ]

1. Créez un fichier nommé `service-definition.json` avec le contenu suivant.

   Remplacez le *user-input* par vos valeurs.

   ```
   {
     "serviceName": "myBlueGreenService",
     "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster",
     "taskDefinition": "sample-fargate:1",
     "desiredCount": 5,
     "launchType": "FARGATE",
     "networkConfiguration": {
       "awsvpcConfiguration": {
         "subnets": [
           "subnet-09ce6e74c116a2299",
           "subnet-00bb3bd7a73526788",
           "subnet-0048a611aaec65477"
         ],
         "securityGroups": [
           "sg-09d45005497daa123"
         ],
         "assignPublicIp": "ENABLED"
       }
     },
     "deploymentController": {
       "type": "ECS"
     },
     "deploymentConfiguration": {
       "strategy": "BLUE_GREEN",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "bakeTimeInMinutes": 2,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       },
       "lifecycleHooks": [
         {
           "hookTargetArn": "arn:aws:lambda:us-west-2:7123456789012:function:checkExample",
           "roleArn": "arn:aws:iam::123456789012:role/ECSLifecycleHookInvoke",
           "lifecycleStages": [
             "PRE_SCALE_UP"
           ]
         }
       ]
     },
     "loadBalancers": [
       {
         "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197",
         "containerName": "fargate-app",
         "containerPort": 80,
         "advancedConfiguration": {
           "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199",
           "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-blue-green-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Exécutez `create-service`.

   Remplacez le *user-input* par vos valeurs.

   ```
   aws ecs create-service --cli-input-json file://service-definition.json
   ```

   Vous pouvez également utiliser l'exemple suivant qui crée un service de blue/green déploiement avec une configuration d'équilibreur de charge :

   ```
   aws ecs create-service \
      --cluster "arn:aws:ecs:us-west-2:123456789012:cluster/MyCluster" \
      --service-name "blue-green-example-service" \
      --task-definition "nginxServer:1" \
      --launch-type "FARGATE" \
      --network-configuration "awsvpcConfiguration={subnets=[subnet-12345,subnet-67890,subnet-abcdef,subnet-fedcba],securityGroups=[sg-12345],assignPublicIp=ENABLED}" \
      --desired-count 3 \
      --deployment-controller "type=ECS" \
      --deployment-configuration "strategy=BLUE_GREEN,maximumPercent=200,minimumHealthyPercent=100,bakeTimeInMinutes=0" \
      --load-balancers "targetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg1/abcdef1234567890,containerName=nginx,containerPort=80,advancedConfiguration={alternateTargetGroupArn=arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/MyBGtg2/0987654321fedcba,productionListenerRule=arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/MyLB/1234567890abcdef/1234567890abcdef,roleArn=arn:aws:iam::123456789012:role/ELBManagementRole}"
   ```

------

## Étapes suivantes
<a name="deploy-blue-green-service-next-steps"></a>
+ Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).
+ Surveillez le processus de déploiement pour vous assurer qu'il suit le blue/green modèle :
  + La révision de service verte est créée et augmentée horizontalement
  + Le trafic de test est acheminé vers la révision verte (si elle est configurée)
  + Le trafic de production est transféré vers la révision verte
  + Au terme de la durée de l’intégration, la révision bleue est résiliée

# Résolution des problèmes liés aux blue/green déploiements Amazon ECS
<a name="troubleshooting-blue-green"></a>

Ce qui suit fournit des solutions aux problèmes courants que vous pouvez rencontrer lors de l'utilisation de blue/green déploiements avec Amazon ECS. Blue/green des erreurs de déploiement peuvent survenir au cours des phases suivantes :
+ *Chemin synchrone* : erreurs qui apparaissent immédiatement en réponse aux appels d’API `CreateService` ou `UpdateService`.
+ *Chemin asynchrone* : erreurs qui apparaissent dans le champ `statusReason` de `DescribeServiceDeployments` et entraînent une restauration du déploiement

**Astuce**  
Vous pouvez utiliser les assistants [Serveur Amazon ECS MCP](ecs-mcp-introduction.md) dotés d'intelligence artificielle pour surveiller les déploiements et résoudre les problèmes de déploiement à l'aide du langage naturel.

## Erreurs de configuration de l’équilibreur de charge
<a name="troubleshooting-blue-green-load-balancer"></a>

La configuration de l'équilibreur de charge est un élément essentiel des blue/green déploiements dans Amazon ECS. Une configuration correcte des règles d’écoute, des groupes cibles et des types d’équilibreurs de charge est essentielle à la réussite des déploiements. Cette section couvre les problèmes courants de configuration des équilibreurs de charge qui peuvent entraîner l'échec blue/green des déploiements.

Pour résoudre les problèmes d’équilibreur de charge, il est important de comprendre la relation entre les règles d’écoute et les groupes cibles. Dans le cadre d'un blue/green déploiement :
+ La règle d’écoute de production dirige le trafic vers la révision de service actuellement active (bleue)
+ La règle d’écoute de test peut être utilisée pour valider la nouvelle révision de service (verte) avant le transfert du trafic de production
+ Les groupes cibles sont utilisés pour enregistrer les instances de conteneur à partir de chaque révision de service
+ Au cours du déploiement, le trafic passe progressivement de la révision de service bleue à la révision de service verte en ajustant les pondérations des groupes cibles dans les règles d’écoute

### Erreurs de configuration des règles d’écoute
<a name="troubleshooting-blue-green-listener-rules"></a>

Les problèmes suivants sont liés à une configuration incorrecte des règles d'écoute pour les blue/green déploiements.

Utilisation d’un ARN d’écouteur Application Load Balancer au lieu d’un ARN de règle d’écoute  
*Message d’erreur* : `productionListenerRule has an invalid ARN format. Must be RuleArn for ALB or ListenerArn for NLB. Got: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456`  
*Solution* : lorsque vous utilisez un Application Load Balancer, vous devez spécifier un ARN de règle d’écoute pour `productionListenerRule` et `testListenerRule`, et non un ARN d’écouteur. Pour les Network Load Balancer, vous devez utiliser l’ARN de l’écouteur.  
 Pour plus d’informations sur la manière de trouver l’ARN de l’écouteur, consultez la section [Écouteurs pour vos Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html) dans le *Guide de l’utilisateur Application Load Balancer*. L’ARN d’une règle a le format `arn:aws:elasticloadbalancing:region:account-id:listener-rule/app/...`.

Utiliser la même règle pour les écouteurs de production et de test  
*Message d’erreur* : `The following rules cannot be used as both production and test listener rules: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789`  
*Solution* : vous devez utiliser des règles d’écoute différentes pour le trafic de production et de test. Créez une règle d’écoute distincte pour le trafic de test qui achemine le trafic vers votre groupe cible de test.

Groupe cible non associé aux règles d’écoute  
*Message d’erreur* : `Service deployment rolled back because of invalid networking configuration: Target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myAlternateTG/abc123 is not associated with either productionListenerRule or testListenerRule.`  
*Solution* : le groupe cible principal et le groupe cible secondaire doivent être associés à la règle d’écoute de production ou à la règle d’écoute de test. Mettez à jour la configuration de votre équilibreur de charge pour vous assurer que les deux groupes cibles sont correctement associés à vos règles d’écoute.

Règle d’écoute de test manquante avec un Application Load Balancer  
*Message d’erreur* : `For Application LoadBalancer, testListenerRule is required when productionListenerRule is not associated with both targetGroup and alternateTargetGroup`  
*Solution* : lorsque vous utilisez un Application Load Balancer, si aucun des deux groupes cibles n’est associé à la règle d’écoute de production, vous devez spécifier une règle d’écoute de test. Ajoutez une `testListenerRule` à votre configuration et assurez-vous que les deux groupes cibles sont associés à la règle de production ou à la règle d’écoute de test. Pour plus d’informations, consultez la section [Écouteurs pour vos Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-https-listener.html) du *Guide de l’utilisateur Application Load Balancer*.

### Erreurs de configuration du groupe cible
<a name="troubleshooting-blue-green-target-groups"></a>

Les problèmes suivants sont liés à une configuration incorrecte du groupe cible pour les blue/green déploiements.

Plusieurs groupes cibles recevant du trafic dans une règle d’écoute  
*Message d’erreur* : `Service deployment rolled back because of invalid networking configuration. productionListenerRule arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-alb/abc123/def456/ghi789 should have exactly one target group serving traffic but found 2 target groups which are serving traffic`  
*Solution* : Avant de commencer un blue/green déploiement, assurez-vous qu'un seul groupe cible reçoit du trafic (avec une pondération différente de zéro) dans votre règle d'écoute. Mettez à jour la configuration de vos règles d’écoute pour définir le poids à zéro pour tout groupe cible qui ne devrait pas recevoir de trafic.

Groupes cibles en double dans les entrées de l’équilibreur de charge  
*Message d’erreur* : `Duplicate targetGroupArn found: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myecs-targetgroup/abc123`  
*Solution* : l’ARN de chaque groupe cible doit être unique pour toutes les entrées de l’équilibreur de charge figurant dans votre définition de service. Passez en revue votre configuration et assurez-vous d’utiliser des groupes cibles différents pour chaque entrée de l’équilibreur de charge.

Groupe cible inattendu dans la règle d’écoute de production  
*Message d’erreur* : `Service deployment rolled back because of invalid networking configuration. Production listener rule is forwarding traffic to unexpected target group arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/random-nlb-tg/abc123. Expected traffic to be forwarded to either targetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-targetgroup/def456 or alternateTargetGroupArn: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/nlb-tg-alternate/ghi789`  
*Solution* : la règle d’écoute de production achemine le trafic vers un groupe cible qui n’est pas spécifié dans votre définition de service. Assurez-vous que la règle d’écoute est configurée pour n’acheminer le trafic que vers les groupes cibles spécifiés dans votre définition de service.   
Pour plus d’informations, consultez la section [Actions de transfert](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-listeners.html#forward-actions) dans le *Guide de l’utilisateur Application Load Balancer*.

### Erreurs de configuration du type d’équilibreur de charge
<a name="troubleshooting-blue-green-load-balancer-types"></a>

Les problèmes suivants sont liés à une configuration incorrecte du type d'équilibreur de charge pour les blue/green déploiements.

Combinaison des configurations Classic Load Balancer et Application Load Balancer ou Network Load Balancer  
*Message d’erreur* : `All loadBalancers must be strictly either ELBv1 (defining loadBalancerName) or ELBv2 (defining targetGroupArn)`  
Les Classic Load Balancer correspondent à la génération précédente d’équilibreurs de charge Elastic Load Balancing. Nous vous recommandons de passer à un équilibreur de charge de génération actuelle. Pour plus d’informations, consultez la section [Migration de votre Classic Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/migrate-classic-load-balancer.html).
*Solution* :. Utilisez soit uniquement des Classic Load Balancer, soit des Application Load Balancer et des Network Load Balancer.  
Pour les Application Load Balancer et Network Load Balancer, ne spécifiez que le champ `targetGroupArn`.

Utilisation d’une configuration avancée avec un Classic Load Balancer  
*Message d’erreur* : `advancedConfiguration field is not allowed with ELBv1 loadBalancers`  
*Solution : La* configuration avancée pour les blue/green déploiements n'est prise en charge qu'avec les équilibreurs de charge d'application et les équilibreurs de charge réseau. Si vous utilisez un Classic Load Balancer (spécifié avec `loadBalancerName`), vous ne pouvez pas utiliser le champ `advancedConfiguration`. Passez à un Application Load Balancer ou supprimez le champ `advancedConfiguration`.

Configuration avancée incohérente entre les équilibreurs de charge  
*Message d’erreur* : `Either all or none of the provided loadBalancers must have advancedConfiguration defined`  
*Solution* : si vous utilisez plusieurs équilibreurs de charge, vous devez définir `advancedConfiguration` soit pour tous, soit pour aucun. Mettez à jour votre configuration pour garantir la cohérence entre toutes les entrées de l’équilibreur de charge.

Configuration avancée manquante lors blue/green du déploiement  
*Message d’erreur* : `advancedConfiguration field is required for all loadBalancers when using a non-ROLLING deployment strategy`  
*Solution* : Lorsque vous utilisez une stratégie de blue/green déploiement avec des équilibreurs de charge d'application, vous devez spécifier le `advancedConfiguration` champ pour toutes les entrées de l'équilibreur de charge. Ajoutez l’`advancedConfiguration` nécessaire à la configuration de votre équilibreur de charge.

## Problèmes d’autorisations
<a name="troubleshooting-blue-green-permissions"></a>

Les problèmes suivants concernent des autorisations insuffisantes pour les blue/green déploiements.

Stratégie d’approbation manquante concernant le rôle de l’infrastructure  
*Message d’erreur* : `Service deployment rolled back because of invalid networking configuration. ECS was unable to manage the ELB resources due to missing permissions on ECS Infrastructure Role 'arn:aws:iam::123456789012:role/Admin'.`  
*Solution* : le rôle IAM spécifié pour gérer les ressources de l’équilibreur de charge ne dispose pas de la bonne stratégie d’approbation. Mettez à jour la stratégie d’approbation du rôle afin de permettre au service d’assumer ce rôle. La stratégie d’approbation doit inclure :    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

Autorisations de lecture manquantes sur le rôle d’équilibreur de charge  
*Message d’erreur* : `service myService failed to describe target health on target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:DescribeTargetHealth because no identity-based policy allows the elasticloadbalancing:DescribeTargetHealth action)`  
*Solution* : le rôle IAM utilisé pour gérer les ressources de l’équilibreur de charge n’est pas autorisé à lire les informations relatives à l’état de la cible. Ajoutez la politique d’autorisation `elasticloadbalancing:DescribeTargetHealth` au rôle. Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).

Autorisations d’écriture manquantes pour le rôle d’équilibreur de charge  
*Message d’erreur* : `service myService failed to register targets in target-group myTargetGroup with (error User: arn:aws:sts::123456789012:assumed-role/myELBRole/ecs-service-scheduler is not authorized to perform: elasticloadbalancing:RegisterTargets on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/myTargetGroup/abc123 because no identity-based policy allows the elasticloadbalancing:RegisterTargets action)`  
*Solution* : le rôle IAM utilisé pour gérer les ressources de l’équilibreur de charge n’est pas autorisé à enregistrer des cibles. Ajoutez la politique d’autorisation `elasticloadbalancing:RegisterTargets` au rôle. Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).

Autorisation manquante pour modifier les règles d’écoute  
*Message d’erreur* : `Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. User: arn:aws:sts::123456789012:assumed-role/myELBRole/ECSNetworkingWithELB is not authorized to perform: elasticloadbalancing:ModifyListener on resource: arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-alb/abc123/def456 because no identity-based policy allows the elasticloadbalancing:ModifyListener action`  
*Solution* : le rôle IAM utilisé pour gérer les ressources de l’équilibreur de charge n’est pas autorisé à modifier les écouteurs. Ajoutez la politique d’autorisation `elasticloadbalancing:ModifyListener` au rôle. Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).

Pour les blue/green déploiements, nous vous recommandons d'associer la politique `AmazonECS-ServiceLinkedRolePolicy` gérée à votre rôle d'infrastructure, qui inclut toutes les autorisations nécessaires à la gestion des ressources de l'équilibreur de charge.

## Problèmes de hook de cycle de vie
<a name="troubleshooting-blue-green-lifecycle-hooks"></a>

Les problèmes suivants concernent les crochets liés au cycle de vie dans les blue/green déploiements.

Stratégie d’approbation incorrecte sur le rôle du hook Lambda  
*Message d’erreur* : `Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to assume role arn:aws:iam::123456789012:role/Admin`  
*Solution* : le rôle IAM spécifié pour le hook de cycle de vie Lambda ne dispose pas de la bonne stratégie d’approbation. Mettez à jour la stratégie d’approbation du rôle afin de permettre au service d’assumer ce rôle. La stratégie d’approbation doit inclure :    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

Le hook Lambda renvoie le statut ÉCHEC  
*Message d’erreur* : `Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. Lifecycle hook target arn:aws:lambda:us-west-2:123456789012:function:myHook returned FAILED status.`  
*Solution* : la fonction Lambda spécifiée en tant que hook de cycle de vie a renvoyé un statut ÉCHEC. Consultez les journaux des fonctions Lambda dans les CloudWatch journaux Amazon pour déterminer la raison de l'échec, et mettez à jour la fonction pour qu'elle gère correctement l'événement de déploiement.

Autorisation manquante pour invoquer une fonction Lambda  
*Message d’erreur* : `Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to invoke hook target arn:aws:lambda:us-west-2:123456789012:function:myHook due to User: arn:aws:sts::123456789012:assumed-role/myLambdaRole/ECS-Lambda-Execution is not authorized to perform: lambda:InvokeFunction on resource: arn:aws:lambda:us-west-2:123456789012:function:myHook because no identity-based policy allows the lambda:InvokeFunction action`  
*Solution* : le rôle IAM utilisé pour le hook de cycle de vie Lambda n’est pas autorisé à appeler la fonction Lambda. Ajoutez l’autorisation `lambda:InvokeFunction` à la politique du rôle pour l’ARN de la fonction Lambda spécifique. Pour plus d’informations sur les autorisations Lambda, consultez la section [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

Délai d’expiration d’une fonction Lambda ou réponse non valide  
*Message d’erreur* : `Service deployment rolled back because TEST_TRAFFIC_SHIFT lifecycle hook(s) failed. ECS was unable to parse the response from arn:aws:lambda:us-west-2:123456789012:function:myHook due to HookStatus must not be null`  
*Solution* : la fonction Lambda a expiré ou a renvoyé une réponse non valide. Assurez-vous que votre fonction Lambda renvoie une réponse valide avec un champ `hookStatus` défini sur `SUCCEEDED` ou `FAILED`. Vérifiez également que le délai d’expiration de la fonction Lambda est défini de manière appropriée pour votre logique de validation. Pour de plus amples informations, veuillez consulter [Hooks de cycle de vie pour les déploiements de service Amazon ECS](deployment-lifecycle-hooks.md).  
Exemple de réponse Lambda valide :  

```
{
  "hookStatus": "SUCCEEDED",
  "reason": "Validation passed"
}
```

# Déploiements linéaires Amazon ECS
<a name="deployment-type-linear"></a>

Les déploiements linéaires font progressivement passer le trafic de l'ancienne version du service à la nouvelle par incréments égaux au fil du temps, ce qui vous permet de surveiller chaque étape avant de passer à la suivante. Avec les déploiements linéaires d'Amazon ECS, contrôlez le rythme de transfert du trafic et validez les nouvelles révisions de service en fonction de l'augmentation du trafic de production. Cette approche fournit un moyen contrôlé de déployer les modifications avec la possibilité de surveiller les performances à chaque incrément.

## Ressources impliquées dans un déploiement linéaire
<a name="linear-deployment-resources"></a>

Les ressources suivantes sont impliquées dans les déploiements linéaires d'Amazon ECS :
+ Transfert de trafic : processus utilisé par Amazon ECS pour transférer le trafic de production. Pour les déploiements linéaires Amazon ECS, le trafic est déplacé par incréments de pourcentage égaux, avec des temps d'attente configurables entre chaque incrément.
+ Pourcentage d'étape : pourcentage du trafic à déplacer à chaque incrément au cours d'un déploiement linéaire. Ce champ prend la valeur Double comme valeur, et les valeurs valides sont comprises entre 3,0 et 100,0.
+ Temps de cuisson par étapes : durée d'attente entre chaque incrément de changement de trafic lors d'un déploiement linéaire. Les valeurs valides sont comprises entre 0 et 1 440 minutes.
+ Durée du déploiement : temps, en minutes, qu'Amazon ECS attend après avoir transféré tout le trafic de production vers la nouvelle révision du service, avant de mettre fin à l'ancienne révision du service. Il s'agit de la durée pendant laquelle les révisions des services bleu et vert sont exécutées simultanément après le déplacement du trafic de production.
+ Étapes du cycle de vie : une série d’événements au cours de l’opération de déploiement, tels que le « après transfert du trafic de production » :
+ Lifecycle Hook : fonction Lambda qui s'exécute à un stade spécifique du cycle de vie. Vous pouvez créer une fonction qui vérifie le déploiement. Les fonctions Lambda ou les hooks de cycle de vie configurés pour PRODUCTION\$1TRAFFIC\$1SHIFT seront invoqués à chaque étape du transfert du trafic de production.
+ Groupe cible : ressource Elastic Load Balancing utilisée pour acheminer les requêtes vers une ou plusieurs cibles enregistrées (par exemple, des instances EC2). Lorsque vous créez un écouteur, vous spécifiez un groupe cible pour son action par défaut. Le trafic est transféré vers le groupe cible spécifié dans la règle de l'écouteur.
+ Écouteur : une ressource Elastic Load Balancing qui vérifie les demandes de connexion à l’aide du protocole et du port que vous configurez. Les règles que vous définissez pour un écouteur déterminent la manière dont Amazon ECS achemine les requêtes vers ses cibles enregistrées.
+ Règle : ressource Elastic Load Balancing associée à un écouteur. Une règle définit la manière dont les requêtes sont acheminées et comprend une action, une condition et une priorité.

## Considérations
<a name="linear-deployment-considerations"></a>

Tenez compte des éléments suivants lors du choix d’un type de déploiement :
+ Utilisation des ressources : les déploiements linéaires exécutent temporairement les révisions des services bleu et vert simultanément, ce qui peut doubler votre utilisation des ressources pendant les déploiements.
+ Surveillance du déploiement : les déploiements linéaires fournissent des informations détaillées sur l'état du déploiement, ce qui vous permet de surveiller chaque étape du processus de déploiement et chaque augmentation du trafic.
+ Annulation : les déploiements linéaires facilitent le retour à la version précédente en cas de détection de problèmes, car la version bleue est maintenue en cours d'exécution jusqu'à l'expiration du temps de cuisson.
+ Validation progressive : les déploiements linéaires vous permettent de valider la nouvelle révision en fonction de l'augmentation du trafic de production, ce qui renforce la confiance dans le déploiement.
+ Durée du déploiement : les déploiements linéaires prennent plus de temps que all-at-once les déploiements en raison du transfert progressif du trafic et des temps d'attente entre les étapes.

## Comment fonctionne le déploiement linéaire
<a name="linear-deployment-how-works"></a>

Le processus de déploiement linéaire d'Amazon ECS suit une approche structurée comportant six phases distinctes qui garantissent des mises à jour d'applications sûres et fiables. Chaque phase a un objectif spécifique en validant et en faisant passer votre application de la version actuelle (bleu) à la nouvelle version (vert).

1. Phase de préparation : création de l’environnement vert à côté de l’environnement bleu existant.

1. Phase de déploiement : déploiement de la nouvelle version du service dans un environnement vert. Amazon ECS lance de nouvelles tâches à l’aide de la révision de service mise à jour tandis que l’environnement bleu continue de desservir le trafic de production.

1. Phase de test : validation de l’environnement vert à l’aide du routage du trafic de test. L’Application Load Balancer dirige les requêtes de test vers l’environnement vert tandis que le trafic de production reste en mode bleu.

1. Phase de transfert linéaire du trafic : déplacez progressivement le trafic de production du bleu au vert par incréments de pourcentage égaux en fonction de la stratégie de déploiement que vous avez configurée.

1. Phase de surveillance : surveillance de l’état de l’application, des métriques de performance et des états d’alarme pendant la durée de l’intégration. Une opération de restauration est lancée lorsque des problèmes sont détectés.

1. Phase d'achèvement : finalisez le déploiement en mettant fin à l'environnement bleu.

La phase de transfert linéaire du trafic suit les étapes suivantes :
+ Initiale : le déploiement commence lorsque 100 % du trafic est acheminé vers la version bleue (actuelle) du service. La version verte (nouvelle) du service reçoit du trafic de test mais aucun trafic de production au départ.
+ Transfert progressif du trafic - Le trafic passe progressivement du bleu au vert par paliers de pourcentage égaux. Par exemple, avec une configuration par étapes de 10,0 %, les changements de trafic se produisent comme suit :
  + Étape 1 : 10,0 % vers le vert, 90 % vers le bleu
  + Étape 2 : 20,0 % vers le vert, 80,0 % vers le bleu
  + Étape 3 : 30,0 % vers le vert, 70,0 % vers le bleu
  + Et ainsi de suite jusqu'à ce que 100 % atteignent le vert
+ Temps de cuisson par étapes : entre chaque incrément de transfert de trafic, le déploiement attend une durée configurable (temps de cuisson par étapes) afin de permettre le suivi et la validation des performances de la nouvelle révision compte tenu de l'augmentation de la charge de trafic. Notez que le temps de cuisson de la dernière étape est ignoré une fois que le trafic est décalé de 100,0 %.
+ Lifecycle Hooks : les fonctions Lambda facultatives peuvent être exécutées à différentes étapes du cycle de vie au cours du déploiement pour effectuer une validation automatisée, une surveillance ou une logique personnalisée. Les fonctions Lambda ou les hooks de cycle de vie configurés pour PRODUCTION\$1TRAFFIC\$1SHIFT seront invoqués à chaque étape du transfert du trafic de production.

## Étapes du cycle de vie du déploiement
<a name="linear-deployment-lifecycle-stages"></a>

Le processus de déploiement linéaire passe par des étapes distinctes du cycle de vie, chacune comportant des responsabilités et des points de contrôle de validation spécifiques. La compréhension de ces étapes vous permet de suivre la progression du déploiement et de résoudre les problèmes de manière efficace.

Chaque étape du cycle de vie peut durer jusqu'à 24 heures. De plus, chaque étape de transfert de trafic dans PRODUCTION\$1TRAFFIC\$1SHIFT peut durer jusqu'à 24 heures. Nous recommandons que la valeur reste inférieure à 24 heures. Cela est dû au fait que les processus asynchrones ont besoin de temps pour déclencher les hooks. Le système expire, échoue au déploiement, puis lance une restauration après une période de 24 heures.

CloudFormation les déploiements sont soumis à des restrictions de délai d'expiration supplémentaires. Bien que la limite de 24 heures reste en vigueur, elle CloudFormation impose une limite de 36 heures à l'ensemble du déploiement. CloudFormation échoue au déploiement, puis lance une annulation si le processus ne se termine pas dans les 36 heures.


| Étapes du cycle de vie | Description | Support Lifecycle Hook | 
| --- | --- | --- | 
| RECONCILE\$1SERVICE | Cette étape ne se produit que lorsque vous démarrez un nouveau déploiement de service avec plus d’une révision de service dans un état ACTIF. | Oui | 
| PRE\$1SCALE\$1UP | La révision de service verte n’a pas commencé. La révision de service bleue gère 100 % du trafic de production. Il n’y a aucun trafic de test. | Oui | 
| SCALE\$1UP | Le moment où la révision de service verte augmente verticalement jusqu’à 100 % et lance de nouvelles tâches. La révision de service verte ne génère aucun trafic pour le moment. | Non | 
| POST\$1SCALE\$1UP | La révision de service verte a commencé. La révision de service bleue gère 100 % du trafic de production. Il n’y a aucun trafic de test. | Oui | 
| TEST\$1TRAFFIC\$1SHIFT | Les révisions de service bleues et vertes sont en cours. La révision de service bleue gère 100 % du trafic de production. La révision de service verte passe de 0 % à 100 % du trafic de test. | Oui | 
| POST\$1TEST\$1TRAFFIC\$1SHIFT | Le transfert du trafic de test est terminé. La révision de service verte gère 100 % du trafic de test. | Oui | 
| PRODUCTION\$1TRAFFIC\$1SHIFT | Le trafic passe progressivement du bleu au vert par paliers de pourcentage égaux jusqu'à ce que le vert reçoive 100 % du trafic. Chaque changement de trafic déclenche un cycle de vie avec un délai d'expiration de 24 heures. | 
| POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT | Le transfert du trafic de production est terminé. | Oui | 
| BAKE\$1TIME | Durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément. | Non | 
| CLEAN\$1UP | La révision de service bleue a été complètement réduite à 0 tâches en cours d’exécution. Au terme de cette étape, la révision de service verte devient la révision de service de production. | Non | 

# Ressources requises pour les déploiements linéaires d'Amazon ECS
<a name="linear-deployment-implementation"></a>

Pour utiliser un déploiement linéaire avec transfert de trafic géré, votre service doit utiliser l'une des fonctionnalités suivantes :
+ Elastic Load Balancing
+ Service Connect

La liste suivante fournit une vue d'ensemble détaillée de ce que vous devez configurer pour les déploiements linéaires Amazon ECS :
+ Votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect Configurez les ressources appropriées.
  + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
  + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
  + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).
+ Définissez le contrôleur de déploiement de service sur `ECS`.
+ Configurez la stratégie de déploiement sur `linear` dans votre définition de service.
+ Configurez éventuellement des paramètres supplémentaires tels que :
  + La durée de l’intégration pour le nouveau déploiement
  + Le pourcentage de trafic à déplacer à chaque incrément.
  + Durée d'attente en minutes entre chaque incrément de changement de trafic. 
  + CloudWatch alarmes pour annulation automatique
  + Hooks du cycle de vie du déploiement (il s'agit de fonctions Lambda qui s'exécutent à des étapes de déploiement spécifiées, telles que BEFORE\$1INSTALL, PRODUCTION\$1TRAFFIC\$1SHIFT ou POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT)

## Bonnes pratiques
<a name="linear-deployment-best-practices"></a>

Suivez ces bonnes pratiques pour réussir les déploiements linéaires d'Amazon ECS :
+ **Assurez-vous que votre application peut gérer les deux révisions de service exécutées simultanément.**
+ **Prévoyez une capacité de cluster suffisante pour gérer les deux révisions de service lors du déploiement.**
+ **Testez vos procédures de rollback avant de les mettre en œuvre en production.**
+ Configurez les surveillances de l’état appropriées qui reflètent précisément l’état de votre application.
+ Définissez un temps de cuisson qui permet de tester suffisamment la nouvelle révision du service.
+ Implémentez des CloudWatch alarmes pour détecter automatiquement les problèmes et déclencher des annulations.
+ Choisissez des pourcentages d'étapes et des temps de cuisson qui équilibrent la vitesse de déploiement avec les besoins de validation.
+ Utilisez des pourcentages d'étapes plus faibles (5 à 10 %) pour les applications critiques afin de minimiser l'exposition aux risques.
+ Définissez des temps de cuisson plus longs pour les applications qui ont besoin de temps pour se réchauffer ou se stabiliser.
+ Implémentez des CloudWatch alarmes pour détecter automatiquement les problèmes et déclencher des annulations à chaque augmentation du trafic.
+ Surveillez de près les indicateurs des applications lors de chaque changement de trafic afin de détecter rapidement la dégradation des performances.
+ Assurez-vous que votre application peut gérer les deux révisions de service exécutées simultanément.
+ Testez vos procédures de rollback à différents pourcentages de trafic avant de les mettre en œuvre en production.

# Création d'un déploiement linéaire Amazon ECS
<a name="deploy-linear-service"></a>

En utilisant les déploiements linéaires Amazon ECS, vous pouvez progressivement déplacer le trafic par incréments égaux sur des intervalles de temps spécifiés. Cela permet une validation contrôlée à chaque étape du processus de déploiement.

## Conditions préalables
<a name="deploy-linear-service-prerequisites"></a>

Effectuez les opérations suivantes avant de démarrer un déploiement linéaire.

1. Configurez les autorisations appropriées.
   + Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
   + Pour plus d’informations sur les autorisations Lambda, consultez la section [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

1. Les déploiements linéaires Amazon ECS nécessitent que votre service utilise l'une des fonctionnalités suivantes : Configurez les ressources appropriées.
   + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
   + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
   + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).

## Procédure
<a name="deploy-linear-service-procedure"></a>

Vous pouvez utiliser la console ou le AWS CLI pour créer un service de déploiement linéaire Amazon ECS.

------
#### [ Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Déterminez la ressource à partir de laquelle vous lancez le service.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-linear-service.html)

   La page **Créer un service** s’affiche.

1. Sous **Détails du service**, procédez comme suit :

   1. Pour **Famille de définition de tâche**, choisissez la définition de tâche à utiliser. Ensuite, pour **Révision de définition de tâche**, saisissez la révision à utiliser.

   1. Pour **Service name** (Nom du service), saisissez un nom pour votre service.

1. Pour exécuter le service dans un cluster existant, pour **Cluster existant**, sélectionnez le cluster. Pour exécuter le service dans un nouveau cluster, choisissez **Créer un cluster** 

1. Choisissez comment vos tâches sont distribuées dans votre infrastructure de cluster. Sous **Configuration de calcul**, choisissez votre option.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-linear-service.html)

1. Sous **Configuration du déploiement**, procédez comme suit :

   1. Pour **Type de service**, choisissez **Replica**.

   1. Pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.

   1. Pour qu’Amazon ECS surveille la répartition des tâches entre les zones de disponibilité et les redistribue en cas de déséquilibre, sous **Rééquilibrage des services entre zones de disponibilité**, sélectionnez **Rééquilibrage des services entre zones de disponibilité**.

   1. Pour **Période de grâce pour la surveillance de l’état**, saisissez la durée (en secondes) pendant laquelle le planificateur de service ignore les surveillances de l’état de Elastic Load Balancing, VPC Lattice et des conteneurs qui ne sont pas saines après le démarrage initial d’une tâche. Si vous ne spécifiez aucune valeur pour la période de grâce de surveillance de l’état, la valeur par défaut 0 est utilisée.

1. Sous **Configuration du déploiement**, configurez les paramètres de déploiement linéaire :

   1. Pour **Stratégie de déploiement**, choisissez **Linear**.

   1. Pour **le pourcentage d'augmentation du trafic**, entrez le pourcentage de trafic à déplacer à chaque incrément (par exemple, 10 % pour déplacer le trafic par tranches de 10 %).

   1. Pour **Intervalle entre les incréments**, entrez le temps d'attente en minutes entre chaque incrément de changement de trafic.

   1. Pour le **temps de cuisson**, entrez le nombre de minutes pendant lesquelles les révisions du service bleu et vert seront exécutées simultanément après le dernier changement de trafic avant que la révision bleue ne soit terminée.

   1. (Facultatif) Exécutez des fonctions Lambda à des étapes spécifiques du déploiement. Sous **Hooks de cycle de vie du déploiement**, sélectionnez les étapes dans lesquelles exécuter les hooks de cycle de vie.

      Pour ajouter un hook de cycle de vie

      1. Choisissez **Ajouter**.

      1. Pour **Fonction Lambda**, saisissez le nom ou l’ARN de la fonction.

      1. Pour **Rôle**, sélectionnez le rôle IAM qui dispose de l’autorisation requise pour invoquer la fonction Lambda.

      1. Pour **Étapes du cycle de vie**, sélectionnez les étapes dans lesquelles la fonction Lambda doit être exécutée.

1. Pour configurer la manière dont Amazon ECS détecte et gère les échecs de déploiement, développez **Deployment failure detection** (Détection des échecs de déploiement), puis choisissez vos options. 

   1. Pour arrêter un déploiement lorsque les tâches ne peuvent pas démarrer, sélectionnez **Use the Amazon ECS deployment circuit breaker** (Utiliser le disjoncteur de déploiement Amazon ECS).

      Pour que le logiciel restaure automatiquement le dernier état de déploiement terminé lorsque le disjoncteur de déploiement définit le déploiement comme ayant échoué, sélectionnez **Restauration en cas d’échec**.

   1. Pour arrêter un déploiement en fonction des métriques de l'application, sélectionnez **Utiliser une ou plusieurs CloudWatch alarmes**. Ensuite, à partir du **nom de l'CloudWatch alarme**, choisissez les alarmes. Pour créer une nouvelle alarme, rendez-vous sur la CloudWatch console.

      Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsqu'une CloudWatch alarme indique que le déploiement a échoué, sélectionnez Annulation en **cas d'échec**.

1. (Facultatif) Pour interconnecter votre service à l’aide de Service Connect, développez **Service Connect**, puis spécifiez les éléments suivants :

   1.  Sélectionnez **Activer Service Connect**.

   1. Sous **Service Connect configuration** (Configuration de Service Connect), spécifiez le mode client.
      + Si votre service exécute une application client réseau qui doit uniquement se connecter à d’autres services de l’espace de noms, sélectionnez **Côté client uniquement**.
      + Si votre service exécute une application réseau ou un service Web et doit fournir des points de terminaison pour ce service, et se connecte à d'autres services dans l'espace de noms, choisissez **Client and server** (Client et serveur).

   1. Pour utiliser un espace de noms qui n'est pas l'espace de noms de cluster par défaut, dans **Namespace** (Espace de noms), choisissez l'espace de noms du service. Il peut s'agir d'un espace de noms créé séparément dans le même espace Région AWS dans votre région Compte AWS ou d'un espace de noms dans la même région qui est partagé avec votre compte en utilisant AWS Resource Access Manager ()AWS RAM. *Pour plus d'informations sur les AWS Cloud Map espaces de noms partagés, consultez la section [Partage d'espaces de AWS Cloud Map noms entre comptes](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) dans le Guide du AWS Cloud Map développeur.*

   1. (Facultatif) Configurez les règles d'en-tête du trafic de test pour les déploiements linéaires. Sous **Routage du trafic de test**, spécifiez les éléments suivants :

      1. Sélectionnez **Activer les règles d’en-tête du trafic de test** pour acheminer des requêtes spécifiques vers la révision de service verte pendant les tests.

      1. Pour **Règles de correspondance des en-têtes**, configurez les critères de routage du trafic de test suivants :
         + **Nom de l’en-tête** : saisissez le nom de l’en-tête HTTP correspondant (par exemple, `X-Test-Version` ou `User-Agent`).
         + **Type de correspondance** : choisissez les critères de correspondance :
           + **Correspondance exacte** : acheminer les requêtes dont la valeur d’en-tête correspond exactement à la valeur spécifiée
           + **En-tête présent** : acheminer les requêtes contenant l’en-tête spécifié, quelle que soit sa valeur
           + **Correspondance de modèle** : acheminer les requêtes dont la valeur d’en-tête correspond à un modèle spécifié
         + **Valeur d’en-tête** (si vous utilisez une correspondance exacte ou une correspondance de modèle) : saisissez la valeur ou le modèle à comparer.

         Vous pouvez ajouter plusieurs règles de correspondance d’en-têtes pour créer une logique de routage complexe. Les requêtes correspondant à l’une des règles configurées seront acheminées vers la version verte du service à des fins de test.

      1. Choisissez **Ajouter une règle d’en-tête** pour configurer des conditions de correspondance d’en-tête supplémentaires.
**Note**  
Les règles d’en-tête du trafic de test vous permettent de valider les nouvelles fonctionnalités avec un trafic contrôlé avant de procéder au déploiement complet. Cela vous permet de tester la révision de service verte avec des requêtes spécifiques (telles que celles provenant d’outils de test internes ou d’utilisateurs bêta) tout en maintenant un flux de trafic normal vers la révision de service bleue.

   1. (Facultatif) Spécifiez une configuration de journal. Sélectionnez **Utiliser la collecte de journaux**. L'option par défaut envoie les journaux du conteneur à CloudWatch Logs. Les autres options du pilote de journal sont configurées à l'aide de AWS FireLens. Pour de plus amples informations, veuillez consulter [Envoyer les journaux Amazon ECS à un AWS service ou AWS Partner](using_firelens.md).

      Voici une description plus détaillée de chaque destination de journal de conteneur.
      + **Amazon CloudWatch** — Configurez la tâche pour envoyer les journaux des conteneurs à CloudWatch Logs. Les options du pilote de journal par défaut sont fournies, ce qui permet de créer un groupe de CloudWatch journaux en votre nom. Pour spécifier un autre nom de groupe de journaux, modifiez les valeurs des options de pilote.
      + **Amazon Data Firehose** : configurez la tâche pour envoyer des journaux de conteneur à Firehose. Les options par défaut du pilote de journalisation sont fournies. Elles envoient les journaux vers un flux de livraison Firehose. Pour spécifier un autre nom de flux de diffusion, modifiez les valeurs des options de pilote.
      + **Amazon Kinesis Data Streams** : configurez la tâche pour envoyer des journaux de conteneur à Kinesis Data Streams. Les options par défaut du pilote de journalisation sont fournies. Elles permettent d’envoyer les journaux vers un flux Kinesis Data Streams. Pour spécifier un autre nom de flux, modifiez les valeurs des options de pilote.
      + **Amazon OpenSearch Service** — Configurez la tâche pour envoyer les journaux des conteneurs vers un domaine OpenSearch de service. Les options de pilote de journal doivent être fournies. 
      + **Simple Storage Service (Amazon S3)** : configurez la tâche pour envoyer des journaux de conteneur à un compartiment Simple Storage Service (Amazon S3). Les options de pilote de journal par défaut sont fournies, mais vous devez spécifier un nom de compartiment Simple Storage Service (Amazon S3) valide.

1. (Facultatif) Configurez l'**équilibrage** de charge pour un déploiement linéaire.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-linear-service.html)

1. (Facultatif) Pour vous aider à identifier votre service et vos tâches, développez **Tags** (balises), puis configurez vos balises.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Définitions de tâches**.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises d'un service, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Service**.

   Ajoutez ou supprimez une balise.
   + [Ajouter une balise] Choisissez **Add tag** (Ajouter une balise), puis procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

1. Choisissez **Créer**.

------
#### [ AWS CLI ]

1. Créez un fichier nommé `linear-service-definition.json` avec le contenu suivant.

   Remplacez le *user-input* par vos valeurs.

   ```
   {
     "serviceName": "myLinearService",
     "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster",
     "taskDefinition": "sample-fargate:1",
     "desiredCount": 5,
     "launchType": "FARGATE",
     "networkConfiguration": {
       "awsvpcConfiguration": {
         "subnets": [
           "subnet-09ce6e74c116a2299",
           "subnet-00bb3bd7a73526788",
           "subnet-0048a611aaec65477"
         ],
         "securityGroups": [
           "sg-09d45005497daa123"
         ],
         "assignPublicIp": "ENABLED"
       }
     },
     "deploymentController": {
       "type": "ECS"
     },
     "deploymentConfiguration": {
       "strategy": "LINEAR",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "linearConfiguration": {
         "stepPercentage": 10.0,
         "stepBakeTimeInMinutes":6
       },
       "bakeTimeInMinutes": 10,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       }
     },
     "loadBalancers": [
       {
         "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197",
         "containerName": "fargate-app",
         "containerPort": 80,
         "advancedConfiguration": {
           "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199",
           "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-linear-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Exécutez `create-service`.

   ```
   aws ecs create-service --cli-input-json file://linear-service-definition.json
   ```

------

## Étapes suivantes
<a name="deploy-linear-service-next-steps"></a>
+ Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).
+ Surveillez le processus de déploiement pour vous assurer qu'il suit le schéma linéaire :
  + La révision de service verte est créée et augmentée horizontalement
  + Le trafic est décalé progressivement aux intervalles spécifiés
  + Chaque incrément attend l'intervalle spécifié avant le prochain quart de travail
  + Une fois que tout le trafic est décalé, le temps de cuisson commence
  + Au terme de la durée de l’intégration, la révision bleue est résiliée

# Déploiements canary d’Amazon ECS
<a name="canary-deployment"></a>

Les déploiements Canary acheminent d'abord un faible pourcentage du trafic vers la nouvelle version pour les tests initiaux, puis transfèrent immédiatement tout le trafic restant une fois la phase Canary terminée avec succès. Avec les déploiements Amazon ECS Canary, validez les nouvelles révisions de service avec le trafic utilisateur réel tout en minimisant l'exposition aux risques. Cette approche fournit un moyen contrôlé de déployer les modifications avec la possibilité de surveiller les performances et de revenir rapidement en arrière si des problèmes sont détectés.

## Ressources impliquées dans un déploiement de Canary
<a name="canary-deployment-resources"></a>

Les ressources suivantes sont impliquées dans les déploiements d'Amazon ECS Canary :
+ Transfert de trafic : processus utilisé par Amazon ECS pour transférer le trafic de production. Pour les déploiements d'Amazon ECS Canary, le trafic est transféré en deux phases : d'abord pour atteindre le pourcentage Canary, puis pour terminer le déploiement.
+ Pourcentage Canary : pourcentage du trafic acheminé vers la nouvelle version pendant la période d'évaluation.
+ Durée de cuisson Canary : durée nécessaire pour surveiller la version Canary avant de procéder au déploiement complet.
+ Durée du déploiement : temps, en minutes, qu'Amazon ECS attend après avoir transféré tout le trafic de production vers la nouvelle révision du service, avant de mettre fin à l'ancienne révision du service. Il s'agit de la durée pendant laquelle les révisions des services bleu et vert sont exécutées simultanément après le déplacement du trafic de production.
+ Étapes du cycle de vie : une série d’événements au cours de l’opération de déploiement, tels que le « après transfert du trafic de production » :
+ Lifecycle Hook : fonction Lambda qui s'exécute à un stade spécifique du cycle de vie. Vous pouvez créer une fonction qui vérifie le déploiement.
+ Groupe cible : ressource Elastic Load Balancing utilisée pour acheminer les requêtes vers une ou plusieurs cibles enregistrées (par exemple, des instances EC2). Lorsque vous créez un écouteur, vous spécifiez un groupe cible pour son action par défaut. Le trafic est transféré vers le groupe cible spécifié dans la règle de l'écouteur.
+ Écouteur : une ressource Elastic Load Balancing qui vérifie les demandes de connexion à l’aide du protocole et du port que vous configurez. Les règles que vous définissez pour un écouteur déterminent la manière dont Amazon ECS achemine les requêtes vers ses cibles enregistrées.
+ Règle : ressource Elastic Load Balancing associée à un écouteur. Une règle définit la manière dont les requêtes sont acheminées et comprend une action, une condition et une priorité.

## Considérations
<a name="canary-deployment-considerations"></a>

Tenez compte des éléments suivants lors du choix d’un type de déploiement :
+ Utilisation des ressources : les déploiements Canary exécutent simultanément les ensembles de tâches d'origine et Canary pendant la période d'évaluation, ce qui augmente l'utilisation des ressources.
+ Volume de trafic : assurez-vous que le pourcentage Canary génère suffisamment de trafic pour une validation significative de la nouvelle version.
+ Supervision de la complexité : les déploiements Canary nécessitent de surveiller et de comparer simultanément les métriques entre deux versions différentes.
+ Vitesse de restauration : les déploiements Canary permettent une restauration rapide en transférant le trafic vers l'ensemble de tâches initial.
+ Atténuation des risques : les déploiements de Canary offrent une excellente atténuation des risques en limitant l'exposition à un faible pourcentage d'utilisateurs.
+ Durée de déploiement : les déploiements Canary incluent des périodes d'évaluation qui prolongent le temps de déploiement global tout en offrant des opportunités de validation.

## Comment fonctionnent les déploiements Canary
<a name="canary-how-it-works"></a>

Le processus de déploiement d'Amazon ECS Canary suit une approche structurée comportant six phases distinctes qui garantissent des mises à jour d'applications sûres et fiables. Chaque phase a un objectif spécifique en validant et en faisant passer votre application de la version actuelle (bleu) à la nouvelle version (vert).

1. Phase de préparation : création de l’environnement vert à côté de l’environnement bleu existant.

1. Phase de déploiement : déploiement de la nouvelle version du service dans un environnement vert. Amazon ECS lance de nouvelles tâches à l’aide de la révision de service mise à jour tandis que l’environnement bleu continue de desservir le trafic de production.

1. Phase de test : validation de l’environnement vert à l’aide du routage du trafic de test. L’Application Load Balancer dirige les requêtes de test vers l’environnement vert tandis que le trafic de production reste en mode bleu.

1. Phase de transfert du trafic Canary : transfert du pourcentage configuré du trafic vers la nouvelle révision du service écologique pendant la phase Canary, puis transfert de 100,0 % du trafic vers la révision du service vert

1. Phase de surveillance : surveillance de l’état de l’application, des métriques de performance et des états d’alarme pendant la durée de l’intégration. Une opération de restauration est lancée lorsque des problèmes sont détectés.

1. Phase d'achèvement : finalisez le déploiement en mettant fin à l'environnement bleu.

La phase de transfert de trafic de Canary suit les étapes suivantes :
+ Initiale : le déploiement commence lorsque 100 % du trafic est acheminé vers la version bleue (actuelle) du service. La version verte (nouvelle) du service reçoit du trafic de test mais aucun trafic de production au départ.
+ Transfert de trafic aux Canaries - Il s'agit d'une stratégie de transfert de trafic en deux étapes.
  + Étape 1 : 10,0 % vers le vert, 90 % vers le bleu
  + Étape 2 : 100,0 % vers le vert, 0,0 % vers le bleu
+ Temps de cuisson Canary : attend une durée configurable (temps de cuisson Canary) après Canary Traffic Shift pour permettre le suivi et la validation des performances de la nouvelle révision compte tenu de l'augmentation de la charge de trafic.
+ Lifecycle Hooks : les fonctions Lambda facultatives peuvent être exécutées à différentes étapes du cycle de vie au cours du déploiement pour effectuer une validation automatisée, une surveillance ou une logique personnalisée. Les fonctions Lambda ou les hooks de cycle de vie configurés pour PRODUCTION\$1TRAFFIC\$1SHIFT seront invoqués à chaque étape du transfert du trafic de production.

### Étapes du cycle de vie du déploiement
<a name="canary-deployment-lifecycle-stages"></a>

Le processus de déploiement de Canary passe par différentes étapes du cycle de vie, chacune comportant des responsabilités et des points de contrôle de validation spécifiques. La compréhension de ces étapes vous permet de suivre la progression du déploiement et de résoudre les problèmes de manière efficace.

Chaque étape du cycle de vie peut durer jusqu'à 24 heures. De plus, chaque étape de transfert de trafic dans PRODUCTION\$1TRAFFIC\$1SHIFT peut durer jusqu'à 24 heures. Nous recommandons que la valeur reste inférieure à 24 heures. Cela est dû au fait que les processus asynchrones ont besoin de temps pour déclencher les hooks. Le système expire, échoue au déploiement, puis lance une restauration après une période de 24 heures.

CloudFormation les déploiements sont soumis à des restrictions de délai d'expiration supplémentaires. Bien que la limite de 24 heures reste en vigueur, elle CloudFormation impose une limite de 36 heures à l'ensemble du déploiement. CloudFormation échoue au déploiement, puis lance une annulation si le processus ne se termine pas dans les 36 heures.


**Étapes du cycle de vie**  

| Étapes du cycle de vie | Description | Support Lifecycle Hook | 
| --- | --- | --- | 
| RECONCILE\$1SERVICE | Cette étape ne se produit que lorsque vous démarrez un nouveau déploiement de service avec plus d’une révision de service dans un état ACTIF. | Oui | 
| PRE\$1SCALE\$1UP | La révision de service verte n’a pas commencé. La révision de service bleue gère 100 % du trafic de production. Il n’y a aucun trafic de test. | Oui | 
| SCALE\$1UP | Le moment où la révision de service verte augmente verticalement jusqu’à 100 % et lance de nouvelles tâches. La révision de service verte ne génère aucun trafic pour le moment. | Non | 
| POST\$1SCALE\$1UP | La révision de service verte a commencé. La révision de service bleue gère 100 % du trafic de production. Il n’y a aucun trafic de test. | Oui | 
| TEST\$1TRAFFIC\$1SHIFT | Les révisions de service bleues et vertes sont en cours. La révision de service bleue gère 100 % du trafic de production. La révision de service verte passe de 0 % à 100 % du trafic de test. | Oui | 
| POST\$1TEST\$1TRAFFIC\$1SHIFT | Le transfert du trafic de test est terminé. La révision de service verte gère 100 % du trafic de test. | Oui | 
| PRODUCTION\$1TRAFFIC\$1SHIFT | Le trafic de production de Canary est acheminé vers la révision verte et le hook du cycle de vie est invoqué avec un délai d'expiration de 24 heures. La deuxième étape fait passer le trafic de production restant à la révision verte. | Oui | 
| POST\$1PRODUCTION\$1TRAFFIC\$1SHIFT | Le transfert du trafic de production est terminé. | Oui | 
| BAKE\$1TIME | Durée pendant laquelle les révisions de service bleues et vertes sont exécutées simultanément. | Non | 
| CLEAN\$1UP | La révision de service bleue a été complètement réduite à 0 tâches en cours d’exécution. Au terme de cette étape, la révision de service verte devient la révision de service de production. | Non | 

### Paramètres de configuration
<a name="canary-configuration-parameters"></a>

Les déploiements Canary nécessitent les paramètres de configuration suivants :
+ Pourcentage Canary : pourcentage du trafic à acheminer vers la nouvelle révision du service pendant la phase Canary. Cela permet de tester avec un sous-ensemble contrôlé du trafic de production.
+ Temps de cuisson des canaris : temps d'attente pendant la phase canari avant de transférer le trafic restant vers la nouvelle révision du service. Cela laisse le temps de contrôler et de valider la nouvelle version.

### Gestion du trafic
<a name="canary-traffic-management"></a>

Les déploiements Canary utilisent des groupes cibles d'équilibreurs de charge pour gérer la distribution du trafic :
+ Groupe cible d'origine : contient les tâches de la version stable actuelle et reçoit la majorité du trafic.
+ Groupe cible Canary : contient les tâches de la nouvelle version et reçoit un faible pourcentage de trafic à des fins de test.
+ Routage pondéré : l'équilibreur de charge utilise des règles de routage pondérées pour répartir le trafic entre les groupes cibles en fonction du pourcentage Canary configuré.

### Surveillance et validation
<a name="canary-monitoring-validation"></a>

Les déploiements Canary efficaces reposent sur une surveillance complète :
+ Contrôles de santé - Les deux ensembles de tâches doivent passer des tests de santé avant de recevoir du trafic.
+ Comparaison des indicateurs : comparez les indicateurs de performance clés entre les versions d'origine et Canary, tels que le temps de réponse, le taux d'erreur et le débit.
+ Annulation automatique - Configurez les CloudWatch alarmes pour déclencher automatiquement la restauration si les performances de la version Canary sont dégradées.
+ Validation manuelle : utilisez la période d'évaluation pour examiner manuellement les journaux, les indicateurs et les commentaires des utilisateurs avant de continuer.

### Bonnes pratiques pour les déploiements avec Canary
<a name="canary-best-practices"></a>

Suivez ces bonnes pratiques pour garantir le succès des déploiements Canary avec les services.

#### Choisissez les pourcentages de trafic appropriés
<a name="canary-traffic-percentage"></a>

Tenez compte des facteurs suivants lors de la sélection des pourcentages de trafic Canary :
+ Commencez modestement : commencez par 5 à 10 % du trafic afin de minimiser l'impact en cas de problème.
+ Tenez compte de la criticité des applications : utilisez des pourcentages plus faibles pour les applications critiques et des pourcentages plus élevés pour les services moins critiques.
+ Tenez compte du volume de trafic - Assurez-vous que le pourcentage Canary génère suffisamment de trafic pour une validation significative.

#### Définissez des périodes d'évaluation appropriées
<a name="canary-evaluation-time"></a>

Configurez les périodes d'évaluation en fonction des considérations suivantes :
+ Prévoyez suffisamment de temps : définissez des périodes d'évaluation suffisamment longues pour recueillir des données de performance pertinentes, généralement de 10 à 30 minutes.
+ Tenez compte des modèles de trafic : tenez compte des modèles de trafic de votre application et des heures de pointe d'utilisation.
+ Équilibre entre rapidité et sécurité - Les périodes d'évaluation plus longues fournissent davantage de données mais ralentissent la vitesse de déploiement.

#### Mettre en œuvre une surveillance complète
<a name="canary-monitoring-setup"></a>

Configurez la surveillance pour suivre les performances de déploiement de Canary :
+ Indicateurs clés : surveillez le temps de réponse, le taux d'erreur, le débit et l'utilisation des ressources pour les deux ensembles de tâches.
+ Annulation basée sur les alarmes : configurez les CloudWatch alarmes pour déclencher automatiquement l'annulation lorsque les métriques dépassent les seuils.
+ Analyse comparative - Configurez des tableaux de bord pour comparer les indicateurs entre les versions side-by-side d'origine et Canary.
+ Indicateurs commerciaux - Incluez des indicateurs spécifiques à l'entreprise, tels que les taux de conversion ou l'engagement des utilisateurs, ainsi que des indicateurs techniques.

#### Planifier des stratégies de réduction
<a name="canary-rollback-strategy"></a>

Préparez-vous à d'éventuels scénarios de réduction grâce aux stratégies suivantes :
+ Annulation automatique : configurez des déclencheurs de restauration automatique en fonction des bilans de santé et des indicateurs de performance.
+ Procédures d'annulation manuelles - Documentez des procédures claires pour la restauration manuelle lorsque les déclencheurs automatisés ne détectent pas tous les problèmes.
+ Tests de rétrogradation : testez régulièrement les procédures de rétrogradation pour vous assurer qu'elles fonctionnent correctement en cas de besoin.

#### Validez minutieusement avant le déploiement
<a name="canary-testing-validation"></a>

Assurez-vous d'une validation complète avant de procéder aux déploiements Canary :
+ Tests de pré-déploiement : testez minutieusement les modifications dans les environnements de test avant le déploiement de Canary.
+ Configuration des contrôles de santé : assurez-vous que les contrôles de santé reflètent avec précision l'état de préparation et les fonctionnalités de l'application.
+ Validation des dépendances : vérifiez que les nouvelles versions sont compatibles avec les services en aval et en amont.
+ Cohérence des données : assurez-vous que les modifications du schéma de base de données et les migrations de données sont rétrocompatibles.

#### Coordonner l'implication de l'équipe
<a name="canary-team-coordination"></a>

Garantissez une coordination efficace des équipes lors des déploiements Canary :
+ Fenêtres de déploiement : planifiez les déploiements de Canary pendant les heures ouvrables lorsque les équipes sont disponibles pour surveiller et répondre.
+ Canaux de communication - Établissez des canaux de communication clairs pour connaître l'état du déploiement et l'escalade des problèmes.
+ Attributions de rôles : définissez les rôles et les responsabilités en matière de surveillance, de prise de décision et d'exécution des annulations.

# Ressources requises pour les déploiements d'Amazon ECS Canary
<a name="canary-deployment-implementation"></a>

Pour utiliser un déploiement Canary avec transfert de trafic géré, votre service doit utiliser l'une des fonctionnalités suivantes :
+ Elastic Load Balancing
+ Service Connect

La liste suivante fournit un aperçu général de ce que vous devez configurer pour les déploiements Amazon ECS Canary :
+ Votre service utilise Application Load Balancer, Network Load Balancer ou Service Connect Configurez les ressources appropriées.
  + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
  + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
  + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).
+ Définissez le contrôleur de déploiement de service sur `ECS`.
+ Configurez la stratégie de déploiement sur `canary` dans votre définition de service.
+ Configurez éventuellement des paramètres supplémentaires tels que :
  + La durée de l’intégration pour le nouveau déploiement
  + Pourcentage du trafic à acheminer vers la nouvelle révision du service pendant la phase Canary. 
  + Durée d'attente pendant la phase Canary avant de transférer le trafic restant vers la nouvelle révision du service. 
  + CloudWatch alarmes pour annulation automatique
  + Hooks du cycle de vie du déploiement (il s'agit de fonctions Lambda qui s'exécutent à des étapes de déploiement spécifiées)

## Bonnes pratiques
<a name="canary-deployment-best-practices"></a>

Suivez ces bonnes pratiques pour réussir les déploiements Amazon ECS lcanary :
+ **Assurez-vous que votre application peut gérer les deux révisions de service exécutées simultanément.**
+ **Prévoyez une capacité de cluster suffisante pour gérer les deux révisions de service lors du déploiement.**
+ **Testez vos procédures de rollback avant de les mettre en œuvre en production.**
+ Configurez les surveillances de l’état appropriées qui reflètent précisément l’état de votre application.
+ Définissez une durée de l’intégration permettant de tester suffisamment le déploiement vert.
+ Implémentez des CloudWatch alarmes pour détecter automatiquement les problèmes et déclencher des annulations.
+ Utilisez les hooks de cycle de vie pour effectuer des tests automatisés à chaque étape du déploiement.
+ Commencez par de faibles pourcentages de canaris (5 à 10 %) afin de minimiser l'impact en cas de problème.
+ Définissez des périodes d'évaluation appropriées qui laissent suffisamment de temps pour une collecte significative de données de performance.
+ Mettez en œuvre une surveillance complète avec des CloudWatch alarmes pour les déclencheurs d'annulation automatisés.
+ Configurez des contrôles de santé qui reflètent avec précision l'état de préparation et les fonctionnalités de votre application.
+ Surveillez à la fois les indicateurs techniques (temps de réponse, taux d'erreur) et les indicateurs commerciaux pendant l'évaluation.
+ Assurez-vous que votre application peut gérer le partage du trafic sans problèmes de session ou d'état.
+ Planifiez les procédures de rollback et testez-les régulièrement pour vous assurer qu'elles fonctionnent en cas de besoin.
+ Planifiez les déploiements de Canary pendant les heures ouvrables, lorsque les équipes peuvent surveiller et réagir.
+ Validez minutieusement les modifications dans les environnements de test avant le déploiement de Canary.
+ Documentez des procédures claires pour les interventions manuelles et les décisions d'annulation.

# Création d'un déploiement Amazon ECS Canary
<a name="deploy-canary-service"></a>

En utilisant les déploiements Amazon ECS Canary, vous pouvez transférer un faible pourcentage du trafic vers votre nouvelle version de service (le « canari »). Validez le déploiement, puis déplacez le trafic restant en une seule fois après un intervalle spécifié. Cette approche vous permet de tester de nouvelles fonctionnalités avec un minimum de risques avant le déploiement complet.

## Conditions préalables
<a name="deploy-canary-service-prerequisites"></a>

Effectuez les opérations suivantes avant de démarrer un déploiement Canary.

1. Configurez les autorisations appropriées.
   + Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
   + Pour plus d’informations sur les autorisations Lambda, consultez la section [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

1. Les déploiements Amazon ECS Canary nécessitent que votre service utilise l'une des fonctionnalités suivantes : Configurez les ressources appropriées.
   + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
   + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
   + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).

## Procédure
<a name="deploy-canary-service-procedure"></a>

Vous pouvez utiliser la console ou le AWS CLI pour créer un service de déploiement Amazon ECS Canary.

------
#### [ Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Déterminez la ressource à partir de laquelle vous lancez le service.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-canary-service.html)

   La page **Créer un service** s’affiche.

1. Sous **Détails du service**, procédez comme suit :

   1. Pour **Famille de définition de tâche**, choisissez la définition de tâche à utiliser. Ensuite, pour **Révision de définition de tâche**, saisissez la révision à utiliser.

   1. Pour **Service name** (Nom du service), saisissez un nom pour votre service.

1. Pour exécuter le service dans un cluster existant, pour **Cluster existant**, sélectionnez le cluster. Pour exécuter le service dans un nouveau cluster, choisissez **Créer un cluster** 

1. Choisissez comment vos tâches sont distribuées dans votre infrastructure de cluster. Sous **Configuration de calcul**, choisissez votre option.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-canary-service.html)

1. Sous **Configuration du déploiement**, procédez comme suit :

   1. Pour **Type de service**, choisissez **Replica**.

   1. Pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.

   1. Pour qu’Amazon ECS surveille la répartition des tâches entre les zones de disponibilité et les redistribue en cas de déséquilibre, sous **Rééquilibrage des services entre zones de disponibilité**, sélectionnez **Rééquilibrage des services entre zones de disponibilité**.

   1. Pour **Période de grâce pour la surveillance de l’état**, saisissez la durée (en secondes) pendant laquelle le planificateur de service ignore les surveillances de l’état de Elastic Load Balancing, VPC Lattice et des conteneurs qui ne sont pas saines après le démarrage initial d’une tâche. Si vous ne spécifiez aucune valeur pour la période de grâce de surveillance de l’état, la valeur par défaut 0 est utilisée.

1. Sous **Configuration du déploiement**, configurez les paramètres de déploiement de Canary :

   1. Pour la **stratégie de déploiement**, choisissez **Canary**.

   1. Pour le **pourcentage Canary**, entrez le pourcentage du trafic à passer à la révision du service vert lors de la première étape (par exemple, 10 % pour le trafic Canary initial).

   1. Pour le **temps de cuisson aux Canaries**, entrez le temps d'attente en minutes avant de transférer le reste du trafic vers la version verte du service.

   1. Pour le **temps de cuisson**, entrez le nombre de minutes pendant lesquelles les révisions du service bleu et vert seront exécutées simultanément après le dernier changement de trafic avant que la révision bleue ne soit terminée.

   1. (Facultatif) Exécutez des fonctions Lambda à des étapes spécifiques du déploiement. Sous **Hooks de cycle de vie du déploiement**, sélectionnez les étapes dans lesquelles exécuter les hooks de cycle de vie.

      Pour ajouter un hook de cycle de vie

      1. Choisissez **Ajouter**.

      1. Pour **Fonction Lambda**, saisissez le nom ou l’ARN de la fonction.

      1. Pour **Rôle**, sélectionnez le rôle IAM qui dispose de l’autorisation requise pour invoquer la fonction Lambda.

      1. Pour **Étapes du cycle de vie**, sélectionnez les étapes dans lesquelles la fonction Lambda doit être exécutée.

1. Pour configurer la manière dont Amazon ECS détecte et gère les échecs de déploiement, développez **Deployment failure detection** (Détection des échecs de déploiement), puis choisissez vos options. 

   1. Pour arrêter un déploiement lorsque les tâches ne peuvent pas démarrer, sélectionnez **Use the Amazon ECS deployment circuit breaker** (Utiliser le disjoncteur de déploiement Amazon ECS).

      Pour que le logiciel restaure automatiquement le dernier état de déploiement terminé lorsque le disjoncteur de déploiement définit le déploiement comme ayant échoué, sélectionnez **Restauration en cas d’échec**.

   1. Pour arrêter un déploiement en fonction des métriques de l'application, sélectionnez **Utiliser une ou plusieurs CloudWatch alarmes**. Ensuite, à partir du **nom de l'CloudWatch alarme**, choisissez les alarmes. Pour créer une nouvelle alarme, rendez-vous sur la CloudWatch console.

      Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsqu'une CloudWatch alarme indique que le déploiement a échoué, sélectionnez Annulation en **cas d'échec**.

1. (Facultatif) Pour interconnecter votre service à l’aide de Service Connect, développez **Service Connect**, puis spécifiez les éléments suivants :

   1.  Sélectionnez **Activer Service Connect**.

   1. Sous **Service Connect configuration** (Configuration de Service Connect), spécifiez le mode client.
      + Si votre service exécute une application client réseau qui doit uniquement se connecter à d’autres services de l’espace de noms, sélectionnez **Côté client uniquement**.
      + Si votre service exécute une application réseau ou un service Web et doit fournir des points de terminaison pour ce service, et se connecte à d'autres services dans l'espace de noms, choisissez **Client and server** (Client et serveur).

   1. Pour utiliser un espace de noms qui n'est pas l'espace de noms de cluster par défaut, dans **Namespace** (Espace de noms), choisissez l'espace de noms du service. Il peut s'agir d'un espace de noms créé séparément dans le même espace Région AWS dans votre région Compte AWS ou d'un espace de noms dans la même région qui est partagé avec votre compte en utilisant AWS Resource Access Manager ()AWS RAM. *Pour plus d'informations sur les AWS Cloud Map espaces de noms partagés, consultez la section [Partage d'espaces de AWS Cloud Map noms entre comptes](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) dans le Guide du AWS Cloud Map développeur.*

   1. (Facultatif) Configurez les règles d'en-tête du trafic de test pour les déploiements Canary. Sous **Routage du trafic de test**, spécifiez les éléments suivants :

      1. Sélectionnez **Activer les règles d’en-tête du trafic de test** pour acheminer des requêtes spécifiques vers la révision de service verte pendant les tests.

      1. Pour **Règles de correspondance des en-têtes**, configurez les critères de routage du trafic de test suivants :
         + **Nom de l’en-tête** : saisissez le nom de l’en-tête HTTP correspondant (par exemple, `X-Test-Version` ou `User-Agent`).
         + **Type de correspondance** : choisissez les critères de correspondance :
           + **Correspondance exacte** : acheminer les requêtes dont la valeur d’en-tête correspond exactement à la valeur spécifiée
           + **En-tête présent** : acheminer les requêtes contenant l’en-tête spécifié, quelle que soit sa valeur
           + **Correspondance de modèle** : acheminer les requêtes dont la valeur d’en-tête correspond à un modèle spécifié
         + **Valeur d’en-tête** (si vous utilisez une correspondance exacte ou une correspondance de modèle) : saisissez la valeur ou le modèle à comparer.

         Vous pouvez ajouter plusieurs règles de correspondance d’en-têtes pour créer une logique de routage complexe. Les requêtes correspondant à l’une des règles configurées seront acheminées vers la version verte du service à des fins de test.

      1. Choisissez **Ajouter une règle d’en-tête** pour configurer des conditions de correspondance d’en-tête supplémentaires.
**Note**  
Les règles d’en-tête du trafic de test vous permettent de valider les nouvelles fonctionnalités avec un trafic contrôlé avant de procéder au déploiement complet. Cela vous permet de tester la révision de service verte avec des requêtes spécifiques (telles que celles provenant d’outils de test internes ou d’utilisateurs bêta) tout en maintenant un flux de trafic normal vers la révision de service bleue.

   1. (Facultatif) Spécifiez une configuration de journal. Sélectionnez **Utiliser la collecte de journaux**. L'option par défaut envoie les journaux du conteneur à CloudWatch Logs. Les autres options du pilote de journal sont configurées à l'aide de AWS FireLens. Pour de plus amples informations, veuillez consulter [Envoyer les journaux Amazon ECS à un AWS service ou AWS Partner](using_firelens.md).

      Voici une description plus détaillée de chaque destination de journal de conteneur.
      + **Amazon CloudWatch** — Configurez la tâche pour envoyer les journaux des conteneurs à CloudWatch Logs. Les options du pilote de journal par défaut sont fournies, ce qui permet de créer un groupe de CloudWatch journaux en votre nom. Pour spécifier un autre nom de groupe de journaux, modifiez les valeurs des options de pilote.
      + **Amazon Data Firehose** : configurez la tâche pour envoyer des journaux de conteneur à Firehose. Les options par défaut du pilote de journalisation sont fournies. Elles envoient les journaux vers un flux de livraison Firehose. Pour spécifier un autre nom de flux de diffusion, modifiez les valeurs des options de pilote.
      + **Amazon Kinesis Data Streams** : configurez la tâche pour envoyer des journaux de conteneur à Kinesis Data Streams. Les options par défaut du pilote de journalisation sont fournies. Elles permettent d’envoyer les journaux vers un flux Kinesis Data Streams. Pour spécifier un autre nom de flux, modifiez les valeurs des options de pilote.
      + **Amazon OpenSearch Service** — Configurez la tâche pour envoyer les journaux des conteneurs vers un domaine OpenSearch de service. Les options de pilote de journal doivent être fournies. 
      + **Simple Storage Service (Amazon S3)** : configurez la tâche pour envoyer des journaux de conteneur à un compartiment Simple Storage Service (Amazon S3). Les options de pilote de journal par défaut sont fournies, mais vous devez spécifier un nom de compartiment Simple Storage Service (Amazon S3) valide.

1. (Facultatif) Configurez l'**équilibrage** de charge pour le déploiement de Canary.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/deploy-canary-service.html)

1. (Facultatif) Pour vous aider à identifier votre service et vos tâches, développez **Tags** (balises), puis configurez vos balises.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises de définition des tâches, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Définitions de tâches**.

   Pour qu'Amazon ECS balise automatiquement toutes les tâches nouvellement lancées avec le nom du cluster et les balises d'un service, sélectionnez **Activer les balises gérées Amazon ECS**, puis pour **Propager des balises à partir de**, choisissez **Service**.

   Ajoutez ou supprimez une balise.
   + [Ajouter une balise] Choisissez **Add tag** (Ajouter une balise), puis procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

1. Choisissez **Créer**.

------
#### [ AWS CLI ]

1. Créez un fichier nommé `canary-service-definition.json` avec le contenu suivant.

   Remplacez le *user-input* par vos valeurs.

   ```
   {
     "serviceName": "myCanaryService",
     "cluster": "arn:aws:ecs:us-west-2:123456789012:cluster/sample-fargate-cluster",
     "taskDefinition": "sample-fargate:1",
     "desiredCount": 5,
     "launchType": "FARGATE",
     "networkConfiguration": {
       "awsvpcConfiguration": {
         "subnets": [
           "subnet-09ce6e74c116a2299",
           "subnet-00bb3bd7a73526788",
           "subnet-0048a611aaec65477"
         ],
         "securityGroups": [
           "sg-09d45005497daa123"
         ],
         "assignPublicIp": "ENABLED"
       }
     },
     "deploymentController": {
       "type": "ECS"
     },
     "deploymentConfiguration": {
       "strategy": "CANARY",
       "maximumPercent": 200,
       "minimumHealthyPercent": 100,
       "canaryConfiguration" : {
           "canaryPercent" : 5.0,
           "canaryBakeTime" : 10
       },
       "bakeTimeInMinutes": 10,
       "alarms": {
         "alarmNames": [
           "myAlarm"
         ],
         "rollback": true,
         "enable": true
       }
     },
     "loadBalancers": [
       {
         "targetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-target-group/54402ff563af1197",
         "containerName": "fargate-app",
         "containerPort": 80,
         "advancedConfiguration": {
           "alternateTargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/green-target-group/cad10a56f5843199",
           "productionListenerRule": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-canary-demo/32e0e4f946c3c05b/9cfa8c482e204f7d/831dbaf72edb911",
           "roleArn": "arn:aws:iam::123456789012:role/LoadBalancerManagementforECS"
         }
       }
     ]
   }
   ```

1. Exécutez `create-service`.

   ```
   aws ecs create-service --cli-input-json file://canary-service-definition.json
   ```

------

## Étapes suivantes
<a name="deploy-canary-service-next-steps"></a>

Après avoir configuré votre déploiement de Canary, procédez comme suit :
+ Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).
+ Surveillez le processus de déploiement pour vous assurer qu'il suit le modèle Canary :
  + La révision de service verte est créée et augmentée horizontalement
  + Un faible pourcentage du trafic (canari) passe à la version verte
  + Le système attend l'intervalle canari spécifié
  + Le trafic restant est transféré en une seule fois vers la version verte
  + Au terme de la durée de l’intégration, la révision bleue est résiliée

## Terminologie du déploiement
<a name="deployment-terminology"></a>

Les termes suivants sont utilisés dans la documentation de déploiement d'Amazon ECS :

Déploiement bleu-vert  
Stratégie de déploiement qui crée un nouvel environnement (vert) à côté de l'environnement existant (bleu), puis fait passer le trafic du bleu au vert après validation.

Déploiement Canary  
Stratégie de déploiement qui achemine un faible pourcentage du trafic vers une nouvelle version tout en conservant la majorité sur la version stable à des fins de validation.

Déploiement linéaire  
Stratégie de déploiement qui déplace progressivement le trafic de l'ancienne version vers la nouvelle version par incréments égaux au fil du temps.

Déploiement progressif  
Stratégie de déploiement qui remplace les instances de l'ancienne version par des instances de la nouvelle version une par une.

Ensemble de tâches  
Ensemble de tâches qui exécutent la même définition de tâche au sein d'un service lors d'un déploiement.

Groupe cible  
Groupement logique de cibles recevant le trafic d'un équilibreur de charge lors des déploiements.

Contrôleur de déploiement  
Méthode utilisée pour déployer de nouvelles versions de votre service, telles qu'Amazon ECS CodeDeploy, ou des contrôleurs externes.

Restauration  
Processus qui consiste à revenir à une version précédente de votre application lorsque des problèmes sont détectés lors du déploiement.

# 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.

# CodeDeploy déploiements bleu/vert pour Amazon ECS
<a name="deployment-type-bluegreen"></a>

Nous vous recommandons d'utiliser le blue/green déploiement Amazon ECS. Pour de plus amples informations, veuillez consulter [Création d'un blue/green déploiement Amazon ECS](deploy-blue-green-service.md).

Le type de déploiement *bleu/vert* utilise le modèle de blue/green déploiement contrôlé par. CodeDeploy Ce type de déploiement permet de vérifier un nouveau déploiement d'un service avant d'y envoyer du trafic de production. Pour plus d'informations, consultez le [contenu](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) du *guide CodeDeploy de l'AWS CodeDeploy utilisateur*. Valider l'état d'un service Amazon ECS avant le déploiement

Le trafic peut être modifié de trois manières au cours d'un blue/green déploiement :
+ **Canary** : le trafic est transféré en deux incréments. Vous pouvez choisir parmi les options canary prédéfinies qui définissent le pourcentage de trafic déplacé vers l'ensemble de tâches mises à jour dans le premier incrément, et l'intervalle (en minutes) avant que le trafic restant soit déplacé dans le second incrément.
+ **Linéaire** : le trafic est transféré en incréments égaux, avec un nombre de minutes égal entre chaque incrément. Vous pouvez choisir parmi les options linéaires prédéfinies qui définissent le pourcentage de trafic déplacé pour chaque incrément et le nombre de minutes entre chaque incrément.
+ **R ll-at-once** — Tout le trafic est transféré de l'ensemble de tâches d'origine à l'ensemble de tâches mis à jour en une seule fois.

Les composants suivants sont utilisés par Amazon ECS lorsqu'un service utilise le type de blue/green déploiement : CodeDeploy 

**CodeDeploy application**  
Une collection de CodeDeploy ressources. Comprend un ou plusieurs groupes de déploiement.

**CodeDeploy groupe de déploiement**  
Paramètres de déploiement. Regroupe les éléments suivants :  
+ Cluster et service Amazon ECS
+ Groupe cible de l’équilibreur de charge et informations sur l’écouteur
+ Stratégie de restauration du déploiement
+ Paramètres de réacheminement du trafic
+ Paramètres d’arrêt de la révision initiale
+ Configuration de déploiement
+ CloudWatch configuration des alarmes pouvant être configurée pour arrêter les déploiements
+ Paramètres SNS ou CloudWatch Events pour les notifications
Pour de plus amples informations, veuillez consulter [Utilisation des groupes de déploiement dans CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html) dans le *Guide de l'utilisateur AWS CodeDeploy *.

**CodeDeploy configuration de déploiement**  
Spécifie comment CodeDeploy achemine le trafic de production vers votre ensemble de tâches de remplacement lors d'un déploiement. Les configurations de déploiement linéaire et canary prédéfinies suivantes sont disponibles. Vous pouvez également créer des déploiements canary et linéaires personnalisés. Pour obtenir de plus amples informations, consultez [Utilisation des configurations de déploiement](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html) dans le *Guide de l'utilisateur AWS CodeDeploy *.  
+ **CodeDeployDefault. ECSAllAtOnce**: Transfère immédiatement tout le trafic vers le conteneur Amazon ECS mis à jour
+ **CodeDeployDefault. ECSLinear10PercentEvery1 minute** : déplace 10 % du trafic toutes les minutes jusqu'à ce que tout le trafic soit transféré.
+ **CodeDeployDefault. ECSLinear10PercentEvery3 minutes** : déplace 10 % du trafic toutes les 3 minutes jusqu'à ce que tout le trafic soit transféré.
+ **CodeDeployDefault. ECSCanary10Pourcentage de 5 minutes** : déplace 10 % du trafic dès le premier incrément. Les 90 % restants sont déployés cinq minutes plus tard.
+ **CodeDeployDefault. ECSCanary10Pourcentage de 15 minutes** : déplace 10 % du trafic dès le premier incrément. Les 90 % restants sont déployés 15 minutes plus tard.

**Révision**  
Une révision est le fichier de spécification de CodeDeploy l'application (AppSpec fichier). Dans le AppSpec fichier, vous spécifiez l'ARN complet de la définition de tâche ainsi que le conteneur et le port de votre ensemble de tâches de remplacement où le trafic doit être acheminé lors de la création d'un nouveau déploiement. Le nom du conteneur doit être un des noms de conteneur référencés dans votre définition de tâche. Si la configuration réseau ou la version de plate-forme a été mise à jour dans la définition du service, vous devez également spécifier ces détails dans le AppSpec fichier. Vous pouvez également spécifier les fonctions Lambda à exécuter au cours des événements de cycle de vie du déploiement. Les fonctions Lambda vous permettent d'exécuter des tests et de renvoyer des métriques pendant le déploiement. Pour plus d'informations, consultez la section [Référence des AppSpec fichiers](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html) dans le *guide de AWS CodeDeploy l'utilisateur*.

## Considérations
<a name="deployment-type-bluegreen-considerations"></a>

Tenez compte des points suivants lorsque vous utilisez le type de blue/green déploiement :
+ Lorsqu'un service Amazon ECS utilisant le type de blue/green déploiement est initialement créé, un ensemble de tâches Amazon ECS est créé.
+ Vous devez configurer le service pour utiliser un équilibreur de charge Application Load Balancer ou un Network Load Balancer. Les exigences de l'équilibreur de charge sont les suivantes :
  + Vous devez ajouter un port d'écoute de production à l'équilibreur de charge, utilisé pour acheminer le trafic de production.
  + Vous pouvez également ajouter à l'équilibreur de charge un port d'écoute de test, utilisé pour acheminer le trafic de test. Si vous spécifiez un écouteur de test, votre trafic de test est CodeDeploy acheminé vers l'ensemble de tâches de remplacement lors d'un déploiement.
  + Les ports d'écoute de production et de test doivent appartenir au même équilibreur de charge.
  + Vous devez définir un groupe cible pour l'équilibreur de charge. Le groupe cible achemine le trafic vers la tâche initiale dans un service via le port d'écoute de production.
  + Lorsqu'un Network Load Balancer est utilisé, seule la configuration de déploiement `CodeDeployDefault.ECSAllAtOnce` est prise en charge.
+ Pour les services configurés pour utiliser Service Auto Scaling et le type de déploiement bleu/vert, la scalabilité automatique n'est pas bloquée pendant un déploiement, mais le déploiement peut échouer dans certaines circonstances. Ce comportement est décrit plus en détail ci-dessous.
  + Si un service évolue et qu'un déploiement démarre, l'ensemble de tâches vertes est créé et CodeDeploy attendra jusqu'à une heure pour qu'il atteigne un état stable et ne transférera aucun trafic tant que ce n'est pas le cas.
  + Si un service est en cours de blue/green déploiement et qu'un événement de dimensionnement se produit, le trafic continuera de changer pendant 5 minutes. Si le service n'atteint pas son état stable dans les 5 minutes, il CodeDeploy arrêtera le déploiement et le marquera comme un échec.
+ Les tâches qui utilisent Fargate ou les types de contrôleur de déploiement `CODE_DEPLOY` ne prennent pas en charge la stratégie de planification `DAEMON`.
+ Lorsque vous créez initialement une CodeDeploy application et un groupe de déploiement, vous devez spécifier les éléments suivants :
  + Vous devez définir deux groupes cibles pour l'équilibreur de charge. L'un d'eux doit être le groupe cible initial défini pour l'équilibreur de charge lors de la création du service Amazon ECS service. La seule exigence relative au second groupe cible est qu'il ne peut pas être associé à un autre équilibreur de charge que celui utilisé par le service.
+ Lorsque vous créez un CodeDeploy déploiement pour un service Amazon ECS, CodeDeploy un ensemble de *tâches de remplacement (ou ensemble* de *tâches vertes) est créé* dans le déploiement. Si vous avez ajouté un écouteur de test à l'équilibreur de charge, votre trafic de test est CodeDeploy acheminé vers l'ensemble de tâches de remplacement. Cela indique le moment où vous pouvez exécuter les tests de validation. Ensuite, CodeDeploy réachemine le trafic de production depuis l'ensemble de tâches initial vers l'ensemble des tâches de remplacement en fonction des paramètres de redirection du trafic définis pour le groupe de déploiement.

## Autorisations IAM requises
<a name="deployment-type-bluegreen-IAM"></a>

Blue/green deployments are made possible by a combination of the Amazon ECS and CodeDeploy APIs. Users must have the appropriate permissions for these services before they can use Amazon ECS blue/greendéploiements dans le AWS Management Console ou avec le bloc opératoire AWS CLI . SDKs 

En plus des autorisations IAM standard nécessaires à la création et à la mise à jour de services, Amazon ECS exige les autorisations suivantes. Ces autorisations ont été ajoutées à la politique IAM `AmazonECS_FullAccess`. Pour de plus amples informations, veuillez consulter [Amazon ECS\$1 FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess).
+ `codedeploy:CreateApplication`
+ `codedeploy:CreateDeployment`
+ `codedeploy:CreateDeploymentGroup`
+ `codedeploy:GetApplication`
+ `codedeploy:GetDeployment`
+ `codedeploy:GetDeploymentGroup`
+ `codedeploy:ListApplications`
+ `codedeploy:ListDeploymentGroups`
+ `codedeploy:ListDeployments`
+ `codedeploy:StopDeployment`
+ `codedeploy:GetDeploymentTarget`
+ `codedeploy:ListDeploymentTargets`
+ `codedeploy:GetDeploymentConfig`
+ `codedeploy:GetApplicationRevision`
+ `codedeploy:RegisterApplicationRevision`
+ `codedeploy:BatchGetApplicationRevisions`
+ `codedeploy:BatchGetDeploymentGroups`
+ `codedeploy:BatchGetDeployments`
+ `codedeploy:BatchGetApplications`
+ `codedeploy:ListApplicationRevisions`
+ `codedeploy:ListDeploymentConfigs`
+ `codedeploy:ContinueDeployment`
+ `sns:ListTopics`
+ `cloudwatch:DescribeAlarms`
+ `lambda:ListFunctions`

**Note**  
Outre les autorisations Amazon ECS standard nécessaires pour exécuter des tâches et des services, les utilisateurs doivent également disposer d'autorisations `iam:PassRole` pour pouvoir utiliser les rôles IAM dans le cadre des tâches.

CodeDeploy nécessite des autorisations pour appeler Amazon ECS APIs, modifier votre Elastic Load Balancing, invoquer des fonctions Lambda et décrire les CloudWatch alarmes, ainsi que des autorisations pour modifier le nombre souhaité pour votre service en votre nom. Avant de créer un service Amazon ECS utilisant le type de blue/green déploiement, vous devez créer un rôle IAM (`ecsCodeDeployRole`). Pour de plus amples informations, veuillez consulter [Rôle CodeDeploy IAM d'Amazon ECS](codedeploy_IAM_role.md).

# Migrer les CodeDeploy blue/green deployments to Amazon ECS blue/green déploiements
<a name="migrate-codedeploy-to-ecs-bluegreen"></a>

CodeDeploy blue/green and Amazon ECS blue/greenles déploiements fournissent des fonctionnalités similaires, mais la façon dont vous les configurez et les gérez diffère.

## CodeDeploy aperçu du déploiement bleu/vert
<a name="codedeploy-bluegreen-overview"></a>

Lorsque vous créez un service Amazon ECS à l'aide de CodeDeploy, vous :

1. créez un équilibreur de charge avec un écouteur de production et (éventuellement) un écouteur de test. Chaque écouteur est configuré avec une seule règle (par défaut) qui achemine tout le trafic vers un seul groupe cible (le groupe cible principal) ;

1. créez un service Amazon ECS, configuré pour utiliser l’écouteur et le groupe cible, avec `deploymentController` type défini sur `CODE_DEPLOY`. La création d’un service entraîne la création d’un jeu de tâches (bleu) enregistré auprès du groupe cible spécifié ;

1. Créez un groupe de CodeDeploy déploiement (dans le cadre d'une CodeDeploy application) et configurez-le avec les détails du cluster Amazon ECS, le nom du service, les écouteurs d'équilibrage de charge, deux groupes cibles (le groupe cible principal utilisé dans la règle d'écoute de production et un groupe cible secondaire à utiliser pour les tâches de remplacement), un rôle de service (pour accorder des CodeDeploy autorisations pour manipuler les ressources Amazon ECS et Elastic Load Balancing) et divers paramètres qui contrôlent le comportement de déploiement.

Avec CodeDeploy, les nouvelles versions d'un service sont déployées à l'aide `CreateDeployment()` du nom de l' CodeDeploy application, du nom du groupe de déploiement et d'un AppSpec fichier fournissant les détails de la nouvelle révision et des hooks de cycle de vie facultatifs. Le CodeDeploy déploiement crée un ensemble de tâches de remplacement (vert) et enregistre ses tâches auprès du groupe cible secondaire. Lorsque celui-ci est opérationnel, il est disponible pour les tests (facultatif) et pour la production. Dans les deux cas, le réacheminement est réalisé en modifiant la règle d’écoute correspondante pour qu’elle pointe vers le groupe cible secondaire associé à le jeu de tâches vert. La restauration s’effectue en ramenant la règle d’écouteur de production au groupe cible principal.

## Présentation du blue/green déploiement d'Amazon ECS
<a name="ecs-bluegreen-overview"></a>

Dans le cas des blue/green déploiements Amazon ECS, la configuration du déploiement fait partie du service Amazon ECS lui-même :

1. Vous devez préconfigurer l’écouteur de production de l’équilibreur de charge avec une règle qui inclut deux groupes cibles avec des pondérations de 1 et 0.

1. Vous devez spécifier les ressources suivantes ou mettre à jour les ressources du service : 
   + L’ARN de cette règle d’écoute 
   + Les deux groupes cibles
   + Un rôle IAM pour autoriser Amazon ECS à appeler Elastic Load Balancing APIs
   + Un rôle IAM facultatif pour exécuter les fonctions Lambda
   + Définissez le type `deploymentController` sur `ECS` et `deploymentConfiguration.strategy` sur `BLUE_GREEN`. Cela entraîne la création d’un déploiement de service (bleu) dont les tâches sont enregistrées auprès du groupe cible principal.

Avec le déploiement bleu/vert Amazon ECS, une nouvelle révision de service est créée en appelant Amazon ECS `UpdateService()`, en transmettant les détails de la nouvelle révision. Le déploiement de service crée des tâches de révision de service (vertes) et les enregistre auprès du groupe cible secondaire. Amazon ECS gère les opérations de réacheminement et de restauration en modifiant les pondérations selon la règle d’écoute.

## Principales différences de mise en œuvre
<a name="implementation-differences"></a>

Bien que les deux approches aboutissent à la création d’un jeu de tâches initial, la mise en œuvre sous-jacente est différente :
+ CodeDeploy utilise un ensemble de tâches, tandis qu'Amazon ECS utilise une révision de service. Les jeux de tâches Amazon ECS sont une ancienne structure qui a été remplacée par les révisions et les déploiements de service Amazon ECS. Ces derniers offrent une meilleure visibilité sur le processus de déploiement, ainsi que sur l’historique des déploiements et des révisions de service.
+ Avec CodeDeploy, les hooks du cycle de vie sont spécifiés dans le cadre du AppSpec fichier fourni à`CreateDeployment()`. Cela signifie que les hooks peuvent être modifiés d’un déploiement à l’autre. Avec Amazon ECS bleu/vert, les hooks sont spécifiés dans le cadre de la configuration du service, et toute mise à jour nécessite un appel à `UpdateService()`.
+ Amazon ECS CodeDeploy et Amazon ECS blue/green utilisent Lambda pour implémenter le hook, mais les entrées et sorties attendues sont différentes.

  Avec CodeDeploy, la fonction doit appeler `PutLifecycleEventHookExecutionStatus()` pour renvoyer le statut du hook, qui peut être `SUCCEEDED` ou`FAILED`. Avec Amazon ECS, la réponse Lambda est utilisée pour indiquer l’état du hook.
+ CodeDeploy invoque chaque hook en tant qu'appel ponctuel et s'attend à ce qu'un statut d'exécution final soit renvoyé dans un délai d'une heure. Les hooks Amazon ECS sont plus flexibles dans la mesure où ils peuvent renvoyer un indicateur `IN_PROGRESS`, qui spécifie que le hook doit être réinvoqué à plusieurs reprises jusqu’à ce qu’il aboutisse à `SUCCEEDED` ou `FAILED`. Pour de plus amples informations, veuillez consulter [Hooks de cycle de vie pour les déploiements de service Amazon ECS](deployment-lifecycle-hooks.md).

## Approches de migration
<a name="migration-paths"></a>

Il existe trois approches principales pour migrer à partir de CodeDeploy blue/green to Amazon ECS blue/green déploiements. Chaque approche présente des caractéristiques différentes en termes de complexité, de risque, de capacité de restauration et de durée d’indisponibilité potentielle.

### Réutilisez les mêmes ressources Elastic Load Balancing que celles utilisées pour CodeDeploy
<a name="inplace-update"></a>

Vous mettez à jour le service Amazon ECS existant pour utiliser le contrôleur de déploiement Amazon ECS avec une stratégie de blue/green déploiement au lieu du contrôleur de CodeDeploy déploiement. Tenez compte des éléments suivants lorsque vous adoptez cette approche :
+ La procédure de migration est plus simple, car vous mettez à jour le contrôleur de déploiement de service Amazon ECS et la stratégie de déploiement existants.
+ Il n’y a aucune durée d’indisponibilité lorsque la configuration et la migration sont correctement effectuées.
+ Une restauration nécessite que vous rétablissiez la révision de service.
+ Le risque est élevé, car il n’existe pas de configuration parallèle bleu/vert.

Vous utilisez le même écouteur d'équilibrage de charge et les mêmes groupes cibles que ceux utilisés pour. CodeDeploy Si vous utilisez CloudFormation, consultez[Migration d'un modèle CloudFormation CodeDeploy blue/green deployment template to an Amazon ECS blue/green CloudFormation](migrate-codedeploy-to-ecs-bluegreen-cloudformation-template.md).

1. Modifiez la règle par défaut des production/test auditeurs pour inclure le groupe cible alternatif et définissez le poids du groupe cible principal sur 1 et du groupe cible alternatif sur 0.

   En CodeDeploy effet, les écouteurs de l'équilibreur de charge rattachés au service sont configurés avec une règle unique (par défaut) qui achemine tout le trafic vers un seul groupe cible. Pour le déploiement bleu/vert Amazon ECS, les écouteurs de l’équilibreur de charge doivent être préconfigurés avec une règle qui inclut les deux groupes cibles avec des pondérations. Le groupe cible principal doit être pondéré à 1 et le groupe cible alternatif doit être pondéré à 0.

1. Mettez à jour le service Amazon ECS existant en appelant l’API `UpdateService` et en définissant le paramètre `deploymentController` sur `ECS` et le paramètre `deploymentStrategy` sur `BLUE_GREEN`. Spécifiez le ARNs groupe cible, le groupe cible alternatif, l'écouteur de production et un écouteur de test facultatif.

1. Vérifiez que le service fonctionne comme prévu.

1. Supprimez la CodeDeploy configuration de ce service Amazon ECS car vous utilisez désormais Amazon ECS bleu/vert.

### Nouveau service avec équilibreur de charge existant
<a name="new-service-existing-lb"></a>

Cette approche utilise la blue/green stratégie de migration. 

Tenez compte des éléments suivants lorsque vous adoptez cette approche :
+ La perturbation est minime. Elle ne se produit que pendant le changement de port Elastic Load Balancing.
+ Une restauration nécessite que vous rétablissiez l’échange de ports Elastic Load Balancing.
+ Le risque est faible, car il existe des configurations parallèles. Vous pouvez donc effectuer un test avant le changement de trafic.

1. Laissez les écouteurs, les groupes cibles et le service Amazon ECS intacts pour la CodeDeploy configuration afin de pouvoir facilement revenir à cette configuration si nécessaire.

1. Créez des groupes cibles et des écouteurs (avec des ports différents de ceux des écouteurs d’origine) sous l’équilibreur de charge existant. Créez ensuite un nouveau service Amazon ECS qui correspond au service Amazon ECS existant, sauf que vous l'utilisez `ECS` comme contrôleur de déploiement, `BLUE_GREEN` comme stratégie de déploiement, et transmettez les règles ARNs pour les nouveaux groupes cibles et les nouveaux auditeurs.

1. Vérifiez la nouvelle configuration en envoyant manuellement le trafic HTTP au service. Si tout se passe bien, échangez les ports des écouteurs d’origine et des nouveaux écouteurs pour acheminer le trafic vers la nouvelle configuration.

1. Vérifiez la nouvelle configuration et, si tout continue de fonctionner comme prévu, CodeDeploy supprimez-la.

### Nouveau service avec un équilibreur de charge
<a name="new-service-new-lb"></a>

Comme l'approche précédente, cette approche utilise la blue/green stratégie de migration. La principale différence est que le passage de la CodeDeploy configuration à la configuration Amazon ECS s'effectue au niveau blue/green d'une couche proxy inverse située au-dessus de l'équilibreur de charge. Des exemples d'implémentations pour la couche proxy inverse sont Route 53 et CloudFront.

Cette approche convient aux clients qui disposent déjà de cette couche proxy inverse, et si toutes les communications avec le service passent par cette couche (par exemple, aucune communication directe au niveau de l’équilibreur de charge).

Tenez compte des éléments suivants lorsque vous adoptez cette approche :
+ Elle nécessite une couche proxy inverse.
+ La procédure de migration est plus complexe, car vous devez mettre à jour le contrôleur de déploiement de service Amazon ECS et la stratégie de déploiement existants.
+ La perturbation est minime. Elle ne se produit que pendant le changement de port Elastic Load Balancing.
+ Pour effectuer une restauration, vous devez annuler les modifications apportées à la configuration du proxy.
+ Le risque est faible, car il existe des configurations parallèles. Vous pouvez donc effectuer un test avant le changement de trafic.

1. Ne modifiez pas la CodeDeploy configuration existante intacte (équilibreur de charge, écouteurs, groupes cibles, service Amazon ECS et groupe de CodeDeploy déploiement).

1. Créez un nouvel équilibreur de charge, des groupes cibles et des écouteurs configurés pour les déploiements Amazon ECS. blue/green 

   Configurez les ressources appropriées.
   + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
   + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).

1. Créez un service avec `ECS` en tant que contrôleur de déploiement et `BLUE_GREEN` en tant que stratégie de déploiement, en pointant vers les nouvelles ressources de l’équilibreur de charge.

1. Vérifiez la nouvelle configuration en la testant via le nouvel équilibreur de charge.

1. Mettez à jour la configuration du proxy inverse pour acheminer le trafic vers le nouvel équilibreur de charge.

1. Observez la nouvelle révision du service et, si tout continue de fonctionner comme prévu, supprimez la CodeDeploy configuration.

## Étapes suivantes
<a name="post-migration-considerations"></a>

Après la migration vers les blue/green déploiements Amazon ECS :
+ Mettez à jour vos scripts et CI/CD pipelines de déploiement pour utiliser l'`UpdateService`API Amazon ECS au lieu de l' CodeDeploy `CreateDeployment`API.
+ Mettez à jour votre surveillance et vos alertes pour suivre les déploiements de services Amazon ECS plutôt que les déploiements. CodeDeploy 
+ Envisagez de mettre en œuvre des tests automatisés de votre nouveau processus de déploiement pour vous assurer qu’il fonctionne comme prévu.

# Migration depuis un déploiement de CodeDeploy blue/green to an Amazon ECS blue/green service
<a name="migrate-code-deploy-to-ecs-blue-green"></a>

 En utilisant les blue/green déploiements Amazon ECS, vous pouvez apporter et tester des modifications de service avant de les implémenter dans un environnement de production. 

Vous devez créer de nouveaux hooks de cycle de vie pour votre blue/green déploiement Amazon ECS.

## Conditions préalables
<a name="migrate-code-deploy-to-ecs-blue-green-prerequisites"></a>

Effectuez les opérations suivantes avant de démarrer un blue/green déploiement.

1. Remplacez le rôle Amazon ECS CodeDeploy IAM par les autorisations suivantes.
   + Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
   + Pour plus d’informations sur les autorisations Lambda, consultez la section [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

1. Désactivez CodeDeploy l'automatisation. Pour plus d'informations, consultez la section [Utilisation des groupes de déploiement CodeDeploy dans](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html) le *Guide de CodeDeploy l'utilisateur*. 

1. Vérifiez que vous disposez des informations suivantes issues de votre CodeDeploy blue/green deployment. You can reuse this information for the Amazon ECS blue/green déploiement :
   + Le groupe cible de production
   + L’écouteur de production
   + La règle de production
   + Le groupe cible de test.

     C’est le groupe cible de la révision de service verte.

1. Assurez-vous que les groupes cibles de votre Application Load Balancer sont correctement associés aux règles d’écoute :
   + Si vous n’utilisez pas d’écouteurs de test, les deux groupes cibles (production et test) doivent être associés aux règles d’écoute de production.
   + Si vous utilisez des écouteurs de test, un groupe cible doit être lié aux règles d’écoute de production et l’autre groupe cible doit être lié aux règles d’écoute de test.

   Si cette exigence n’est pas remplie, le déploiement de service échouera avec l’erreur suivante : `Service deployment rolled back because of invalid networking configuration. Both targetGroup and alternateTargetGroup must be associated with the productionListenerRule or testListenerRule.`

1. Vérifiez qu’aucun déploiement de service n’est en cours pour le service. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).

1. Les blue/green déploiements Amazon ECS nécessitent que votre service utilise l'une des fonctionnalités suivantes : Configurez les ressources appropriées.
   + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
   + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
   + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).

1. Décidez si vous souhaitez exécuter les fonctions Lambda pendant les étapes du cycle de vie des étapes du déploiement d'Amazon ECS blue/green .
   + Avant augmentation horizontale
   + Après augmentation horizontale
   + Transfert du trafic test
   + Après transfert du trafic test
   + Transfert du trafic de production
   + Après transfert du trafic de production

   Créez des fonctions Lambda pour chaque étape du cycle de vie. Pour plus d’informations sur l’utilisation de Lambda, consultez la section [Créer une fonction Lambda avec la console](https://docs.aws.amazon.com/lambda/latest/dg/getting-started.html#getting-started-create-function) dans le *Guide du développeur AWS Lambda *.

Pour de plus amples informations sur la mise à jour du contrôleur de déploiement d’un service, consultez la section [Mise à jour des paramètres d’un service Amazon ECS](update-service-parameters.md).

## Procédure
<a name="migrate-code-deploy-to-ecs-procedure"></a>

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

   La page des détails du cluster s’ouvre.

1. Depuis l’onglet **Services**, sélectionnez le service.

   La page des détails du service s’affiche.

1. Dans la bannière, choisissez **Mettre à jour le type de contrôleur de déploiement**.

   La page **Procéder à la migration du type de contrôleur de déploiement** s’affiche.

1. Développez **Nouveau**, puis spécifiez les paramètres suivants.

   1. Pour **Type de contrôleur de déploiement**, choisissez **ECS**.

   1. Pour **Stratégie de déploiement**, choisissez **Bleu/vert**.

   1. Pour **Durée de l’intégration**, saisissez la durée pendant laquelle les révisions de service bleues et vertes s’exécutent.

   1. Pour exécuter des fonctions Lambda pour une étape du cycle de vie, sous **Hooks de cycle de vie du déploiement**, procédez comme suit pour chaque fonction Lambda unique :

      1. Choisissez **Ajouter**.

         Répétez l’opération pour chaque fonction que vous souhaitez exécuter.

      1. Pour **Fonction Lambda**, saisissez le nom de la fonction.

      1. Pour **Rôle**, choisissez le rôle que vous avez créé dans les prérequis avec les autorisations bleu/vert.

         Pour de plus amples informations, veuillez consulter [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

      1. Pour **Étapes du cycle de vie**, sélectionnez les étapes exécutées par la fonction Lambda.

      1.  (Facultatif) Pour **Détails du hook**, saisissez une paire clé-valeur fournissant des informations sur le hook.

1. Développez **Équilibrage de charge**, puis configurez les éléments suivants :

   1. Pour **Rôle**, choisissez le rôle que vous avez créé dans les prérequis avec les blue/green autorisations.

      Pour de plus amples informations, veuillez consulter [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

   1. Pour **Listener**, choisissez l'écouteur de production dans votre déploiement CodeDeploy bleu/vert.

   1. Pour **Règle de production**, choisissez la règle de production dans votre déploiement CodeDeploy bleu/vert.

   1. Pour **Règle de test**, choisissez la règle de test de votre déploiement CodeDeploy bleu/vert.

   1. Pour **Groupe cible**, choisissez le groupe cible de production dans votre déploiement CodeDeploy bleu/vert.

   1. Pour **Groupe cible alternatif, choisissez le groupe** cible de test dans votre déploiement CodeDeploy bleu/vert.

1. Choisissez **Mettre à jour**.

## Étapes suivantes
<a name="migrate-code-deploy-to-ecs-blue-green-next-steps"></a>
+ Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).
+ Surveillez le processus de déploiement pour vous assurer qu’il suit le schéma bleu/vert :
  + La révision de service verte est créée et augmentée horizontalement
  + Le trafic de test est acheminé vers la révision verte (si elle est configurée)
  + Le trafic de production est transféré vers la révision verte
  + Au terme de la durée de l’intégration, la révision bleue est résiliée

# Migration d'un modèle CloudFormation CodeDeploy blue/green deployment template to an Amazon ECS blue/green CloudFormation
<a name="migrate-codedeploy-to-ecs-bluegreen-cloudformation-template"></a>

Migrez un CloudFormation modèle qui utilise une stratégie CodeDeploy blue/green deployments for Amazon ECS services to one that uses the native Amazon ECS blue/green de déploiement. La migration suit l'approche « Réutilisez les mêmes ressources Elastic Load Balancing utilisées pour CodeDeploy ». Pour de plus amples informations, veuillez consulter [Migrer les CodeDeploy blue/green deployments to Amazon ECS blue/green déploiements](migrate-codedeploy-to-ecs-bluegreen.md).

## Modèle source.
<a name="source-template"></a>

Ce modèle utilise la `AWS::CodeDeployBlueGreen` transformation et le `AWS::CodeDeploy::BlueGreen` hook pour implémenter blue/green des déploiements pour un service Amazon ECS.

### Source
<a name="code-deploy-source"></a>

Il s'agit du CloudFormation modèle complet utilisant le déploiement CodeDeploy bleu/vert. Pour plus d'informations, consultez l'[exemple de modèle de déploiement bleu/vert](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/blue-green-template-example.html#blue-green-template-example.json) dans le guide de l'* AWS CloudFormation utilisateur* :

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "Vpc": {
      "Type": "AWS::EC2::VPC::Id"
    },
    "Subnet1": {
      "Type": "AWS::EC2::Subnet::Id"
    },
    "Subnet2": {
      "Type": "AWS::EC2::Subnet::Id"
    }
  },
  "Transform": [
    "AWS::CodeDeployBlueGreen"
  ],
  "Hooks": {
    "CodeDeployBlueGreenHook": {
      "Type": "AWS::CodeDeploy::BlueGreen",
      "Properties": {
        "TrafficRoutingConfig": {
          "Type": "TimeBasedCanary",
          "TimeBasedCanary": {
            "StepPercentage": 15,
            "BakeTimeMins": 5
          }
        },
        "Applications": [
          {
            "Target": {
              "Type": "AWS::ECS::Service",
              "LogicalID": "ECSDemoService"
            },
            "ECSAttributes": {
              "TaskDefinitions": [
                "BlueTaskDefinition",
                "GreenTaskDefinition"
              ],
              "TaskSets": [
                "BlueTaskSet",
                "GreenTaskSet"
              ],
              "TrafficRouting": {
                "ProdTrafficRoute": {
                  "Type": "AWS::ElasticLoadBalancingV2::Listener",
                  "LogicalID": "ALBListenerProdTraffic"
                },
                "TargetGroups": [
                  "ALBTargetGroupBlue",
                  "ALBTargetGroupGreen"
                ]
              }
            }
          }
        ]
      }
    }
  },
  "Resources": {
    "ExampleSecurityGroup": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Security group for ec2 access",
        "VpcId": {"Ref": "Vpc"},
        "SecurityGroupIngress": [
          {
            "IpProtocol": "tcp",
            "FromPort": 80,
            "ToPort": 80,
            "CidrIp": "0.0.0.0/0"
          },
          {
            "IpProtocol": "tcp",
            "FromPort": 8080,
            "ToPort": 8080,
            "CidrIp": "0.0.0.0/0"
          },
          {
            "IpProtocol": "tcp",
            "FromPort": 22,
            "ToPort": 22,
            "CidrIp": "0.0.0.0/0"
          }
        ]
      }
    },
    "ALBTargetGroupBlue": {
      "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
      "Properties": {
        "HealthCheckIntervalSeconds": 5,
        "HealthCheckPath": "/",
        "HealthCheckPort": "80",
        "HealthCheckProtocol": "HTTP",
        "HealthCheckTimeoutSeconds": 2,
        "HealthyThresholdCount": 2,
        "Matcher": {
          "HttpCode": "200"
        },
        "Port": 80,
        "Protocol": "HTTP",
        "Tags": [
          {
            "Key": "Group",
            "Value": "Example"
          }
        ],
        "TargetType": "ip",
        "UnhealthyThresholdCount": 4,
        "VpcId": {"Ref": "Vpc"}
      }
    },
    "ALBTargetGroupGreen": {
      "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
      "Properties": {
        "HealthCheckIntervalSeconds": 5,
        "HealthCheckPath": "/",
        "HealthCheckPort": "80",
        "HealthCheckProtocol": "HTTP",
        "HealthCheckTimeoutSeconds": 2,
        "HealthyThresholdCount": 2,
        "Matcher": {
          "HttpCode": "200"
        },
        "Port": 80,
        "Protocol": "HTTP",
        "Tags": [
          {
            "Key": "Group",
            "Value": "Example"
          }
        ],
        "TargetType": "ip",
        "UnhealthyThresholdCount": 4,
        "VpcId": {"Ref": "Vpc"}
      }
    },
    "ExampleALB": {
      "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
      "Properties": {
        "Scheme": "internet-facing",
        "SecurityGroups": [
          {"Ref": "ExampleSecurityGroup"}
        ],
        "Subnets": [
          {"Ref": "Subnet1"},
          {"Ref": "Subnet2"}
        ],
        "Tags": [
          {
            "Key": "Group",
            "Value": "Example"
          }
        ],
        "Type": "application",
        "IpAddressType": "ipv4"
      }
    },
    "ALBListenerProdTraffic": {
      "Type": "AWS::ElasticLoadBalancingV2::Listener",
      "Properties": {
        "DefaultActions": [
          {
            "Type": "forward",
            "ForwardConfig": {
              "TargetGroups": [
                {
                  "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
                  "Weight": 1
                }
              ]
            }
          }
        ],
        "LoadBalancerArn": {"Ref": "ExampleALB"},
        "Port": 80,
        "Protocol": "HTTP"
      }
    },
    "ALBListenerProdRule": {
      "Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
      "Properties": {
        "Actions": [
          {
            "Type": "forward",
            "ForwardConfig": {
              "TargetGroups": [
                {
                  "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
                  "Weight": 1
                }
              ]
            }
          }
        ],
        "Conditions": [
          {
            "Field": "http-header",
            "HttpHeaderConfig": {
              "HttpHeaderName": "User-Agent",
              "Values": [
                "Mozilla"
              ]
            }
          }
        ],
        "ListenerArn": {"Ref": "ALBListenerProdTraffic"},
        "Priority": 1
      }
    },
    "ECSTaskExecutionRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "",
              "Effect": "Allow",
              "Principal": {
                "Service": "ecs-tasks.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        },
        "ManagedPolicyArns": [
          "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
        ]
      }
    },
    "BlueTaskDefinition": {
      "Type": "AWS::ECS::TaskDefinition",
      "Properties": {
        "ExecutionRoleArn": {"Fn::GetAtt": ["ECSTaskExecutionRole", "Arn"]},
        "ContainerDefinitions": [
          {
            "Name": "DemoApp",
            "Image": "nginxdemos/hello:latest",
            "Essential": true,
            "PortMappings": [
              {
                "HostPort": 80,
                "Protocol": "tcp",
                "ContainerPort": 80
              }
            ]
          }
        ],
        "RequiresCompatibilities": [
          "FARGATE"
        ],
        "NetworkMode": "awsvpc",
        "Cpu": "256",
        "Memory": "512",
        "Family": "ecs-demo"
      }
    },
    "ECSDemoCluster": {
      "Type": "AWS::ECS::Cluster",
      "Properties": {}
    },
    "ECSDemoService": {
      "Type": "AWS::ECS::Service",
      "Properties": {
        "Cluster": {"Ref": "ECSDemoCluster"},
        "DesiredCount": 1,
        "DeploymentController": {
          "Type": "EXTERNAL"
        }
      }
    },
    "BlueTaskSet": {
      "Type": "AWS::ECS::TaskSet",
      "Properties": {
        "Cluster": {"Ref": "ECSDemoCluster"},
        "LaunchType": "FARGATE",
        "NetworkConfiguration": {
          "AwsVpcConfiguration": {
            "AssignPublicIp": "ENABLED",
            "SecurityGroups": [
              {"Ref": "ExampleSecurityGroup"}
            ],
            "Subnets": [
              {"Ref": "Subnet1"},
              {"Ref": "Subnet2"}
            ]
          }
        },
        "PlatformVersion": "1.4.0",
        "Scale": {
          "Unit": "PERCENT",
          "Value": 100
        },
        "Service": {"Ref": "ECSDemoService"},
        "TaskDefinition": {"Ref": "BlueTaskDefinition"},
        "LoadBalancers": [
          {
            "ContainerName": "DemoApp",
            "ContainerPort": 80,
            "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"}
          }
        ]
      }
    },
    "PrimaryTaskSet": {
      "Type": "AWS::ECS::PrimaryTaskSet",
      "Properties": {
        "Cluster": {"Ref": "ECSDemoCluster"},
        "Service": {"Ref": "ECSDemoService"},
        "TaskSetId": {"Fn::GetAtt": ["BlueTaskSet", "Id"]}
      }
    }
  }
}
```

## Étapes de la migration
<a name="migration-steps"></a>

### Supprimer des CodeDeploy ressources spécifiques
<a name="remove-codedeploy-resources"></a>

Vous n’avez plus besoin des propriétés suivantes :
+ La transformation `AWS::CodeDeployBlueGreen`
+ Le hook `CodeDeployBlueGreenHook`
+ Les ressources `GreenTaskDefinition` et `GreenTaskSet` (elles seront gérées par Amazon ECS)
+ La ressource `PrimaryTaskSet` (Amazon ECS gérera les jeux de tâches en interne)

### Reconfigurer l’écouteur de l’équilibreur de charge
<a name="reconfigure-load-balancer"></a>

Modifiez la ressource `ALBListenerProdTraffic` pour utiliser une action directe avec deux groupes cibles :

```
{
  "DefaultActions": [
    {
      "Type": "forward",
      "ForwardConfig": {
        "TargetGroups": [
          {
            "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
            "Weight": 1
          },
          {
            "TargetGroupArn": {"Ref": "ALBTargetGroupGreen"},
            "Weight": 0
          }
        ]
      }
    }
  ]
}
```

### Mise à jour des propriétés de déploiement
<a name="update-ecs-service"></a>

Mettez à jour et ajoutez les éléments suivants :
+ Modifiez la propriété `DeploymentController` en remplaçant `EXTERNAL` par `ECS`.
+ Ajoutez la propriété `Strategy` et définissez-la sur BLUE\$1GREEN.
+ Ajoutez de la propriété `BakeTimeInMinutes`.

  ```
  {
    "DeploymentConfiguration": {
      "MaximumPercent": 200,
      "MinimumHealthyPercent": 100,
      "DeploymentCircuitBreaker": {
        "Enable": true,
        "Rollback": true
      },
      "BakeTimeInMinutes": 5,
      "Strategy": "BLUE_GREEN"
    }
  }
  ```
+ Ajoutez la configuration de l’équilibreur de charge au service :

  ```
  {
    "LoadBalancers": [
      {
        "ContainerName": "DemoApp",
        "ContainerPort": 80,
        "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
        "AdvancedConfiguration": {
          "AlternateTargetGroupArn": {"Ref": "ALBTargetGroupGreen"},
          "ProductionListenerRule": {"Ref": "ALBListenerProdRule"},
          "RoleArn": {"Fn::GetAtt": ["ECSInfrastructureRoleForLoadBalancers", "Arn"]}
        }
      }
    ]
  }
  ```
+ Ajoutez la référence de définition de tâche au service :

  ```
  {
    "TaskDefinition": {"Ref": "BlueTaskDefinition"}
  }
  ```

### Création du ECSInfrastructure RolePolicyForLoadBalancers rôle Amazon
<a name="create-ecs-service-role"></a>

Ajoutez un nouveau rôle IAM qui permet à Amazon ECS de gérer les ressources de l'équilibreur de charge. Pour de plus amples informations, consultez [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).

## Recommandations de test
<a name="testing-recommendations"></a>

1. Déployez le modèle migré dans un environnement hors production.

1. Vérifiez que le service se déploie correctement avec la configuration initiale.

1. Testez un déploiement en mettant à jour la définition de la tâche et en observant le processus de déploiement bleu/vert.

1. Vérifiez que le trafic est correctement transféré entre les déploiements bleu et vert.

1. Testez la fonctionnalité de restauration en forçant un échec de déploiement.

## Modèle après migration
<a name="migrated-template"></a>

### Modèle final
<a name="ecs-bluegreen-template"></a>

Voici le CloudFormation modèle complet utilisant un blue/green déploiement Amazon ECS :

```
{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Parameters": {
    "Vpc": {
      "Type": "AWS::EC2::VPC::Id"
    },
    "Subnet1": {
      "Type": "AWS::EC2::Subnet::Id"
    },
    "Subnet2": {
      "Type": "AWS::EC2::Subnet::Id"
    }
  },
  "Resources": {
    "ExampleSecurityGroup": {
      "Type": "AWS::EC2::SecurityGroup",
      "Properties": {
        "GroupDescription": "Security group for ec2 access",
        "VpcId": {"Ref": "Vpc"},
        "SecurityGroupIngress": [
          {
            "IpProtocol": "tcp",
            "FromPort": 80,
            "ToPort": 80,
            "CidrIp": "0.0.0.0/0"
          },
          {
            "IpProtocol": "tcp",
            "FromPort": 8080,
            "ToPort": 8080,
            "CidrIp": "0.0.0.0/0"
          },
          {
            "IpProtocol": "tcp",
            "FromPort": 22,
            "ToPort": 22,
            "CidrIp": "0.0.0.0/0"
          }
        ]
      }
    },
    "ALBTargetGroupBlue": {
      "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
      "Properties": {
        "HealthCheckIntervalSeconds": 5,
        "HealthCheckPath": "/",
        "HealthCheckPort": "80",
        "HealthCheckProtocol": "HTTP",
        "HealthCheckTimeoutSeconds": 2,
        "HealthyThresholdCount": 2,
        "Matcher": {
          "HttpCode": "200"
        },
        "Port": 80,
        "Protocol": "HTTP",
        "Tags": [
          {
            "Key": "Group",
            "Value": "Example"
          }
        ],
        "TargetType": "ip",
        "UnhealthyThresholdCount": 4,
        "VpcId": {"Ref": "Vpc"}
      }
    },
    "ALBTargetGroupGreen": {
      "Type": "AWS::ElasticLoadBalancingV2::TargetGroup",
      "Properties": {
        "HealthCheckIntervalSeconds": 5,
        "HealthCheckPath": "/",
        "HealthCheckPort": "80",
        "HealthCheckProtocol": "HTTP",
        "HealthCheckTimeoutSeconds": 2,
        "HealthyThresholdCount": 2,
        "Matcher": {
          "HttpCode": "200"
        },
        "Port": 80,
        "Protocol": "HTTP",
        "Tags": [
          {
            "Key": "Group",
            "Value": "Example"
          }
        ],
        "TargetType": "ip",
        "UnhealthyThresholdCount": 4,
        "VpcId": {"Ref": "Vpc"}
      }
    },
    "ExampleALB": {
      "Type": "AWS::ElasticLoadBalancingV2::LoadBalancer",
      "Properties": {
        "Scheme": "internet-facing",
        "SecurityGroups": [
          {"Ref": "ExampleSecurityGroup"}
        ],
        "Subnets": [
          {"Ref": "Subnet1"},
          {"Ref": "Subnet2"}
        ],
        "Tags": [
          {
            "Key": "Group",
            "Value": "Example"
          }
        ],
        "Type": "application",
        "IpAddressType": "ipv4"
      }
    },
    "ALBListenerProdTraffic": {
      "Type": "AWS::ElasticLoadBalancingV2::Listener",
      "Properties": {
        "DefaultActions": [
          {
            "Type": "forward",
            "ForwardConfig": {
              "TargetGroups": [
                {
                  "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
                  "Weight": 1
                },
                {
                  "TargetGroupArn": {"Ref": "ALBTargetGroupGreen"},
                  "Weight": 0
                }
              ]
            }
          }
        ],
        "LoadBalancerArn": {"Ref": "ExampleALB"},
        "Port": 80,
        "Protocol": "HTTP"
      }
    },
    "ALBListenerProdRule": {
      "Type": "AWS::ElasticLoadBalancingV2::ListenerRule",
      "Properties": {
        "Actions": [
          {
            "Type": "forward",
            "ForwardConfig": {
              "TargetGroups": [
                {
                  "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
                  "Weight": 1
                },
                {
                  "TargetGroupArn": {"Ref": "ALBTargetGroupGreen"},
                  "Weight": 0
                }
              ]
            }
          }
        ],
        "Conditions": [
          {
            "Field": "http-header",
            "HttpHeaderConfig": {
              "HttpHeaderName": "User-Agent",
              "Values": [
                "Mozilla"
              ]
            }
          }
        ],
        "ListenerArn": {"Ref": "ALBListenerProdTraffic"},
        "Priority": 1
      }
    },
    "ECSTaskExecutionRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "",
              "Effect": "Allow",
              "Principal": {
                "Service": "ecs-tasks.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        },
        "ManagedPolicyArns": [
          "arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy"
        ]
      }
    },
    "ECSInfrastructureRoleForLoadBalancers": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [
            {
              "Sid": "AllowAccessToECSForInfrastructureManagement",
              "Effect": "Allow",
              "Principal": {
                "Service": "ecs.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
            }
          ]
        },
        "ManagedPolicyArns": [
          "arn:aws:iam::aws:policy/AmazonECSInfrastructureRolePolicyForLoadBalancers"
        ]
      }
    },
    "BlueTaskDefinition": {
      "Type": "AWS::ECS::TaskDefinition",
      "Properties": {
        "ExecutionRoleArn": {"Fn::GetAtt": ["ECSTaskExecutionRole", "Arn"]},
        "ContainerDefinitions": [
          {
            "Name": "DemoApp",
            "Image": "nginxdemos/hello:latest",
            "Essential": true,
            "PortMappings": [
              {
                "HostPort": 80,
                "Protocol": "tcp",
                "ContainerPort": 80
              }
            ]
          }
        ],
        "RequiresCompatibilities": [
          "FARGATE"
        ],
        "NetworkMode": "awsvpc",
        "Cpu": "256",
        "Memory": "512",
        "Family": "ecs-demo"
      }
    },
    "ECSDemoCluster": {
      "Type": "AWS::ECS::Cluster",
      "Properties": {}
    },
    "ECSDemoService": {
      "Type": "AWS::ECS::Service",
      "Properties": {
        "Cluster": {"Ref": "ECSDemoCluster"},
        "DesiredCount": 1,
        "DeploymentController": {
          "Type": "ECS"
        },
        "DeploymentConfiguration": {
          "MaximumPercent": 200,
          "MinimumHealthyPercent": 100,
          "DeploymentCircuitBreaker": {
            "Enable": true,
            "Rollback": true
          },
          "BakeTimeInMinutes": 5,
          "Strategy": "BLUE_GREEN"
        },
        "NetworkConfiguration": {
          "AwsvpcConfiguration": {
            "AssignPublicIp": "ENABLED",
            "SecurityGroups": [
              {"Ref": "ExampleSecurityGroup"}
            ],
            "Subnets": [
              {"Ref": "Subnet1"},
              {"Ref": "Subnet2"}
            ]
          }
        },
        "LaunchType": "FARGATE",
        "PlatformVersion": "1.4.0",
        "TaskDefinition": {"Ref": "BlueTaskDefinition"},
        "LoadBalancers": [
          {
            "ContainerName": "DemoApp",
            "ContainerPort": 80,
            "TargetGroupArn": {"Ref": "ALBTargetGroupBlue"},
            "AdvancedConfiguration": {
              "AlternateTargetGroupArn": {"Ref": "ALBTargetGroupGreen"},
              "ProductionListenerRule": {"Ref": "ALBListenerProdRule"},
              "RoleArn": {"Fn::GetAtt": ["ECSInfrastructureRoleForLoadBalancers", "Arn"]}
            }
          }
        ]
      }
    }
  }
}
```

# Migration d'un service de mise à jour continue CodeDeploy bleu/vert vers un déploiement de service de mise à jour continue Amazon ECS
<a name="migrate-code-deploy-to-ecs-rolling"></a>

 Vous pouvez migrer vos déploiements de services d'un déploiement CodeDeploy bleu/vert vers un déploiement de mise à jour continue Amazon ECS. Cela vous permet de passer de la CodeDeploy dépendance à l'utilisation d'un déploiement intégré.

Le planificateur de service Amazon ECS remplace les tâches en cours d’exécution par de nouvelles tâches. Le nombre de tâches ajoutées au service ou supprimées du service par Amazon ECS lors d'une mise à jour propagée est contrôlé par la configuration de déploiement du service.

## Conditions préalables
<a name="migrate-code-deploy-to-ecs-rolling-prerequisites"></a>

Effectuez les opérations suivantes avant de démarrer un blue/green déploiement. 

1. Vous n'avez plus besoin du rôle CodeDeploy IAM Amazon ECS.

1. Désactivez CodeDeploy l'automatisation. Pour plus d'informations, consultez la section [Utilisation des groupes de déploiement CodeDeploy dans](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-groups.html) le *Guide de CodeDeploy l'utilisateur*.

1. Vérifiez qu’aucun déploiement de service n’est en cours pour le service. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).

Pour de plus amples informations sur la mise à jour du contrôleur de déploiement d’un service, consultez la section [Mise à jour des paramètres d’un service Amazon ECS](update-service-parameters.md).

## Procédure
<a name="migrate-code-deploy-to-ecs-rolling-procedure"></a>

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

   La page des détails du cluster s’ouvre.

1. Depuis l’onglet **Services**, sélectionnez le service.

   La page des détails du service s’affiche.

1. Dans la bannière, choisissez **Migrer**.

   La page **Mettre à jour la configuration du déploiement** s’affiche.

1. Développez **Options de déploiement**, puis spécifiez les paramètres suivants.

   1. Pour **Type de contrôleur de déploiement**, choisissez **ECS**.

   1. Pour **Stratégie de déploiement**, choisissez **Mise à jour propagée**.

   1. Pour **Min running tasks** (Minimum de tâches en cours d'exécution), saisissez la limite inférieure pour le nombre de tâches du service qui doivent rester à l'état `RUNNING` lors d'un déploiement, en tant que pourcentage de nombre souhaité de tâches (arrondi au nombre entier supérieur le plus proche). Pour plus d'informations, consultez [Deployment configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-deploymentconfiguration) (Configuration de déploiement).

   1. Pour **Max running tasks** (Maximum de tâches en cours d'exécution), saisissez la limite supérieure pour le nombre de tâches du service qui peuvent rester à l'état `RUNNING` ou `PENDING` lors d'un déploiement, en tant que pourcentage de nombre souhaité de tâches (arrondi au nombre entier inférieur le plus proche).

1. Développez **Équilibrage de charge**, puis configurez les éléments suivants :

   1. Pour **Rôle**, choisissez le rôle que vous avez créé dans les prérequis avec les blue/green autorisations.

      Pour de plus amples informations, veuillez consulter [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

   1. Pour **Listener**, choisissez l'écouteur de production dans votre déploiement CodeDeploy bleu/vert.

   1. Pour **Groupe cible**, choisissez le groupe cible de production dans votre déploiement CodeDeploy bleu/vert.

1. Choisissez **Mettre à jour**.

## Étapes suivantes
<a name="migrate-code-deploy-to-ecs-rolling-next-steps"></a>

Vous devez mettre le service à jour pour que la modification prenne effet. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).

# Mise à jour de la stratégie de déploiement d’Amazon ECS
<a name="migrate-deployment-strategies"></a>

Amazon ECS prend en charge plusieurs stratégies de déploiement pour mettre à jour vos services. Vous pouvez passer d’une stratégie à l’autre en fonction des exigences de votre application. Cette rubrique explique comment migrer entre des déploiements progressifs et des blue/green déploiements.

## Présentation des stratégies de déploiement d’Amazon ECS
<a name="deployment-strategies-overview"></a>

Avant de passer d’une stratégie de déploiement à une autre, il est important de comprendre le fonctionnement de chaque stratégie et ses principales différences :

**Déploiements progressifs**  
Dans le cadre d’un déploiement propagé, Amazon ECS remplace la version en cours d’exécution de votre application par une nouvelle version. Le planificateur de service utilise les paramètres de pourcentage minimal et maximal de bon fonctionnement pour déterminer la stratégie de déploiement.  
Les déploiements propagés sont plus simples à configurer, mais offrent moins de contrôle sur le processus de déploiement et le routage du trafic.

**Déploiements bleu/vert**  
Lors d'un blue/green déploiement, Amazon ECS crée une nouvelle version de votre service (vert) à côté de la version existante (bleu). Cela vous permet de vérifier la nouvelle version avant d’y acheminer le trafic de production.  
Les déploiements bleu/vert permettent de mieux contrôler le processus de déploiement, notamment les fonctionnalités de transfert du trafic, de test et de restauration.

## Bonnes pratiques
<a name="migration-best-practices"></a>

Suivez ces pratiques exemplaires lors de la migration entre les stratégies de déploiement :
+ **Test dans un environnement hors production** : testez toujours la mise à jour dans un environnement hors production avant d’appliquer des modifications aux services de production.
+ **Planification de la restauration** : établissez un plan de restauration au cas où la mise à jour ne fonctionnerait pas comme prévu.
+ **Surveillance pendant la transition** : surveillez de près votre service pendant et après la migration pour vous assurer qu’il continue de fonctionner correctement.
+ **Mise à jour de la documentation** : mettez à jour votre documentation de déploiement pour refléter la nouvelle stratégie de déploiement.
+ **Considération de l’impact sur le trafic** : déterminez l’impact de la mise à jour sur le trafic vers votre service et planifiez en conséquence.

# Mise à jour de la stratégie de déploiement, de la mise à jour propagée à Amazon ECS bleu/vert
<a name="update-rolling-to-bluegreen"></a>

Vous pouvez passer d'un déploiement de mises à jour continues à un blue/green déploiement Amazon ECS lorsque vous souhaitez apporter et tester des modifications de service avant de les implémenter dans un environnement de production. 

## Conditions préalables
<a name="update-rolling-to-bluegreen-prerequisites"></a>

Avant de faire passer votre service du blue/green déploiement aux déploiements, assurez-vous de disposer des éléments suivants :
+  Attendez que tous les déploiements en cours soient terminés. 
+ Un service Amazon ECS existant utilisant la stratégie de déploiement propagé.
+ Si plusieurs révisions de service reçoivent du trafic, Amazon ECS tente de consolider le trafic vers une seule révision pendant la migration. En cas d’échec, vous devrez peut-être mettre à jour manuellement votre service pour utiliser une seule révision avant de procéder à la migration.
+ Configurez les autorisations appropriées.
  + Pour plus d’informations sur les autorisations Elastic Load Balancing, consultez la section [Rôle IAM d’infrastructure Amazon ECS pour les équilibreurs de charge](AmazonECSInfrastructureRolePolicyForLoadBalancers.md).
  + Pour plus d’informations sur les autorisations Lambda, consultez la section [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).
+ Selon la configuration, vous devez effectuer l’une des actions suivantes :
  + Si votre service utilise Elastic Load Balancing, mettez-le à jour avec la nouvelle « AdvancedConfiguration » et lancez un déploiement propagé. 
  + Si votre service utilise Service Connect, mettez-le à jour et lancez un déploiement propagé. 
  + Si votre service utilise à la fois Elastic Load Balancing et Service Connect, effectuez les deux étapes ci-dessus (vous pouvez utiliser une seule UpdateService requête). 
  + Si votre service n’utilise aucune des solutions ci-dessus, aucune opération supplémentaire n’est nécessaire.
+ Les blue/green déploiements Amazon ECS nécessitent que votre service utilise l'une des fonctionnalités suivantes. Configurez les ressources appropriées.
  + Application Load Balancer : pour plus d’informations, consultez la section [Ressources d'Application Load Balancer pour les déploiements bleu/vert, linéaires et Canary](alb-resources-for-blue-green.md).
  + Network Load Balancer : pour plus d’informations, consultez la section [Ressources du Network Load Balancer pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](nlb-resources-for-blue-green.md).
  + Service Connect : pour plus d’informations, consultez la section [Ressources Service Connect pour les déploiements Amazon ECS bleu/vert, linéaire et Canary](service-connect-blue-green.md).

## Procédure
<a name="update-rolling-to-bluegreen-procedure"></a>

1. Ouvrez la console Amazon ECS à l’adresse [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, sélectionnez le cluster qui contient le service pour lequel vous souhaitez procéder à la migration.

   La page des détails du cluster s’affiche.

1. Sur la page **Détails du cluster**, choisissez l’onglet **Services**,

1. Choisissez le type de rôle Service , puis **Mettre à jour**.

   La page de mise à jour du service s’affiche

1. Développez **Options de déploiement**, puis procédez comme suit :

1. Pour **Stratégie de déploiement**, choisissez **Bleu/vert**.

1. Configurez les paramètres de blue/green déploiement :

   1. Pour **Durée de l’intégration**, saisissez le nombre de minutes pendant lesquelles les révisions de service bleues et vertes seront exécutées simultanément avant que la révision bleue ne soit résiliée. 

      Cela laisse le temps de procéder à des vérifications et à des tests.

   1. (Facultatif) Configurez les fonctions Lambda pour qu’elles s’exécutent à des étapes spécifiques du déploiement. Dans **Hooks de cycle de vie du déploiement**, configurez les fonctions Lambda pour les étapes suivantes :
      + **Avant augmentation horizontale** : s’exécute avant d’augmenter verticalement la révision de service verte
      + **Après augmentation horizontale** : s’exécute après avoir augmenté verticalement la révision de service verte
      + **Transfert du trafic test** : s’exécute pendant le routage du trafic test vers la révision verte du service
      + **Après transfert du trafic test** : s’exécute après que le trafic test a été acheminé vers la révision de service verte
      + **Transfert du trafic de production** : s’exécute pendant le routage du trafic de production vers la révision de service vert
      + **Après transfert du trafic de production** : s’exécute après que le trafic de production a été acheminé vers la révision de service vert

      Pour ajouter un hook de cycle de vie

      1. Choisissez **Ajouter**.

      1. Pour **Fonction Lambda**, saisissez le nom ou l’ARN de la fonction.

      1. Pour **Rôle**, choisissez le rôle IAM qui dispose de l’autorisation d’appeler la fonction Lambda.

      1. Pour **Étapes du cycle de vie**, sélectionnez les étapes dans lesquelles la fonction Lambda doit être exécutée.

      1. Facultatif : pour **Détails du hook**, saisissez des paires clé-valeur pour fournir des informations supplémentaires au hook.

1. Configurez les paramètres de l’équilibreur de charge :

   1. Sous **Équilibrage de charge**, vérifiez que votre service est configuré pour utiliser un équilibreur de charge.

   1. Pour **Groupe cible**, choisissez le groupe cible principal pour votre environnement de production (bleu).

   1. Pour **Groupe cible alternatif**, choisissez le groupe cible pour votre environnement de test (vert).

   1. Pour **Règle d’écoute de production**, choisissez la règle d’écoute pour acheminer le trafic de production.

   1. Facultatif : pour **Règle d’écoute de test**, choisissez une règle d’écoute pour acheminer le trafic de test vers votre environnement vert.

   1. Pour **Rôle**, choisissez le rôle IAM qui permet à Amazon ECS de gérer votre équilibreur de charge.

1. Examinez vos modifications, puis choisissez **Mettre à jour**.

## Étapes suivantes
<a name="update-rolling-to-bluegreen-next-steps"></a>
+ Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).
+ Surveillez le processus de déploiement pour vous assurer qu'il suit le blue/green modèle :
  + La révision de service verte est créée et augmentée horizontalement
  + Le trafic de test est acheminé vers la révision verte (si elle est configurée)
  + Le trafic de production est transféré vers la révision verte
  + Au terme de la durée de l’intégration, la révision bleue est résiliée

# Mise à jour de la stratégie de déploiement depuis Amazon ECS blue/green jusqu'à la mise à jour continue
<a name="update-bluegreen-to-rolling"></a>

Vous pouvez migrer un blue/green déploiement vers un déploiement de mise à jour continue.

Gardez les considérations suivantes à l’esprit lors de la migration vers des déploiements propagés :
+ **Gestion du trafic** : avec les déploiements propagés, les nouvelles tâches commencent à recevoir du trafic dès qu’elles passent les surveillances de l’état. Il n'y a pas de phase de test distincte comme pour les blue/green déploiements.
+ **Efficacité des ressources** : les déploiements progressifs utilisent généralement moins de ressources que blue/green les déploiements car ils remplacent les tâches progressivement au lieu de créer un environnement totalement dupliqué.
+ **Complexité du rollback** : les déploiements progressifs compliquent les rollbacks par rapport aux déploiements. blue/green Si vous devez revenir en arrière, vous devez lancer un nouveau déploiement avec la définition de tâche précédente.
+ **Vitesse de déploiement** : les déploiements progressifs peuvent prendre plus de temps que blue/green les déploiements, en particulier pour les services comportant de nombreuses tâches.
+ **Configuration de l’équilibreur de charge** : votre configuration d’équilibreur de charge existante continuera de fonctionner avec des déploiements propagés, mais le comportement de transfert du trafic sera différent.

## Conditions préalables
<a name="update-bluegreen-to-rolling-prerequisites"></a>

Avant de migrer votre service blue/green vers des déploiements progressifs, assurez-vous de disposer des éléments suivants :
+ Un service Amazon ECS existant utilisant la stratégie blue/green de déploiement
+ Aucun déploiement en cours pour le service (attendez que les déploiements en cours soient terminés)
+ Une compréhension claire de la façon dont votre service se comportera lors de déploiements propagés

**Note**  
Vous ne pouvez pas procéder à la migration d’un service vers un déploiement propagé s’il est en cours de déploiement. Attendez que tous les déploiements en cours soient terminés avant de continuer.

## Procédure de migration
<a name="update-bluegreen-to-rolling-procedure"></a>

Suivez ces étapes pour migrer votre service Amazon ECS blue/green vers des déploiements progressifs :

1. Ouvrez la console Amazon ECS à l’adresse [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, sélectionnez le cluster qui contient le service pour lequel vous souhaitez procéder à la migration.

1. Sur la page **Détails du cluster**, choisissez l’onglet **Services**,

1. Sélectionnez le service pour lequel vous souhaitez procéder à la migration, puis choisissez **Mettre à jour**.

1. Sur la page **Mettre à jour le service**, accédez à la section **Options de déploiement** et développez-la si nécessaire.

1. Pour **Stratégie de déploiement**, choisissez **Mise à jour propagée**.

1. Configurez les paramètres de déploiement propagé :

   1. Pour **Pourcentage minimum sain**, saisissez une limite inférieure pour le nombre de tâches pour lesquelles votre service doit rester dans l’état `RUNNING` lors d’un déploiement. Cette valeur est exprimée en pourcentage du nombre de tâches souhaité pour le service.

   1. Dans **Pourcentage maximal**, saisissez le pourcentage maximal de tâches autorisées à l’état `RUNNING` ou `PENDING` lors d’un déploiement. Cette valeur est exprimée en pourcentage du nombre de tâches souhaité pour le service.

1. Facultatif : sous **Détection des échecs de déploiement**, configurez la manière dont Amazon ECS détecte et gère les échecs de déploiement :

   1. Pour activer le disjoncteur de déploiement, sélectionnez **Utiliser le disjoncteur de déploiement**.

   1. Pour restaurer automatiquement les déploiements ayant échoué, choisissez **Restaurer en cas d’échec**.

1. Passez en revue vos modifications de configuration, puis choisissez **Mettre à jour** pour enregistrer vos modifications et procéder à la migration du service vers un déploiement propagé.

Amazon ECS mettra à jour la configuration de votre service afin d’utiliser la stratégie de déploiement propagé. La prochaine fois que vous mettrez à jour votre service, celui-ci utilisera le processus de déploiement propagé.

**Note**  
Lorsque vous passez d'un déploiement continu blue/green à un déploiement progressif, Amazon ECS gère la transition en :  
identifiant la révision de service active actuelle qui reçoit le trafic ;
maintenant la configuration existante de l’équilibreur de charge, mais en modifiant la façon dont les nouveaux déploiements sont gérés ;
préparant la service pour les futurs déploiements continus.

## Étapes suivantes
<a name="update-bluegreen-to-rolling-next-steps"></a>
+ Mettez à jour le service pour démarrer le déploiement. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).

# Résolution des problèmes liés aux mises à jour de la stratégie de déploiement Amazon ECS
<a name="troubleshooting-deployment-controller-migration"></a>

Cette section fournit des solutions aux problèmes courants que vous pouvez rencontrer lors de la migration de stratégies de déploiement.

## Révisions de services ou jeux de tâches multiples
<a name="troubleshooting-multiple-task-sets"></a>

Les problèmes suivants concernent le fait d’avoir plusieurs révisions de service pour un déploiement.

Jeux de tâches multiples lors de la mise à jour du contrôleur de déploiement ECS  
*Message d’erreur* : `Updating the deployment controller is not supported when there are multiple tasksets in the service. Please ensure your service has only one taskset and try again.`  
*Solution* : cette erreur se produit lorsque vous tentez de modifier le type de contrôleur de déploiement d’un service comportant plusieurs jeux de tâches actifs. Pour résoudre ce problème pour le contrôleur de déploiement `CODE_DEPLOY` ou `EXTERNAL` :  

1. Vérifiez les jeux de tâches actuels :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets"
   ```

1. Attendez que tous les déploiements en cours soient terminés.

1. Forcez un nouveau déploiement pour nettoyer les jeux de tâches :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --force-new-deployment
   ```

1. Si nécessaire, supprimez manuellement des jeux de tâches supplémentaires :

   ```
   aws ecs delete-task-set --cluster your-cluster-name --service your-service-name --task-set task-set-id
   ```

1. Lorsqu’il ne reste qu’un seul jeu de tâches, réessayez de mettre à jour le contrôleur de déploiement.
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

Jeu de tâches principal manquant lors de la mise à jour du contrôleur de déploiement `ECS`  
*Message d’erreur* : `Updating the deployment controller requires a primary taskset in the service. Please ensure your service has a primary taskset and try again.`  
*Solution* : cette erreur se produit lorsque vous tentez de modifier le type de contrôleur de déploiement d’un service qui ne dispose pas d’un jeu de tâches principal. Pour résoudre ce problème :  

1. Vérifiez l’état du service et les jeux de tâches. ). Si un jeu de tâches existe dans le service, il doit être marqué comme `ACTIVE`. 

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].taskSets[*].[status,id]
   ```

   S’il n’y a aucun jeu de tâches dans l’état `ACTIVE`, procédez à la migration du déploiement. Pour plus d’informations, consultez la section [Approches de migration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/migrate-codedeploy-to-ecs-bluegreen.html#migration-paths). 

1. Si aucune tâche n’est en cours d’exécution, déployez au moins une tâche en mettant à jour le service :

   ```
   aws ecs update-service-primary-task-set --cluster your-cluster-name --service your-service-name --primary-task-set your-taskset-id
   ```

   Cela marquera la tâche (auparavant `ACTIVE`) définie dans le service comme ayant le statut `PRIMARY`.

1. Attendez que la tâche atteigne un état d’exécution stable. Vous pouvez vérifier l’état en utilisant :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deployments"
   ```

1. Une fois que le service dispose d’un jeu de tâches principales avec des tâches en cours d’exécution, réessayez de mettre à jour le contrôleur de déploiement.
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

## Incompatibilité entre le type de détection des échecs de déploiement et le contrôleur de déploiement
<a name="troubleshooting-failure-detection"></a>

Les problèmes suivants sont liés à une incompatibilité entre le type de détection des échecs de déploiement et le contrôleur de déploiement.

Disjoncteur de déploiement avec contrôleur non-ECS  
*Message d’erreur* : `Deployment circuit breaker feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.`  
*Solution* : cette erreur se produit lorsque vous tentez d’activer la fonctionnalité de disjoncteur de déploiement sur un service qui n’utilise pas le contrôleur de déploiement `ECS`. Le disjoncteur de déploiement n’est compatible qu’avec le contrôleur de déploiement `ECS`.  

1. Vérifiez le contrôleur de déploiement actuel de votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
   ```

1. Mettez à jour votre service pour utiliser le contrôleur de déploiement `ECS` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
   ```

1. Une fois que le service utilise le contrôleur de déploiement `ECS`, activez le disjoncteur de déploiement :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-configuration "deploymentCircuitBreaker={enable=true,rollback=true}"
   ```
Pour de plus amples informations, veuillez consulter [Détection des pannes par le disjoncteur de déploiement Amazon ECS](deployment-circuit-breaker.md).

Restauration basée sur une alarme avec un contrôleur non-ECS  
*Message d’erreur* : `Alarm based rollback feature is only supported with ECS deployment controller. Update to ECS deployment controller and try again.`  
*Solution* : cette erreur se produit lors de la tentative de configuration de la restauration basée sur les alarmes sur un service qui n’utilise pas le contrôleur de déploiement `ECS`. La fonctionnalité de restauration basée sur les alarmes n’est compatible qu’avec le contrôleur de déploiement `ECS`.  

1. Vérifiez le contrôleur de déploiement actuel de votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
   ```

1. Mettez à jour votre service pour utiliser le contrôleur de déploiement `ECS` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
   ```

1. Une fois que le service utilise le contrôleur de déploiement `ECS`, configurez la restauration basée sur les alarmes :

   ```
   aws ecs update-service --cluster your-cluster-name --services your-service-name --deployment-configuration "alarms={alarmNames=[your-alarm-name],enable=true,rollback=true}"
   ```
Pour de plus amples informations, veuillez consulter [Comment les CloudWatch alarmes détectent les échecs de déploiement d'Amazon ECS](deployment-alarm-failure.md).

## Inadéquation entre Service Connect et le contrôleur de déploiement
<a name="troubleshooting-service-connect-mismatch"></a>

Les problèmes suivants sont liés à une inadéquation entre Service Connect et le contrôleur de déploiement.

Contrôleur `EXTERNAL` avec Service Connect  
*Message d’erreur* : `The EXTERNAL deployment controller type is not supported for services using Service Connect.`  
*Solution* : cette erreur se produit lorsque vous tentez d’utiliser le contrôleur de déploiement `EXTERNAL` avec un service sur lequel Service Connect est activé. Le contrôleur `EXTERNAL` n’est pas compatible avec Service Connect.  

1. Vérifiez si Service Connect est activé sur votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].serviceConnectConfiguration"
   ```

1. Si vous devez utiliser le contrôleur de déploiement `EXTERNAL`, désactivez Service Connect en mettant à jour votre service :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "{}"
   ```

1. Sinon, si vous devez utiliser Service Connect, utilisez plutôt le contrôleur de déploiement `ECS` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
   ```
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

Service Connect avec un contrôleur non-ECS  
*Message d’erreur* : `Service Connect feature is only supported with ECS (rolling update) deployment controller. Update to ECS deployment controller and try again.`  
*Solution* : cette erreur se produit lorsque vous tentez d’activer Service Connect sur un ordinateur qui n’utilise pas le contrôleur de déploiement `ECS`. La fonctionnalité Service Connect n’est compatible qu’avec le contrôleur de déploiement `ECS`.  

1. Vérifiez le contrôleur de déploiement actuel de votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].deploymentController"
   ```

1. Mettez à jour votre service pour utiliser le contrôleur de déploiement ECS :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
   ```

1. Une fois que le service utilise le contrôleur de déploiement ECS, activez Service Connect :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --service-connect-configuration "enabled=true,namespace=your-namespace"
   ```
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

## Inadéquation entre le type de contrôleur et la stratégie de planification
<a name="troubleshooting-controller-type-scheduling"></a>

Les problèmes suivants concernent une inadéquation entre le type de contrôleur et la stratégie de planification.

Contrôleur `CODE_DEPLOY` avec stratégie de planification `DAEMON`  
*Message d’erreur* : `The CODE_DEPLOY deployment controller type is not supported for services using the DAEMON scheduling strategy.`  
*Solution* : cette erreur se produit lorsque vous tentez d’utiliser le contrôleur de déploiement CODE\$1DEPLOY avec un service utilisant la stratégie de planification `DAEMON`. Le contrôleur `CODE_DEPLOY` n’est compatible qu’avec la stratégie de planification `REPLICA`.  

1. Vérifiez la stratégie de planification actuelle de votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
   ```

1. Si vous avez besoin de blue/green déploiements, modifiez votre service pour utiliser la stratégie de `REPLICA` planification :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
   ```

1. Sinon, si vous devez utiliser la stratégie de planification `DAEMON`, utilisez plutôt le contrôleur de déploiement `ECS` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
   ```
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

Contrôleur EXTERNE avec stratégie de planification DÉMON  
*Message d’erreur* : `The EXTERNAL deployment controller type is not supported for services using the DAEMON scheduling strategy.`  
*Solution* : cette erreur se produit lorsque vous tentez d’utiliser le contrôleur de déploiement EXTERNE avec un service ECS utilisant la stratégie de planification DÉMON. Le contrôleur EXTERNAL n’est compatible qu’avec la stratégie de planification REPLICA.  

1. Vérifiez la stratégie de planification actuelle de votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].schedulingStrategy"
   ```

1. Si vous devez utiliser le contrôleur de déploiement `EXTERNAL`, modifiez votre service pour utiliser la stratégie de planification `REPLICA` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --scheduling-strategy REPLICA
   ```

1. Sinon, si vous devez utiliser la stratégie de planification `DAEMON`, utilisez plutôt le contrôleur de déploiement `ECS` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --deployment-controller type=ECS
   ```
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

Enregistrements de services avec type de lancement externe  
*Message d’erreur* : `Service registries are not supported for external launch type.`  
*Solution* : cette erreur se produit lors de la tentative de configuration de la découverte de service (registres de services) pour un service utilisant le type de lancement `EXTERNAL`. La découverte de service n’est pas compatible avec le type de lancement `EXTERNAL`.  

1. Vérifiez le type de lancement actuel de votre service :

   ```
   aws ecs describe-services --cluster your-cluster-name --services your-service-name --query "services[0].launchType"
   ```

1. Si vous avez besoin de la découverte de service, modifiez votre service pour utiliser le type de lancement `EC2` ou `FARGATE` :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --launch-type FARGATE
   ```

1. Sinon, si vous devez utiliser le type de lancement `EXTERNAL`, supprimez la configuration du registre du service :

   ```
   aws ecs update-service --cluster your-cluster-name --service your-service-name --service-registries "[]"
   ```
Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).

## Rétablissement d’une mise à jour du contrôleur de déploiement
<a name="troubleshooting-revert"></a>

Si vous décidez de revenir au contrôleur de déploiement précédent, vous pouvez effectuer l’une des opérations suivantes :
+ Si vous l'avez utilisé CloudFormation, vous pouvez utiliser le modèle précédent pour créer une nouvelle pile. Pour plus d’informations, consultez la section [Créer une pile sous](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-create-stack.html) dans le *Guide de l’utilisateur CloudFormation *.
+ Si vous avez utilisé la console Amazon ECS, ou la AWS CLI, vous pouvez mettre à jour le service. Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).

  Si vous utilisez la commande update-service, utilisez l’option `--deployment-controller` et définissez-la sur le contrôleur de déploiement précédent.

# Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS
<a name="service-deployment"></a>

Les déploiements de service fournissent une vue complète de vos déploiements. Les déploiements de service fournissent les informations suivantes sur le service :
+ Configuration de la charge de travail actuellement déployée (révision de service source)
+ Configuration de la charge de travail en cours de déploiement (la révision de service cible)
+ Statut du déploiement
+ Nombre de tâches ayant échoué détectées par le disjoncteur
+ Les CloudWatch alarmes qui sont en alarme
+ Quand le déploiement de service a commencé et s’est terminé
+ Détails d’une restauration, le cas échéant

Pour de plus amples informations sur les propriétés de déploiement de service, consultez la section [Propriétés incluses dans un déploiement de service Amazon ECS](service-deployment-property.md).

Les déploiements de service sont en lecture seule et chacun possède un identifiant unique. 

Il existe trois étapes de déploiement de service :


| Étape | Définition | États associés | 
| --- | --- | --- | 
| En attente | Un déploiement de service a été créé, mais n’a pas démarré. | PENDING | 
| En continu | Le déploiement de service est en cours. |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-deployment.html)  | 
| Terminé  | Le déploiement de service est terminé (avec ou sans succès) |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-deployment.html)  | 

Vous utilisez les déploiements de service pour comprendre le cycle de vie de votre service et pour déterminer si des mesures doivent être prises. Par exemple, en cas de restauration, vous devrez peut-être étudier le déploiement de service et les événements du service.

Vous pouvez consulter l’historique le plus récent des 90 jours des déploiements créés le 25 octobre 2024 ou après cette date à l’aide de la console, de l’API et de l’ AWS CLI. 

Vous pouvez arrêter un déploiement qui n’est pas terminé. Pour de plus amples informations, veuillez consulter [Arrêt de déploiements de service Amazon ECS](stop-service-deployment.md).

## Cycle de vie de déploiement de service
<a name="service-deployments-lifecycle"></a>

Amazon ECS crée automatiquement un déploiement de service lorsque l’une des actions suivantes se produit :
+ Un utilisateur crée un service.
+ Un utilisateur met à jour le service et utilise l’option « Forcer un nouveau déploiement ».
+ Un utilisateur met à jour une ou plusieurs propriétés du service qui nécessitent un déploiement.

Pendant qu’un déploiement est en cours, Amazon ECS met à jour les propriétés de déploiement de service suivantes afin de refléter la progression du déploiement de service :
+ L'état
+ Le nombre de tâches en cours

  Le nombre de tâches en cours indiqué dans la révision de service peut ne pas être égal au nombre réel de tâches en cours d’exécution. Ce nombre représente le nombre de tâches exécutées une fois le déploiement terminé. Par exemple, si vous avez lancé des tâches indépendamment du déploiement de service, ces tâches ne sont pas incluses dans le nombre de tâches en cours pour la révision de service.
+ Détection des échecs du disjoncteur :
  + Nombre de tâches qui n’ont pas pu démarrer
+ CloudWatch détection de panne d'alarme
  + Les alarmes actives
+ Informations de restauration :
  + L’heure de début
  + La raison de la restauration
  + L’ARN de la révision de service utilisée pour la restauration
+ La raison du statut

Amazon ECS supprime le déploiement de service lorsque vous supprimez un service.

## États de déploiement de service
<a name="service-deployments-states"></a>

Le déploiement de service démarre dans l’état `PENDING`. 

L’illustration suivante montre les états de déploiement de service qui peuvent se produire après l’état `PENDING` : `IN_PROGRESS`, `ROLLBACK_REQUESTED`, `SUCCESSFUL`, `STOP_REQUESTED`, `ROLLBACK_IN_PROGRESSS`, `ROLLBACK_FAILED`, `ROLLBACK_SUCCESSFUL` et `STOPPED`.

![\[Déploiement de service : états ARRÊT_DEMANDÉ, SUCCÈS et RESTAURATION_EN_COURS qui peuvent se produire après l’état EN_COURS.\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/images/service-deployment-states.png)


Les informations suivantes fournissent des informations détaillées sur les états de déploiement de service :
+ `PENDING` : un déploiement de service a été créé, mais n’a pas démarré

  L’état peut se passer à `IN_PROGRESS`, `ROLLBACK_REQUESTED`, `STOP_REQUESTED` ou `STOPPED`.
+ `IN_PROGRESS` : le déploiement de service est en cours.

  L’état peut passer à `SUCCESSFUL`, `STOP_REQUESTED`, `ROLLBACK_REQUESTED`, `ROLLBACK_IN_PROGRESS` et `STOPPED`.
+ `STOP_REQUESTED` : l’état du déploiement de service passe à `STOP_REQUESTED` lorsque l’une des situations suivantes se produit :
  + Un utilisateur lance le déploiement d’un nouveau service.
  + L’option de restauration n’est pas utilisée pour le mécanisme de détection des défaillances (disjoncteur ou alarme) et le service n’atteint pas l’état `SUCCESSFUL`.

  L’état passe à `STOPPED`.
+  `ROLLBACK_REQUESTED` : l’état du déploiement de service passe à `ROLLBACK_REQUESTED` lorsqu’un utilisateur requête une restauration par le biais de la console, de l’API ou de la CLI.

  L’état peut passer à `SUCCESSFUL`, `ROLLBACK_IN_PROGRESS` et `STOPPED`.
+ `SUCCESSFUL` : l’état du déploiement de service passe à `SUCCESSFUL` lorsque le déploiement de service est terminé avec succès.
+  `ROLLBACK_IN_PROGRESS` : l’état du déploiement de service passe à `ROLLBACK_IN_PROGRESS` lorsque l’option de restauration est utilisée pour le mécanisme de détection des échecs (disjoncteur ou basé sur les alarmes) et que le service échoue.

   L’état passe à `ROLLBACK_SUCCESSFUL` ou `ROLLBACK_FAILED`.

# Propriétés incluses dans un déploiement de service Amazon ECS
<a name="service-deployment-property"></a>

Les propriétés suivantes sont incluses dans un déploiement de service.


| Propriété | Description | 
| --- | --- | 
|  ARu de déploiement de service  |  L’ARN du déploiement de service.  | 
| ARN du service |  L’ARN du service pour ce déploiement de service.  | 
|  ARN de cluster  |  L’ARN du cluster qui héberge le service.  | 
| Heure de création du déploiement de service | L’heure à laquelle le déploiement de service a été créé.  | 
| Heure de début du déploiement de service | L’heure à laquelle le déploiement de service a commencé.  | 
|  Heure de fin du déploiement de service  | L’heure à laquelle le déploiement de service s’est terminé. | 
| Heure d’arrêt du déploiement de service | L’heure à laquelle le déploiement de service s’est arrêté.  | 
| Heure de mise à jour du déploiement de service | L’heure de la dernière mise à jour du déploiement de service.  | 
| Révisions de service source |  Les révisions de service actuellement en cours.  Pour de plus amples informations sur les propriétés incluses, consultez la section [Propriétés incluses dans une révision de service Amazon ECS](service-revision-property.md).  | 
| Configuration de déploiement | Les paramètres de déploiement, y compris la configuration du disjoncteur et les alarmes qui le déterminent.[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-deployment-property.html) | 
| Révision du service cible | La révision de service à déployer. Une fois le déploiement terminé avec succès, la révision de service cible est la révision de service en cours. | 
| État du déploiement de service | L’état du déploiement de service.Les valeurs valides sont EN\$1ATTENTE, SUCCÈS, ARRETÉ, ARRÊT\$1DEMANDÉ, ARRÊT\$1EN\$1COURS, EN\$1COURS, RESTAURATION\$1EN\$1COURS, RESTAURATION\$1RÉUSSIE et RESTAURATION\$1ÉCHOUÉE. | 
| Informations sur les statuts de déploiement des services | Informations sur la raison pour laquelle le déploiement de service se trouve dans l’état actuel. Par exemple, le disjoncteur a détecté un échec. | 
|  Informations de restauration | Les options de restauration utilisées par le déploiement de service en cas d’échec du déploiement. | 
| Options de disjoncteur de déploiement de service | Le disjoncteur qui détermine que le déploiement d’un service a échoué. | 
| CloudWatch alarmes pour le déploiement du service | Les CloudWatch alarmes qui déterminent l'échec du déploiement d'un service. | 

# Autorisations requises pour consulter les déploiements de service Amazon ECS
<a name="service-deployment-permissions"></a>

 Lorsque vous suivez la pratique exemplaire consistant à octroyer le moindre privilège, vous devez ajouter des autorisations supplémentaires afin de visualiser les déploiements de service dans la console.

Vous devez avoir accès aux actions suivantes :
+ ListServiceDeployments
+ DescribeServiceDeployments
+ DescribeServiceRevisions

Vous devez avoir accès aux ressources suivantes :
+ Service
+ Déploiements de service
+ Révision de service

L’exemple de politique suivant contient les autorisations requises et limite les actions à un service spécifié. 

Remplacez `account`, `cluster-name` et `service-name` par vos propres valeurs.

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

****  

```
{
"Statement": [
    {
        "Effect": "Allow",
        "Action": [
            "ecs:ListServiceDeployments",
            "ecs:DescribeServiceDeployments",
            "ecs:DescribeServiceRevisions"
        ],
        "Resource": [
            "arn:aws:ecs:us-east-1:123456789012:service/cluster-name/service-name",
            "arn:aws:ecs:us-east-1:123456789012:service-deployment/cluster-name/service-name/*",
            "arn:aws:ecs:us-east-1:123456789012:service-revision/cluster-name/service-name/*"
            ]
        }
   ]
}
```

------

# Affichage des déploiements de service Amazon ECS
<a name="view-service-deployment"></a>

Vous pouvez consulter l’historique des 90 derniers jours pour les déploiements créés à partir du 25 octobre 2024. Les déploiements de service peuvent avoir l’un des états suivants :
+ En cours 
+ En attente
+ Terminé

 Vous pouvez utiliser ces informations pour déterminer si vous devez mettre à jour le mode de déploiement du service ou de la révision de service. Pour de plus amples informations sur les propriétés incluses, consultez la section [Propriétés incluses dans un déploiement de service Amazon ECS](service-deployment-property.md).

Avant de commencer, configurez les autorisations requises pour consulter les déploiements de service. Pour de plus amples informations, veuillez consulter [Autorisations requises pour consulter les déploiements de service Amazon ECS](service-deployment-permissions.md).

------
#### [ Amazon ECS Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page des détails du service s’affiche.

1. Sur la page des détails du service, choisissez **Déploiements**.

1. Choisissez le déploiement de service à afficher.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/view-service-deployment.html)

   La page de détails du déploiement de service s’affiche.

1. (Facultatif) Comparez les révisions de service pour voir les différences.

   Sous **Révisions de service**, choisissez **Comparer les révisions**, puis sélectionnez deux révisions à comparer.

   Les révisions du service sont affichées side-by-side avec les différences mises en évidence.

------
#### [ AWS CLI ]

1. Exécutez `list-service-deployments` pour récupérer l’ARN de déploiement de service. 

   Remplacez les variables par vos valeurs.

   ```
   aws ecs list-service-deployments --cluster cluster-name --service service-name
   ```

   Notez serviceDeploymentArn le déploiement que vous souhaitez consulter.

   ```
   {
       "serviceDeployments": [
           {
               "serviceDeploymentArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/example/sd-example/NCWGC2ZR-taawPAYrIaU5",
               "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/example/sd-example",
               "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/example",
               "targetServiceRevisionArn": "arn:aws:ecs:us-west-2:123456789012:service-revision/example/sd-example/4980306466373577095",
               "status": "SUCCESSFUL"
           }
       ]
   }
   ```

1. Exécutez `describe-service-deployments`. Utilisez celui `serviceDeploymentArn` qui a été renvoyé par `list-service-deployments`.

   Remplacez les variables par vos valeurs.

   ```
   aws ecs describe-service-deployments --service-deployment-arns arn:aws:ecs:region:123456789012:service-deployment/cluster-name/service-name/NCWGC2ZR-taawPAYrIaU5
   ```

------

## Étapes suivantes
<a name="view-service-deployment-next-step"></a>

Vous pouvez afficher les détails des révisions de service lors du déploiement. Pour de plus amples informations, consultez [Affichage des détails de la révision d’Amazon ECS](view-service-revision.md).

# Révisions de service Amazon ECS
<a name="service-revision"></a>

Une révision de service contient un enregistrement de la configuration de la charge de travail qu’Amazon ECS tente de déployer. Chaque fois que vous créez ou déployez un service, Amazon ECS crée et capture automatiquement la configuration que vous essayez de déployer dans la révision de service.

 Les révisions de service sont en lecture seule et possèdent des identifiants uniques. Pour de plus amples informations sur les propriétés incluses, consultez la section [Propriétés incluses dans une révision de service Amazon ECS](service-revision-property.md).

 Les révisions de service offrent les avantages suivants :
+ Lors d’un déploiement de service, vous pouvez comparer la révision de service actuellement déployée (source) avec celle en cours de déploiement (cible).
+ Lorsque vous utilisez l’option de restauration pour un déploiement de service, Amazon ECS restaure automatiquement le déploiement de service jusqu’à la dernière révision de service déployée avec succès.
+ Les révisions de service contiennent l’enregistrement de la configuration de la charge de travail dans une ressource. 

## Cycle de vie de la révision de service
<a name="service-revisions-lifecycle"></a>

Amazon ECS crée automatiquement une révision de service lorsque vous créez un service ou que vous mettez à jour une propriété de service qui lance un déploiement.

 Amazon ECS ne crée pas de révision de service pour une opération de restauration. Amazon ECS utilise la dernière révision de service réussie pour la restauration. 

La révision de service est immuable.

Amazon ECS supprime la révision de service lorsque vous supprimez un service.

Vous pouvez consulter les révisions de service créées le 25 octobre 2024 ou après cette date à l’aide de la console, de l’API et de la CLI.

# Propriétés incluses dans une révision de service Amazon ECS
<a name="service-revision-property"></a>

Les propriétés suivantes sont incluses dans une révision de service.


| Ressource | Description | 
| --- | --- | 
|  ARN du service  |  ARN qui identifie le service.  | 
|  ARN de cluster  |  L’ARN du cluster qui héberge le service.  | 
|  ARN de définition de tâche  |  L’ARN de la définition de tâche utilisée pour les tâches de service.  | 
|  Enregistrements de service  |  Les détails des registres de service utilisés pour la découverte de service. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Fournisseurs de capacité |  Les détails de la stratégie de fournisseur de capacité. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Images de conteneurs |  Les détails concernant les images conteneur.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Réseaux |  Configuration réseau du service. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Type de lancement | L’option de calcul utilisée pour le service. | 
| Propriétés spécifiques à Fargate |  Lorsque vous utilisez Fargate, il s’agit d’informations sur la version de Fargate. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Volumes Amazon EBS configurés lors du déploiement |  La configuration d’un volume spécifié dans la définition de tâche en tant que volume configuré au moment du lancement.  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
|  Service Connect |  La configuration de Service Connect [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Équilibreur de charge de service |  Les équilibreurs de charge qui acheminent le trafic de service. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-revision-property.html)  | 
| Surveillance d’exécution | Indique si la surveillance d’exécution est activée. | 
| Date de création |  La date de création de la révision de service.  | 
| Treillis en VPC |  La configuration du VPC Lattice pour la révision de service.  | 

# Affichage des détails de la révision d’Amazon ECS
<a name="view-service-revision"></a>

Vous pouvez consulter les informations relatives aux types de révisions de service suivants qui ont été créés le 25 octobre 2024 ou après cette date :
+ Source : la configuration de la charge de travail actuellement déployée
+ Cible : la configuration de la charge de travail en cours de déploiement

------
#### [ Amazon ECS Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page des détails du service s’affiche.

1. Sur la page des détails du service, choisissez **Déploiements**.

1. Choisissez la révision de service à consulter.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/view-service-revision.html)

------
#### [ AWS CLI ]

1. Exécutez `describe-service-deployments` pour récupérer l’ARN de révision de service. 

   Remplacez les variables par vos valeurs.

   ```
   aws ecs describe-service-deployments --service-deployment-arns arn:aws:ecs:region:account-id:service/cluster-name/service-name/NCWGC2ZR-taawPAYrIaU5
   ```

   Notez l’`arn` des `sourceServiceRevisions` ou des `targetServiceRevisions`.

   ```
   {
       "serviceDeployments": [
           {
               "serviceDeploymentArn": "arn:aws:ecs:us-west-2:123456789012:service-deployment/example/sd-example/NCWGC2ZR-taawPAYrIaU5",
               "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/example/sd-example",
               "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/example",
               "updatedAt": "2024-09-10T16:49:35.572000+00:00",
               "sourceServiceRevision": {
                   "arn": "arn:aws:ecs:us-west-2:123456789012:service-revision/example/sd-example/4980306466373578954",
                   "requestedTaskCount": 0,
                   "runningTaskCount": 0,
                   "pendingTaskCount": 0
               },
               "targetServiceRevision": {
                   "arn": "arn:aws:ecs:us-west-2:123456789012:service-revision/example/sd-example/4980306466373577095",
                   "requestedTaskCount": 0,
                   "runningTaskCount": 0,
                   "pendingTaskCount": 0
               },
               "status": "IN_PROGRESS",
               "deploymentConfiguration": {
                   "deploymentCircuitBreaker": {
                       "enable": false,
                       "rollback": false
                   },
                   "maximumPercent": 200,
                   "minimumHealthyPercent": 100
               }
           }
       ],
       "failures": []
   }
   ```

1. Exécutez `describe-service-revisions`. Utilisez celui `arn` qui a été renvoyé par `describe-service-deployments`.

   Remplacez les variables par vos valeurs.

   ```
   aws ecs describe-service-revisions --service-revision-arns arn:aws:ecs:region:123456789012:service-revision/cluster-name/service-name/4980306466373577095
   ```

------

# Équilibrage d’un service Amazon ECS entre les zones de disponibilité
<a name="service-rebalancing"></a>

À compter du 5 septembre 2025, Amazon ECS permet le rééquilibrage des zones de disponibilité pour tous les services éligibles à cette fonctionnalité. Un service est éligible lorsque la répartition entre les zones de disponibilité est la première stratégie de placement des tâches, ou lorsqu’il n’existe aucune stratégie de placement.

Pour aider vos applications à atteindre une haute disponibilité, nous vous recommandons de configurer vos services multitâches de manière à les exécuter dans plusieurs zones de disponibilité. Pour les services dont la première stratégie de placement est de répartir les zones de disponibilité, AWS faites de votre mieux pour répartir uniformément les tâches de service entre les zones de disponibilité disponibles.

Toutefois, il peut arriver que le nombre de tâches exécutées dans une zone de disponibilité ne soit pas le même que dans les autres zones de disponibilité, par exemple après l’indisponibilité d’une zone de disponibilité. Pour corriger ce déséquilibre, vous pouvez activer la fonctionnalité de rééquilibrage des zones de disponibilité.

Grâce au rééquilibrage des zones de disponibilité, Amazon ECS surveille en permanence la répartition des tâches entre les zones de disponibilité pour chacun de vos services. Quand Amazon ECS détecte une répartition inégale des tâches, il prend automatiquement des mesures pour rééquilibrer la charge de travail entre les zones de disponibilité. Cela implique de lancer de nouvelles tâches dans les zones de disponibilité comportant le moins de tâches et de mettre fin à des tâches dans les zones de disponibilité surchargées.

Cette redistribution offre la garantie qu’aucune zone de disponibilité ne deviendra un point de défaillance, ce qui contribue à maintenir la disponibilité globale de vos applications conteneurisées. Le processus de rééquilibrage automatisé élimine la nécessité d’une intervention manuelle, réduisant ainsi le temps de reprise après un événement.

Voici un aperçu du processus de rééquilibrage des zones de disponibilité :

1. Amazon ECS commence à surveiller un service une fois qu’il a atteint l’état stable et examine le nombre de tâches exécutées dans chaque zone de disponibilité.

1. Amazon ECS effectue les opérations suivantes lorsqu’il détecte un déséquilibre dans le nombre de tâches exécutées dans chaque zone de disponibilité :
   + Il envoie un événement de service indiquant que le rééquilibrage de la zone de disponibilité commence.
   + Il lance les tâches dans les zones de disponibilité ayant le plus petit nombre de tâches en cours d’exécution.
   + Il arrête les tâches dans les zones de disponibilité ayant le plus grand nombre de tâches en cours d’exécution.
   + Le planificateur attend que les tâches nouvellement lancées soient `HEALTHY` et `RUNNING` avant d’arrêter les tâches dans la zone de disponibilité surdimensionnée.
   + Il envoie un événement de service avec le résultat du rééquilibrage de la zone de disponibilité.

## Comment Amazon ECS détecte une répartition inégale des tâches
<a name="service-rebalancing-imbalance"></a>

Amazon ECS détermine un déséquilibre dans le nombre de tâches exécutées dans chaque zone de disponibilité en divisant le nombre de tâches souhaité pour le service par le nombre de zones de disponibilité configurées. Si le nombre de tâches souhaité ne se répartit pas de manière égale, Amazon ECS répartit le reste des tâches de manière égale entre les zones de disponibilité configurées. Chaque zone de disponibilité doit avoir au moins une tâche.

Prenons l’exemple d’un service Amazon ECS avec un nombre souhaité de deux tâches configurées pour deux zones de disponibilité. Dans ce scénario, le nombre de tâches souhaité est réparti de manière égale. Une distribution équilibrée serait une tâche par zone de disponibilité. S’il y a deux tâches dans la zone de disponibilité 1 et aucune tâche dans la zone de disponibilité 2, Amazon ECS initie le rééquilibrage en démarrant une tâche dans la zone de disponibilité 2 avant d’arrêter une tâche dans la zone de disponibilité 1.

À présent, imaginez un service Amazon ECS avec un nombre souhaité de trois tâches configurées pour deux zones de disponibilité. Dans ce scénario, le nombre de tâches souhaité ne se divise pas de manière égale. Une distribution équilibrée comporterait une tâche dans la zone de disponibilité 1 et deux tâches dans la zone de disponibilité 2, car chaque zone de disponibilité comporte au moins une tâche et le reste de la tâche est placée dans la zone de disponibilité 2.

Prenons l’exemple d’un service Amazon ECS dont le nombre souhaité de cinq tâches est configuré pour trois zones de disponibilité. Dans ce scénario, le nombre de tâches souhaité ne se divise pas de manière égale. Une distribution équilibrée comporterait une tâche dans la zone de disponibilité 1 et deux tâches dans chacune des zones de disponibilité 2 et 3. Après avoir pris en compte chaque zone de disponibilité ayant une tâche chacune, les deux tâches restantes sont réparties de manière égale entre les zones de disponibilité.

## Considérations relatives à la configuration du rééquilibrage des zones de disponibilité
<a name="service-rebalancing-configurations"></a>

Tenez compte des éléments suivants lorsque vous souhaitez configurer le rééquilibrage des zones de disponibilité :
+ Le rééquilibrage des zones de disponibilité prend en charge les fournisseurs de capacité Fargate et EC2, et est pris en charge sur les instances gérées Amazon ECS. Pour Fargate, Amazon ECS redistribuera automatiquement les tâches entre les zones de disponibilité disponibles afin de maintenir l’équilibre. Pour les fournisseurs de capacité EC2, Amazon ECS rééquilibre au mieux les tâches entre les instances de conteneur existantes, en respectant les stratégies et les contraintes de placement que vous avez définies. Toutefois, Amazon ECS ne peut pas lancer de nouvelles instances dans les zones de disponibilité sous-utilisées dans le cadre du processus de rééquilibrage, ce qui limite le rééquilibrage aux instances de conteneur existantes.
+ Le rééquilibrage des zones de disponibilité fonctionne dans les configurations suivantes :
  + Services utilisant la stratégie `Replica`
  + Services qui spécifient la répartition de la zone de disponibilité comme première stratégie de placement des tâches, ou qui ne spécifient pas de stratégie de placement.
+ Vous ne pouvez pas utiliser le rééquilibrage des zones de disponibilité avec des services répondant à l’un des critères suivants :
  + Utilise la stratégie `Daemon`
  + Utilise le type de lancement `EXTERNAL` (ECS Anywhere)
  + Utilise 100 % pour la valeur `maximumPercent`
  + Utilise un Classic Load Balancer
  + Utilise `attribute:ecs.availability-zone` comme contrainte de placement des tâches

## Stratégies de placement et contraintes de placement avec rééquilibrage des zones de disponibilité
<a name="service-rebalancing-placement-constraints"></a>

Les stratégies de placement déterminent la manière dont Amazon ECS sélectionne les instances de conteneur et les zones de disponibilité pour la fin du placement des tâches. Les contraintes de placement des tâches sont des règles qui déterminent si une tâche est autorisée à s’exécuter sur une instance de conteneur spécifique.

Pour EC2, vous pouvez utiliser des stratégies et des contraintes de placement en même temps que le rééquilibrage des zones de disponibilité. Cependant, pour que le rééquilibrage de la zone de disponibilité fonctionne, la stratégie de placement par répartition des zones de disponibilité doit être la première stratégie spécifiée.

Le rééquilibrage des zones de disponibilité est compatible avec différentes combinaisons de stratégies de placement. Par exemple, vous pouvez créer une stratégie qui distribue d’abord les tâches de manière uniforme entre les zones de disponibilité, puis regroupe les tâches par bin packing en fonction de la mémoire disponible dans chaque zone de disponibilité. Dans ce cas, le rééquilibrage de la répartition des zones de disponibilité fonctionne, car la stratégie de répartition des zones de disponibilité est spécifiée en premier.

Il est important de noter que le rééquilibrage de la zone de disponibilité ne fonctionnera pas si la première stratégie dans le tableau des stratégies de placement n’est pas du type « Répartition des zones de disponibilité ». Cette exigence garantit que l’objectif principal de la distribution des tâches est de maintenir l’équilibre entre les zones de disponibilité, ce qui est crucial pour une haute disponibilité.

Pour plus d’informations sur les stratégies et contraintes de placement des tâches, consultez la section [Comment Amazon ECS place les tâches sur des instances de conteneur](task-placement.md).

Les stratégies et contraintes de placement des tâches ne sont pas prises en charge pour les tâches utilisant Fargate. Fargate fera de son mieux pour répartir les tâches entre les zones de disponibilité accessibles. Si le fournisseur de capacité inclut à la fois Fargate et Fargate Spot, le comportement de répartition est indépendant pour chaque fournisseur de capacité.

La stratégie suivante répartit les tâches de manière uniforme entre les zones de disponibilité, puis regroupe les tâches par bin packing en fonction de la mémoire disponible dans chaque zone de disponibilité. Le rééquilibrage des zones de disponibilité est compatible avec le service, car c’est la stratégie `spread` qui prime.

```
"placementStrategy": [
    {
        "field": "attribute:ecs.availability-zone",
        "type": "spread"
    },
    {
        "field": "memory",
        "type": "binpack"
    }
]
```

## Activation du rééquilibrage des zones de disponibilité
<a name="service-rebalancing-use"></a>

Vous devez activer le rééquilibrage des zones de disponibilité pour les services nouveaux et existants.

Vous pouvez activer et désactiver le rééquilibrage des zones de disponibilité à l'aide de la console APIs, AWS CLI, et CloudFormation.

Le comportement par défaut de `AvailabilityZoneRebalancing` diffère entre les requêtes de création et de mise à jour :
+ Pour créer des requêtes de service, lorsqu’aucune valeur n’est spécifiée pour `AvailabilityZoneRebalancing`, Amazon ECS définit la valeur par défaut sur `ENABLED`.
+ Pour les requêtes de service de mise à jour, lorsqu’aucune valeur n’est spécifiée pour `AvailabilityZoneRebalancing`, Amazon ECS utilise par défaut la valeur de `AvailabilityZoneRebalancing` du service existant. Si le service n’a jamais défini de valeur pour `AvailabilityZoneRebalancing`, Amazon ECS la traite comme `DISABLED`.


| Type de service | API | Console | INTERFACE DE LIGNE DE COMMANDE (CLI) | 
| --- | --- | --- | --- | 
| Existing | [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html) |  [Mettre à jour un service Amazon ECS](update-service-console-v2.md)  | [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) | 
| Nouveau | [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateService.html) |  [Création d’un déploiement de mise à jour propagée Amazon ECS](create-service-console-v2.md)  | [create-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html) | 

L’exemple suivant montre comment activer le rééquilibrage des services lors de la création d’un service :

```
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-task-definition:1 \
    --desired-count 6 \
    --availability-zone-rebalancing ENABLED
```

# Suivi du rééquilibrage des zones de disponibilité Amazon ECS
<a name="track-service-rebalancing"></a>

Vous pouvez vérifier si le rééquilibrage des zones de disponibilité est activé pour un service dans la console ou en appelant `describe-services`. L’exemple suivant peut être utilisé pour consulter le statut à l’aide de la CLI.

La réponse sera soit `ENABLED`, soit `DISABLED`.

```
aws ecs describe-services \
    --services service-name \
    --cluster cluster-name \
    --query services[0].availabilityZoneRebalancing
```

## Événements de service
<a name="service-info-events"></a>

Amazon ECS envoie des événements d’action de service pour vous aider à comprendre le cycle de vie du rééquilibrage des zones de disponibilité. 


| Événement | Scénario | Type | En savoir plus | 
| --- | --- | --- | --- | 
| SERVICE\$1REBALANCING\$1STARTED | Amazon ECS lance une opération de rééquilibrage des zones de disponibilité | INFO | [service (*service-name*) n'est pas en équilibre avec *number-tasks* les tâches *number-tasks* dans *Availability Zone 1**Availability Zone 2*, dans et *number-tasks* dans*Availability Zone 3*. Rééquilibrage entre zones de disponibilité en cours.](service-rebalancing-event-messages-list.md#service-rebalancing-started) | 
| SERVICE\$1REBALANCING\$1COMPLETED | L’opération de rééquilibrage des zones de disponibilité est terminée |  INFO | [service (*service-name*) est équilibré en AZ avec *number-tasks* les tâches dans*Availability Zone 1*, *number-tasks* les tâches dans *Availability Zone 2* et *number-tasks* les tâches dans*Availability Zone 3*.](service-rebalancing-event-messages-list.md#service-rebalancing-completed) | 
| TASKS\$1STARTED | Amazon ECS démarre avec succès les tâches dans le cadre de l’opération de rééquilibrage de la zone de disponibilité | INFO | [*service-name*a commencé *number-tasks* des tâches dans *Availability Zone* AZ Rebalance :*task-ids*.](service-rebalancing-event-messages-list.md#service-rebalancing-tasks-started) | 
| TASKS\$1STOPPED | Amazon ECS arrête avec succès les tâches dans le cadre de l’opération de rééquilibrage de la zone de disponibilité | INFO | [*service-name*a cessé *number-tasks* d'exécuter des tâches en *Availability Zone* raison du rééquilibrage AZ :*task-id*.](service-rebalancing-event-messages-list.md#service-rebalancing-tasks-stopped) | 
| SERVICE\$1TASK\$1PLACEMENT\$1FAILURE | Amazon ECS n’a pas pu démarrer une tâche dans le cadre de l’opération de rééquilibrage de la zone de disponibilité | ERROR | Pour EC2, consultez la section [service (*service-name*) n'est pas en mesure de placer une tâche *Availability Zone* car aucune instance de conteneur ne répond à toutes ses exigences.](service-rebalancing-event-messages-list.md#service-rebalancing-placement-failure-instance) Pour Fargate, consultez la section [service (*service-name*) ne parvient pas à placer une tâche dedans*Availability Zone*.](service-rebalancing-event-messages-list.md#service-rebalancing-placement-failure) | 
| TASKSET\$1SCALE\$1IN\$1FAILURE\$1BY\$1TASK\$1PROTECTION | L’opération de rééquilibrage de la zone de disponibilité est bloquée, car la protection des tâches est utilisée. | INFO | [service (*service-name*) n'a pas pu effectuer AZ Rebalance car il n'*task-set-name*a pas pu être intégré en raison de*reason*.](service-rebalancing-event-messages-list.md#service-rebalancing-task-protection-failure) | 
| SERVICE\$1REBALANCING\$1STOPPED | L’opération de rééquilibrage des zones de disponibilité s’est arrêtée. Amazon ECS envoie des événements supplémentaires qui fournissent davantage d’informations. | INFO | [service (*service-name*) a arrêté AZ Rebalancing.](service-rebalancing-event-messages-list.md#service-rebalancing-operation-stopped) | 

## Événements de modification de l'état de la tâche
<a name="task-state-change-events"></a>

Amazon ECS envoie un événement de changement d’état de tâche (`START`) pour chaque tâche qu’il démarre dans le cadre du processus de rééquilibrage.

Amazon ECS envoie un événement de changement d’état de tâche (`STOPPED`) pour chaque tâche qu’il arrête dans le cadre du processus de rééquilibrage. La raison est définie sur `Availability-zone rebalancing initiated by (deployment ecs-svc/deployment-id)`.

Pour plus d’informations sur les événements, consultez la section [Événements de changement d’état d’une tâche Amazon ECS](ecs_task_events.md).

## Résolution des problèmes de rééquilibrage des services
<a name="service-rebalancing-troubleshooting"></a>

Si vous rencontrez des problèmes lors du rééquilibrage des services, envisagez les étapes de résolution des problèmes suivantes :

Le rééquilibrage ne démarre pas  
Vérifiez que :  
+ le rééquilibrage des services est activé pour votre service ;
+ votre service utilise une configuration prise en charge (consultez la section [Considérations relatives à la configuration du rééquilibrage des zones de disponibilité](#service-rebalancing-configurations)) ;
+ votre service a atteint un état stable.

Échecs de placement des tâches pendant le rééquilibrage  
Si vous voyez des événements `SERVICE_TASK_PLACEMENT_FAILURE` :  
+ Pour EC2 : vérifiez si des instances de conteneur sont disponibles dans la zone de disponibilité cible.
+ Pour Fargate : vérifiez si des contraintes de ressources ou des quotas de service limitent le placement des tâches.
+ Passez en revue vos contraintes de placement des tâches pour vous assurer qu’elles n’empêchent pas une bonne répartition des tâches.

Le rééquilibrage s’arrête de façon inattendue  
Si vous voyez des événements `SERVICE_REBALANCING_STOPPED` :  
+ Vérifiez s’il existe une protection des tâches susceptible de bloquer l’opération.
+ Recherchez les déploiements de service simultanés susceptibles d’interrompre le rééquilibrage.
+ Consultez les événements de service pour obtenir des informations supplémentaires sur les raisons pour lesquelles le rééquilibrage a été arrêté.

## Pratiques exemplaires en matière de rééquilibrage des services
<a name="service-rebalancing-best-practices"></a>

Suivez ces pratiques exemplaires pour tirer le meilleur parti du rééquilibrage des services :
+ **Surveillez les opérations de rééquilibrage** - Configurez des CloudWatch alarmes pour surveiller les événements de service liés au rééquilibrage afin d'identifier rapidement tout problème.
+ **Considérer l’impact sur les performances** : sachez que les opérations de rééquilibrage peuvent augmenter temporairement l’utilisation des ressources lorsque de nouvelles tâches sont lancées avant que les anciennes ne soient arrêtées.
+ **Utiliser la protection des tâches de manière stratégique** : si vous avez des tâches critiques qui ne doivent pas être résiliées pendant le rééquilibrage, envisagez d’utiliser la protection des tâches.
+ **Planifier la capacité EC2** : pour EC2, assurez-vous de disposer de suffisamment d’instances de conteneurs dans toutes les zones de disponibilité pour permettre un rééquilibrage efficace.
+ **Tester le comportement du rééquilibrage** : avant de vous fier au rééquilibrage en production, testez le comportement de vos services lors des opérations de rééquilibrage dans un environnement hors production.

# Utilisation de l’équilibrage de charge pour répartir le trafic des services Amazon ECS
<a name="service-load-balancing"></a>

En option, votre service peut être configuré pour utiliser Elastic Load Balancing afin de répartir le trafic de manière uniforme entre les tâches de votre service.

**Note**  
Lorsque vous utilisez des ensembles de tâches, toutes les tâches de l'ensemble doivent être configurées pour utiliser Elastic Load Balancing ou pour ne pas utiliser Elastic Load Balancing. 

Les services Amazon ECS hébergés sur ce site AWS Fargate prennent en charge les équilibreurs de charge d'application, les équilibreurs de charge réseau et les équilibreurs de charge de passerelle. Utilisez le tableau suivant pour savoir quel type d’équilibreur de charge utiliser.


| Type d’équilibreur de charge | À utiliser dans les cas suivants | 
| --- | --- | 
|  Application Load Balancer  | Trafic routier HTTP/HTTPS (ou couche 7).Les équilibreurs de charge Application Load Balancer offrent plusieurs fonctions qui les rendent intéressants à utiliser avec les services Amazon ECS service : [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/service-load-balancing.html) | 
| Network Load Balancer | Acheminer le trafic TCP ou UDP (ou couche 4). | 
| Passerelle équilibreur de charge | Acheminer le trafic TCP ou UDP (ou couche 4). Utiliser des appareils virtuels, tels que des pare-feu, des systèmes de détection et de prévention des intrusions et des systèmes d’inspection approfondie des paquets. | 

Nous vous recommandons d’utiliser des Application Load Balancer pour vos services Amazon ECS afin de pouvoir profiter des fonctions les plus récentes, sauf si votre service nécessite une fonctionnalité qui n’est fournie que par les Network Load Balancer ou les Gateway Load Balancer. Pour plus d'informations sur Elastic Load Balancing et les différences entre les types d'équilibreurs de charge, consultez le [Guide de l'utilisateur Elastic Load Balancing](https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/).

Avec votre équilibreur de charge, vous payez uniquement en fonction de votre utilisation. Pour plus d'informations, veuillez consultez [Tarification Elastic Load Balancing](https://aws.amazon.com/elasticloadbalancing/pricing/). 

# Optimisation des paramètres de surveillance de l’état de l’équilibreur de charge pour Amazon ECS
<a name="load-balancer-healthcheck"></a>

Les équilibreurs de charge n’acheminent les requêtes que vers les cibles saines dans les zones de disponibilité de l’équilibreur de charge. Chaque cible est enregistrée dans un groupe cible. Chaque nœud d’équilibreur de charge vérifie l’état de chaque cible en utilisant les paramètres de surveillance de l’état de chaque groupe cible auprès duquel la cible est enregistrée. Une fois que votre cible est enregistrée, elle doit passer avec succès une seule surveillance de l’état pour être considérée comme saine. Amazon ECS surveille l’équilibreur de charge. L’équilibreur de charge envoie régulièrement des surveillances de l’état au conteneur Amazon ECS. L’agent Amazon ECS surveille et attend que l’équilibreur de charge publie un rapport sur l’état du conteneur. Il le fait avant de considérer que le conteneur est sain.

Deux paramètres de surveillance de l’état Elastic Load Balancing affectent la vitesse de déploiement :
+ Intervalle entre les surveillances de l’état : détermine la durée approximative, en secondes, entre les surveillances de l’état d’un conteneur individuel. Par défaut, l’équilibreur de charge vérifie toutes les 30 secondes.

  Ce paramètre est nommé :
  + `HealthCheckIntervalSeconds` dans l’API Elastic Load Balancing
  + **Intervalle** sur la console Amazon EC2
+ Seuil de comptage de l’état sain : détermine le nombre de surveillances de l’état consécutives réussies requises avant de considérer un conteneur défectueux comme sain. Par défaut, l’équilibreur de charge nécessite cinq surveillances de l’état réussies avant de signaler que le conteneur cible est sain.

  Ce paramètre est nommé :
  + `HealthyThresholdCount` dans l’API Elastic Load Balancing
  + **Seuil de l’état sain** sur la console Amazon EC2

**Important :** pour les cibles nouvellement enregistrées, une seule surveillance de l’état réussie suffit pour considérer que la cible est saine, quel que soit le seuil de l’état sain défini. Le seuil de comptage de l’état sain ne s’applique que lorsqu’une cible passe d’un état défectueux à un état sain.

Avec les paramètres par défaut, si une cible devient défectueuse puis se rétablit, le temps total nécessaire pour déterminer l’état d’un conteneur est de 2 minutes et 30 secondes (`30 seconds * 5 = 150 seconds`).

Vous pouvez accélérer le processus de surveillance de l’état si votre service démarre et se stabilise en moins de 10 secondes. Pour accélérer le processus, réduisez l’intervalle entre les surveillances de l’état et le seuil de comptage de l’état sain.
+ `HealthCheckIntervalSeconds` (nom pour l’API Elastic Load Balancing) ou **Interval** (nom pour la console Amazon EC2) : 5
+ `HealthyThresholdCount` (nom pour l’API Elastic Load Balancing) ou **seuil sain** (nom pour la console Amazon EC2) : 2

Avec ce paramètre, le processus de vérification de l’état prend 10 secondes, contre 2 minutes et 30 secondes par défaut.

Pour plus d’informations sur les paramètres de surveillance de l’état Elastic Load Balancing, consultez la section [Surveillance de l’état de vos groupes cibles](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/target-group-health-checks.html) dans le *Guide de l’utilisateur Elastic Load Balancing*.

# Optimisation des paramètres de drainage de la connexion de l’équilibreur de charge pour Amazon ECS
<a name="load-balancer-connection-draining"></a>

Pour permettre l’optimisation, les clients maintiennent une connexion persistante au service de conteneurs. Cela permet aux requêtes ultérieures de ce client de réutiliser la connexion existante. Lorsque vous souhaitez arrêter le trafic vers un conteneur, vous devez en informer l’équilibreur de charge. L’équilibreur de charge vérifie régulièrement si le client a fermé la connexion persistante. Amazon ECS surveille l’équilibreur de charge et attend qu’il indique que la connexion persistante est fermée (la cible est dans un état `UNUSED`).

La durée pendant laquelle l’équilibreur de charge attend pour faire passer la cible à l’état `UNUSED` correspond au délai d’annulation de l’enregistrement. Vous pouvez configurer le paramètre d’équilibreur de charge suivant pour accélérer vos déploiements.
+ `deregistration_delay.timeout_seconds` : 300 (par défaut)

Lorsque vous disposez d’un service dont le temps de réponse est inférieur à une seconde, définissez le paramètre sur la valeur suivante pour que l’équilibreur de charge n’attende que cinq secondes avant de rompre la connexion entre le client et le service principal : 
+ `deregistration_delay.timeout_seconds` : 5 

**Note**  
Ne définissez pas la valeur sur cinq secondes lorsqu’un service comporte des requêtes de longue durée, telles que des téléchargements de fichiers lents ou des connexions de streaming.

## Réactivité à SIGTERM
<a name="sigterm"></a>

Amazon ECS envoie d'abord un signal d'arrêt à la tâche pour indiquer que l'application doit se terminer et s'arrêter. Ce signal peut être défini dans l'image de votre conteneur à l'aide de l'instruction STOPSIGNAL et sera défini par défaut sur SIGTERM. Amazon ECS envoie ensuite un message SIGKILL. Lorsque les applications ignorent le signal SIGTERM, le service Amazon ECS doit attendre pour envoyer le signal SIGKILL afin de terminer le processus. 

La durée pendant laquelle Amazon ECS attend avant d’envoyer le message SIGKILL est déterminée par l’option d’agent Amazon ECS suivante :
+ `ECS_CONTAINER_STOP_TIMEOUT` : 30 (par défaut)

  Pour plus d'informations sur le paramètre de l'agent de conteneur, consultez [Amazon ECS Container Agent](https://github.com/aws/amazon-ecs-agent/blob/master/README.md) on GitHub.

Pour accélérer le délai d’attente, définissez le paramètre de l’agent Amazon ECS sur la valeur suivante :
+ `ECS_CONTAINER_STOP_TIMEOUT` : 2

  Si votre application prend plus d’une seconde, multipliez la valeur par deux et utilisez ce nombre comme valeur.

Dans ce cas, Amazon ECS attend deux secondes que le conteneur s’arrête, puis Amazon ECS envoie un message SIGKILL lorsque l’application ne s’arrête pas.

Vous pouvez également modifier le code de l’application pour intercepter le signal SIGTERM et y réagir. Voici un exemple dans JavaScript : 

```
process.on('SIGTERM', function() { 
  server.close(); 
})
```

Ce code oblige le serveur HTTP à cesser d’écouter les nouvelles requêtes et à finir de répondre aux requêtes en cours. Le processus Node.js se termine alors, car la boucle d’événements n’a plus rien à faire. Cela étant, si le processus ne prend que 500 ms pour terminer ses requêtes en cours de vol, il se termine prématurément sans avoir à attendre la fin du délai d’arrêt et sans recevoir de SIGKILL. 

# Utilisation d’un Application Load Balancer pour Amazon ECS
<a name="alb"></a>

Un équilibreur de charge Application Load Balancer prend des décisions de routage au niveau de la couche d'application (HTTP/HTTPS), prend en charge le routage basé sur le chemin et peut acheminer les demandes vers un ou plusieurs ports de chaque instance de conteneur de votre cluster. Les équilibreurs de charge Application Load Balancer prennent en charge le mappage de port hôte dynamique. Par exemple, si la définition de conteneur de la tâche spécifie le port 80 pour un port de conteneur NGINX et le port 0 pour le port hôte, le port hôte est choisi dynamiquement à partir de la plage de ports éphémères de l'instance de conteneur (par exemple, 32768 à 61000 sur la dernière AMI optimisée pour Amazon ECS). Au lancement de la tâche, le conteneur NGINX est enregistré auprès de l’Application Load Balancer sous la forme d’une combinaison d’ID d’instance et de port, et le trafic est distribué vers l’ID d’instance et le port correspondant à ce conteneur. Ce mappage dynamique vous permet d'exécuter plusieurs tâches à partir d'un seul service sur la même instance de conteneur. Pour plus d'informations, consultez le [Guide de l'utilisateur pour les équilibreurs de charge Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/).

Pour plus d’informations sur les pratiques exemplaires en matière de définition de paramètres pour accélérer vos déploiements, consultez la section :
+ [Optimisation des paramètres de surveillance de l’état de l’équilibreur de charge pour Amazon ECS](load-balancer-healthcheck.md)
+ [Optimisation des paramètres de drainage de la connexion de l’équilibreur de charge pour Amazon ECS](load-balancer-connection-draining.md)

Tenez compte des éléments suivants lorsque vous utilisez des Application Load Balancer avec Amazon ECS :
+ Amazon ECS nécessite le rôle IAM lié au service qui fournit les autorisations nécessaires pour enregistrer et désenregistrer des cibles dans votre équilibreur de charge lors de la création ou de l'arrêt de tâches. Pour de plus amples informations, veuillez consulter [Utilisation des rôles liés à un service pour Amazon ECS](using-service-linked-roles.md).
+ Pour les services dans une configuration IPv6 réservée, vous devez définir le type d'adresse IP du groupe cible de l'Application Load Balancer `dualstack` sur ou. `dualstack-without-public-ipv4`
+ Pour les services avec des tâches utilisant le mode réseau `awsvpc`, lorsque vous créez un groupe cible pour votre service, vous devez choisir `ip` comme type de cible, pas `instance`. Cela est dû au fait que les tâches qui utilisent le mode réseau `awsvpc` sont associées à une interface réseau Elastic et non à une instance Amazon EC2.
+ Si votre service nécessite l'accès à plusieurs ports d'équilibrage de charge, tels que le port 80 et le port 443 pour un HTTP/HTTPS service, vous pouvez configurer deux écouteurs. Un écouteur se charge du protocole HTTPS qui transmet la demande au service et un autre écouteur est responsable de la redirection des demandes HTTP vers le port HTTPS approprié. Pour plus d'informations, consultez la section [Création d'un écouteur pour votre Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-listener.html) dans le *Guide de l'utilisateur pour les Application Load Balancers*.
+ La configuration de sous-réseau de votre équilibreur de charge doit inclure toutes les zones de disponibilité dans lesquels résident vos instances de conteneur.
+ Une fois que vous avez créé un service, la configuration de l'équilibreur de charge ne peut pas être modifiée à partir de la AWS Management Console. Vous pouvez utiliser le AWS Copilot AWS CLI ou le SDK pour modifier la configuration de l'équilibreur de charge uniquement pour le contrôleur de déploiement `ECS` évolutif, et non AWS CodeDeploy pour le bleu/vert ou externe. AWS CloudFormation Lorsque vous ajoutez, mettez à jour ou supprimez une configuration d'équilibreur de charge, Amazon ECS lance un nouveau déploiement avec la configuration mise à jour d'Elastic Load Balancing. Cela entraîne l'enregistrement et le désenregistrement des tâches auprès des équilibreurs de charge. Nous vous recommandons de vérifier cela dans un environnement de test avant de mettre à jour la configuration d'Elastic Load Balancing. Pour plus d'informations sur la manière de modifier la configuration, consultez le [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)manuel *Amazon Elastic Container Service API Reference*. 
+ Si une tâche d’un service ne satisfait pas aux critères de surveillance de l’état de l’équilibreur de charge, la tâche est arrêtée et redémarrée. Ce processus continue jusqu'à ce que votre service atteigne le nombre souhaité de tâches en cours d'exécution.
+ Si vous rencontrez des problèmes avec l'équilibreur de charge utilisé par vos services, consultez [Résolution des problèmes liés aux équilibreurs de charge des services dans Amazon ECS](troubleshoot-service-load-balancers.md).
+ Lorsque vous utilisez le type de cible `instance`, vos tâches et votre équilibreur de charge doivent se trouver dans le même VPC. Lors de l’utilisation du type de cible `ip`, la connectivité entre VPC est prise en charge.
+ Utilisez un groupe cible unique pour chaque service. 

  L’utilisation du même groupe cible pour plusieurs services peut entraîner des problèmes lors des déploiements de service.
+ Vous devez spécifier les groupes cibles associés à un Application Load Balancer.

Pour plus d’informations sur la création d’un Application Load Balancer, consultez la section [Création d’un Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/create-application-load-balancer.html) dans *Application Load Balancer*.

# Utilisation d’un Network Load Balancer pour Amazon ECS
<a name="nlb"></a>

Un Network Load Balancer prend des décisions de routage au niveau de la couche de transport (TCP/SSL). Il est capable de traiter des millions de demandes par seconde. Lorsque l'équilibreur de charge reçoit une connexion, il sélectionne une cible depuis le groupe cible pour la règle par défaut à l'aide d'un algorithme de routage du hachage de flux. Il tente d'ouvrir une connexion TCP à la cible sélectionnée sur le port spécifié dans la configuration de l'écouteur. Il transmet la demande sans modifier les en-têtes. Les équilibreurs de charge Network Load Balancer prennent en charge le mappage de port hôte dynamique. Par exemple, si la définition de conteneur de la tâche spécifie le port 80 pour un port de conteneur NGINX et le port 0 pour le port hôte, le port hôte est choisi dynamiquement à partir de la plage de ports éphémères de l'instance de conteneur (par exemple, 32768 à 61000 sur la dernière AMI optimisée pour Amazon ECS). Lorsque la tâche est lancée, le conteneur NGINX est enregistré dans l'équilibreur de charge Network Load Balancer en tant que combinaison d'ID d'instance et de port, et le trafic est réparti vers l'ID d'instance et le port correspondant à ce conteneur. Ce mappage dynamique vous permet d'exécuter plusieurs tâches à partir d'un seul service sur la même instance de conteneur. Pour plus d'informations, veuillez consulter le [Guide de l'utilisateur pour les Network Load Balancers](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/).

Pour plus d’informations sur les pratiques exemplaires en matière de définition de paramètres pour accélérer vos déploiements, consultez la section :
+ [Optimisation des paramètres de surveillance de l’état de l’équilibreur de charge pour Amazon ECS](load-balancer-healthcheck.md)
+ [Optimisation des paramètres de drainage de la connexion de l’équilibreur de charge pour Amazon ECS](load-balancer-connection-draining.md)

Tenez compte des informations suivantes lors de l’utilisation d’un Network Load Balancer avec Amazon ECS :
+ Amazon ECS nécessite le rôle IAM lié au service qui fournit les autorisations nécessaires pour enregistrer et désenregistrer des cibles dans votre équilibreur de charge lors de la création ou de l'arrêt de tâches. Pour de plus amples informations, veuillez consulter [Utilisation des rôles liés à un service pour Amazon ECS](using-service-linked-roles.md).
+ Vous ne pouvez pas attacher plus de cinq groupes cibles à un service.
+ Pour les services dans une configuration IPv6 uniquement, vous devez définir le type d'adresse IP du groupe cible du Network Load `dualstack` Balancer sur.
+ Pour les services avec des tâches utilisant le mode réseau `awsvpc`, lorsque vous créez un groupe cible pour votre service, vous devez choisir `ip` comme type de cible, pas `instance`. Cela est dû au fait que les tâches qui utilisent le mode réseau `awsvpc` sont associées à une interface réseau Elastic et non à une instance Amazon EC2.
+ La configuration de sous-réseau de votre équilibreur de charge doit inclure toutes les zones de disponibilité dans lesquels résident vos instances de conteneur.
+ Une fois que vous avez créé un service, la configuration de l'équilibreur de charge ne peut pas être modifiée à partir de la AWS Management Console. Vous pouvez utiliser le AWS Copilot AWS CLI ou le SDK pour modifier la configuration de l'équilibreur de charge uniquement pour le contrôleur de déploiement `ECS` évolutif, et non AWS CodeDeploy pour le bleu/vert ou externe. AWS CloudFormation Lorsque vous ajoutez, mettez à jour ou supprimez une configuration d'équilibreur de charge, Amazon ECS lance un nouveau déploiement avec la configuration mise à jour d'Elastic Load Balancing. Cela entraîne l'enregistrement et le désenregistrement des tâches auprès des équilibreurs de charge. Nous vous recommandons de vérifier cela dans un environnement de test avant de mettre à jour la configuration d'Elastic Load Balancing. Pour plus d'informations sur la manière de modifier la configuration, consultez le [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)manuel *Amazon Elastic Container Service API Reference*. 
+ Si une tâche d’un service ne satisfait pas aux critères de surveillance de l’état de l’équilibreur de charge, la tâche est arrêtée et redémarrée. Ce processus continue jusqu'à ce que votre service atteigne le nombre souhaité de tâches en cours d'exécution.
+ Lorsque vous utilisez un Gateway Load Balancer configuré avec des adresses IP comme cibles et la préservation de l’adresse IP du client désactivée, les requêtes sont considérées comme provenant de l’adresse IP privée du Gateway Load Balancer. Cela signifie que les services derrière un Gateway Load Balancer sont effectivement ouverts au monde dès que vous autorisez les requêtes entrantes et les surveillances de l’état dans le groupe de sécurité de la cible.
+ Pour les tâches Fargate, vous devez utiliser la version de plateforme `1.4.0` (Linux) ou `1.0.0` (Windows).
+ Si vous rencontrez des problèmes avec l'équilibreur de charge utilisé par vos services, consultez [Résolution des problèmes liés aux équilibreurs de charge des services dans Amazon ECS](troubleshoot-service-load-balancers.md).
+ Lorsque vous utilisez le type de cible `instance`, vos tâches et votre équilibreur de charge doivent se trouver dans le même VPC. Lors de l’utilisation du type de cible `ip`, la connectivité entre VPC est prise en charge.
+ La préservation des adresses IP client du Network Load Balancer est compatible avec les cibles Fargate.
+ Utilisez un groupe cible unique pour chaque service. 

  L’utilisation du même groupe cible pour plusieurs services peut entraîner des problèmes lors des déploiements de service.
+ Vous devez spécifier les groupes cibles associés à un Network Load Balancer.

Pour plus d’informations sur la création d’un Network Load Balancer, consultez la section [Création d’un Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html) dans *Network Load Balancer*.

**Important**  
Si la définition de tâche de votre service utilise le mode réseau `awsvpc` (ce qui est requis pour Fargate), vous devez choisir le type de cible `ip`, et non `instance`. Cela est dû au fait que les tâches qui utilisent le mode réseau `awsvpc` sont associées à une interface réseau Elastic et non à une instance Amazon EC2.   
Vous ne pouvez pas enregistrer des instances par ID d'instance si elles ont les types d'instance suivants : C1 CC1 CC2, CG1, CG2, CR1,, G1, G2, HI1, M1 HS1, M2, M3 et T1. Vous pouvez enregistrer les instances de ces types par adresse IP. 

# Utilisation d’un Gateway Load Balancer pour Amazon ECS
<a name="glb"></a>

Les équilibreurs Gateway Load Balancer agissent au niveau de la troisième couche du modèle OSI Open Systems Interconnection (OSI), la couche réseau. Ils écoutent tous les paquets IP sur tous les ports et transfèrent le trafic vers le groupe cible spécifié dans la règle d'écoute. Il maintient la fidélité des flux à une appliance cible spécifique en utilisant 5 tuples (pour les TCP/UDP flux) ou 3 tuples (pour les flux non TCP/UDP). Par exemple, si la définition de conteneur de la tâche spécifie le port 80 pour un port de conteneur NGINX et le port 0 pour le port hôte, le port hôte est choisi dynamiquement à partir de la plage de ports éphémères de l'instance de conteneur (par exemple, 32768 à 61000 sur la dernière AMI optimisée pour Amazon ECS). Au lancement de la tâche, le conteneur NGINX est enregistré auprès du Gateway Load Balancer sous la forme d’une combinaison d’ID d’instance et de port, et le trafic est distribué vers l’ID d’instance et le port correspondant à ce conteneur. Ce mappage dynamique vous permet d'exécuter plusieurs tâches à partir d'un seul service sur la même instance de conteneur. Pour plus d’informations, consultez la section [Qu’est-ce qu’un Gateway Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/introduction.html) dans *Gateway Load Balancer*.

Pour plus d’informations sur les pratiques exemplaires en matière de définition de paramètres pour accélérer vos déploiements, consultez la section :
+ [Optimisation des paramètres de surveillance de l’état de l’équilibreur de charge pour Amazon ECS](load-balancer-healthcheck.md)
+ [Optimisation des paramètres de drainage de la connexion de l’équilibreur de charge pour Amazon ECS](load-balancer-connection-draining.md)

Tenez compte des informations suivantes lors de l’utilisation de Gateway Load Balancer avec Amazon ECS :
+ Amazon ECS nécessite le rôle IAM lié au service qui fournit les autorisations nécessaires pour enregistrer et désenregistrer des cibles dans votre équilibreur de charge lors de la création ou de l'arrêt de tâches. Pour de plus amples informations, veuillez consulter [Utilisation des rôles liés à un service pour Amazon ECS](using-service-linked-roles.md).
+ Pour les services dans une configuration IPv6 réservée, vous devez définir le type d'adresse IP du groupe cible du Gateway Load `dualstack` Balancer sur.
+ Pour les services dont les tâches utilisent un mode réseau autre que `awsvpc`, les Gateway Load Balancer ne sont pas pris en charge.
+ La configuration de sous-réseau de votre équilibreur de charge doit inclure toutes les zones de disponibilité dans lesquels résident vos instances de conteneur.
+ Une fois que vous avez créé un service, la configuration de l'équilibreur de charge ne peut pas être modifiée à partir de la AWS Management Console. Vous pouvez utiliser le AWS Copilot AWS CLI ou le SDK pour modifier la configuration de l'équilibreur de charge uniquement pour le contrôleur de déploiement `ECS` évolutif, et non AWS CodeDeploy pour le bleu/vert ou externe. AWS CloudFormation Lorsque vous ajoutez, mettez à jour ou supprimez une configuration d'équilibreur de charge, Amazon ECS lance un nouveau déploiement avec la configuration mise à jour d'Elastic Load Balancing. Cela entraîne l'enregistrement et le désenregistrement des tâches auprès des équilibreurs de charge. Nous vous recommandons de vérifier cela dans un environnement de test avant de mettre à jour la configuration d'Elastic Load Balancing. Pour plus d'informations sur la manière de modifier la configuration, consultez le [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)manuel *Amazon Elastic Container Service API Reference*. 
+ Si une tâche d’un service ne satisfait pas aux critères de surveillance de l’état de l’équilibreur de charge, la tâche est arrêtée et redémarrée. Ce processus continue jusqu'à ce que votre service atteigne le nombre souhaité de tâches en cours d'exécution.
+ Lorsque vous utilisez un Gateway Load Balancer configuré avec des adresses IP comme cibles, les requêtes sont considérées comme provenant de l’adresse IP privée du Gateway Load Balancer. Cela signifie que les services derrière un Gateway Load Balancer sont effectivement ouverts au monde dès que vous autorisez les requêtes entrantes et les surveillances de l’état dans le groupe de sécurité de la cible.
+ Pour les tâches Fargate, vous devez utiliser la version de plateforme `1.4.0` (Linux) ou `1.0.0` (Windows).
+ Si vous rencontrez des problèmes avec l'équilibreur de charge utilisé par vos services, consultez [Résolution des problèmes liés aux équilibreurs de charge des services dans Amazon ECS](troubleshoot-service-load-balancers.md).
+ Lorsque vous utilisez le type de cible `instance`, vos tâches et votre équilibreur de charge doivent se trouver dans le même VPC. Lors de l’utilisation du type de cible `ip`, la connectivité entre VPC est prise en charge.
+ Utilisez un groupe cible unique pour chaque service. 

  L’utilisation du même groupe cible pour plusieurs services peut entraîner des problèmes lors des déploiements de service.
+ Vous devez spécifier les groupes cibles associés à un Gateway Load Balancer.

Pour plus d’informations sur la création d’un Gateway Load Balancer, consultez la section [Démarrage avec les Gateway Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/gateway/getting-started.html) dans *Gateway Load Balancer*.

**Important**  
Si la définition de tâche de votre service utilise le mode réseau `awsvpc` (ce qui est requis pour Fargate), vous devez choisir le type de cible `ip`, et non `instance`. Cela est dû au fait que les tâches qui utilisent le mode réseau `awsvpc` sont associées à une interface réseau Elastic et non à une instance Amazon EC2.   
Vous ne pouvez pas enregistrer des instances par ID d'instance si elles ont les types d'instance suivants : C1 CC1 CC2, CG1, CG2, CR1,, G1, G2, HI1, M1 HS1, M2, M3 et T1. Vous pouvez enregistrer les instances de ces types par adresse IP. 

# Enregistrement de plusieurs groupes cibles auprès d’un service Amazon ECS
<a name="register-multiple-targetgroups"></a>

Votre service Amazon ECS service peut desservir le trafic provenant de plusieurs équilibreurs de charge et exposer plusieurs ports à charge équilibrée en spécifiant plusieurs groupes cibles dans une définition de service.

Pour créer un service spécifiant plusieurs groupes cibles, vous devez créer le service à l'aide de l'API Amazon ECS, du SDK ou d'un CloudFormation modèle. AWS CLI Une fois que le service est créé, vous pouvez afficher le service et les groupes cibles enregistrés auprès de celui-ci avec la AWS Management Console. Vous devez utiliser `[UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)` pour modifier la configuration de l'équilibreur de charge d'un service existant.

Plusieurs groupes cibles peuvent être spécifiés dans une définition de service à l'aide du format suivant. Pour obtenir la syntaxe complète d'une définition de service, consultez [Modèle de définition de service](sd-template.md).

```
"loadBalancers":[
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456",
      "containerName":"container_name",
      "containerPort":container_port
   },
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321",
      "containerName":"container_name",
      "containerPort":container_port
   }
]
```

## Considérations
<a name="multiple-targetgroups-considerations"></a>

Les informations suivantes doivent être prises en compte lorsque vous spécifiez plusieurs groupes cibles dans une définition de service.
+ Pour les services qui utilisent un équilibreur Application Load Balancer ou un Network Load Balancer, vous ne pouvez pas attacher plus de cinq groupes cibles à un service.
+ La spécification de plusieurs groupes cibles dans une définition de service n'est prise en charge que dans les conditions suivantes :
  + Le service doit utiliser un équilibreur de charge Application Load Balancer ou un Network Load Balancer.
  + Le service doit utiliser le type de contrôleur de déploiement (`ECS`). Il peut s'agir du déploiement native/blue écologique d'Amazon ECS ou du déploiement de mises à jour continues.
+ La spécification de groupes cibles multiples est prise en charge pour des services contenant des tâches qui utilisent à la fois les types de lancement Fargate et EC2.
+ Lors de la création d'un service qui spécifie plusieurs groupes cibles, le rôle lié à un service Amazon ECS service doit être créé. Le rôle est créé en omettant le paramètre `role` dans les demandes d'API, ou la propriété `Role` dans CloudFormation. Pour de plus amples informations, veuillez consulter [Utilisation des rôles liés à un service pour Amazon ECS](using-service-linked-roles.md).

## Exemples de définitions de service
<a name="multiple-targetgroups-examples"></a>

Voici quelques exemples de cas d'utilisation pour spécifier plusieurs groupes cibles dans une définition de service. Pour obtenir la syntaxe complète d'une définition de service, consultez [Modèle de définition de service](sd-template.md).

### Utilisation d’équilibreurs de charge distincts pour le trafic interne et externe
<a name="multiple-targetgroups-example1"></a>

Dans le cas d'utilisation suivant, un service utilise deux équilibreurs de charge distincts, l'un pour le trafic interne et l'autre pour le trafic Internet, pour le même conteneur et port.

```
"loadBalancers":[
   //Internal ELB
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456",
      "containerName":"nginx",
      "containerPort":8080
   },
   //Internet-facing ELB
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321",
      "containerName":"nginx",
      "containerPort":8080
   }
]
```

### Exposition de plusieurs ports à partir du même conteneur
<a name="multiple-targetgroups-example1"></a>

Dans le cas d'utilisation suivant, un service utilise un équilibreur de charge, mais expose plusieurs ports à partir du même conteneur. Par exemple, un conteneur Jenkins expose le port 8080 pour l'interface web Jenkins et le port 50000 pour l'API.

```
"loadBalancers":[
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456",
      "containerName":"jenkins",
      "containerPort":8080
   },
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321",
      "containerName":"jenkins",
      "containerPort":50000
   }
]
```

### Exposition de ports à partir de plusieurs conteneurs
<a name="multiple-targetgroups-example3"></a>

Dans le cas d'utilisation suivant, un service utilise un équilibreur de charge et deux groupes cibles pour exposer les ports de conteneurs distincts.

```
"loadBalancers":[
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456",
      "containerName":"webserver",
      "containerPort":80
   },
   {  
      "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321",
      "containerName":"database",
      "containerPort":3306
   }
]
```

# Mise à l’échelle automatique de votre service Amazon ECS
<a name="service-auto-scaling"></a>

La *mise à l’échelle automatique* est l’aptitude à augmenter ou à diminuer automatiquement le nombre souhaité de tâches dans votre service Amazon ECS. Amazon ECS utilise le service Application Auto Scaling pour fournir cette fonctionnalité. Pour de plus amples informations, veuillez consulter le [Guide de l'utilisateur Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/what-is-application-auto-scaling.html).

Amazon ECS publie des CloudWatch statistiques indiquant l'utilisation moyenne du processeur et de la mémoire de votre service. Pour de plus amples informations, veuillez consulter [Métriques d’utilisation d’un service Amazon ECS](service_utilization.md). Vous pouvez utiliser ces CloudWatch indicateurs, ainsi que d'autres, pour étendre votre service (ajouter des tâches) afin de répondre à une forte demande aux heures de pointe, et pour étendre votre service (exécuter moins de tâches) afin de réduire les coûts pendant les périodes de faible utilisation. 

Amazon ECS Service Auto Scaling prend en charge les types de scalabilité automatique suivants :
+ [Utiliser une métrique cible pour faire évoluer les services Amazon ECS](service-autoscaling-targettracking.md) – Augmente ou réduit le nombre de tâches exécutées par votre service en fonction d'une valeur cible pour une métrique spécifique. Cette option est similaire à la façon dont votre thermostat maintient la température de votre domicile. Vous sélectionnez une température et le thermostat se charge du reste.
+ [Utilisez des incréments prédéfinis basés sur les CloudWatch alarmes pour dimensionner les services Amazon ECS](service-autoscaling-stepscaling.md) – Augmente ou réduit le nombre de tâches exécutées par votre service en fonction d'un ensemble d'ajustements de mise à l'échelle, appelés ajustements d'étape, qui varient en fonction de la valeur du seuil de l'alarme. 
+ [Utilisez des actions planifiées pour faire évoluer les services Amazon ECS](service-autoscaling-schedulescaling.md) : augmente ou réduit le nombre de tâches exécutées par votre service en fonction de la date et de l’heure.
+ [Utilisez des modèles historiques pour faire évoluer les services Amazon ECS grâce à une mise à l'échelle prédictive](predictive-auto-scaling.md) : augmente ou réduit le nombre de tâches exécutées par votre service en fonction de l’analytique des données historiques de charge afin de détecter les tendances quotidiennes ou hebdomadaires dans les flux de trafic. 

   

## Considérations
<a name="auto-scaling-concepts"></a>

Lorsque vous utilisez des stratégies de mise à l'échelle, tenez compte des informations suivantes :
+ Amazon ECS envoie des métriques toutes les 1 minute à CloudWatch. Les métriques ne sont pas disponibles tant que les clusters et les services ne les ont pas envoyées CloudWatch, et vous ne pouvez pas créer d' CloudWatch alarmes pour des métriques qui n'existent pas. 
+ Les stratégies de mise à l'échelle prennent en charge un temps de stabilisation. Il s'agit de la durée, en secondes, à attendre qu'une activité de mise à l'échelle précédente prenne effet. 
  + Pour les événements de montée en puissance, l'intention est de réduire continuellement (mais pas excessivement) la montée en puissance. Une fois que Service Auto Scaling a réussi une montée en puissance à l'aide d'une stratégie de mise à l'échelle, l'application commence à calculer le temps de stabilisation. La politique de mise à l'échelle n'augmente pas à nouveau la capacité souhaitée, sauf si une plus grande montée en puissance est lancée ou si le temps de stabilisation est écoulé. Tandis que le temps de stabilisation de la montée en puissance s'applique, la capacité ajoutée par l'activité de mise à l'échelle initiale est calculée dans le cadre de la capacité souhaitée pour la prochaine activité de montée en puissance. 
  + Pour les événements de mise à l'échelle horizontale, l'objectif est de procéder à une mise à l'échelle prudente afin de protéger la disponibilité de votre application, de sorte que les activités de mise à l'échelle horizontale sont bloquées jusqu'à l'expiration du temps de stabilisation. Toutefois, si une autre alarme lance une activité de montée en puissance au cours du temps de stabilisation de la diminution de charge, Application Auto Scaling monte immédiatement en puissance la cible. Dans ce cas, le temps de stabilisation de la mise à l'échelle horizontale s'arrête et ne se termine pas. 
+ Le planificateur de service respecte le nombre souhaité à tout moment mais, tant que vous avez des stratégies de mise à l'échelle et des alarmes actives sur un service, Service Auto Scaling peut modifier un nombre souhaité manuellement défini par vous-même.
+ Si le nombre souhaité d’un service est défini comme inférieur à sa valeur de capacité minimale, et si une alarme déclenche une activité de montée en puissance, Service Auto Scaling augmente le nombre souhaité pour atteindre la valeur de capacité minimale, puis continue cette augmentation le cas échéant, selon la stratégie de mise à l’échelle associée à l’alarme. Toutefois, une activité de mise à l'échelle horizontale ne modifie pas le nombre souhaité, car il est déjà inférieur à la valeur de capacité minimale.
+ Si le nombre souhaité d’un service est défini comme supérieur à sa valeur de capacité maximale, et si une alarme déclenche une activité de mise à l’échelle horizontale, Service Auto Scaling réduit le nombre souhaité pour atteindre la valeur de capacité maximale, puis continue cette réduction le cas échéant, selon la stratégie de mise à l’échelle associée à l’alarme. Toutefois, une activité de montée en puissance ne modifie pas le nombre souhaité, car il est déjà supérieur à la valeur de capacité maximale.
+ Au cours des activités de mise à l'échelle, le nombre réel de tâches en cours d'exécution dans un service correspond à la valeur utilisée par Service Auto Scaling comme point de départ, plutôt qu'au nombre souhaité. C'est ce qui est supposé représenter la capacité de traitement. Cela évite une mise à l'échelle excessive qui ne pourrait pas être satisfaite, lorsqu'il n'y a par exemple pas assez de ressources d'instances de conteneur pour placer les tâches supplémentaires. Si la capacité d'instance de conteneur est disponible ultérieurement, l'activité de mise à l'échelle en suspens peut réussir et d'autres activités de mise à l'échelle peuvent continuer après la période de stabilisation.
+ Si vous souhaitez que votre nombre de tâches soit réduit à zéro lorsqu'il n'y a pas de travail à effectuer, définissez une capacité minimale de 0. Avec les stratégies de suivi des objectifs et d'échelonnement, lorsque la capacité réelle est de 0 et que la métrique indique qu'il y a une requête d'application, Service Auto Scaling attend l'envoi d'un point de données avant d'effectuer la montée en puissance. Dans ce cas, la mise à l'échelle entraîne la quantité la plus petite possible comme point de départ, puis reprend la mise à l'échelle en fonction du nombre réel de tâches en cours d'exécution.
+ Application Auto Scaling désactive les processus évolutifs pendant que les déploiements Amazon ECS sont en cours. Toutefois, pendant les déploiements, les processus de montée en puissance se poursuivent, sauf s'ils sont suspendus. Ce comportement ne s’applique pas aux services Amazon ECS utilisant le contrôleur de déploiement externe. Pour de plus amples informations, veuillez consulter [Service Auto Scaling et déploiements](#service-auto-scaling-deployments).
+ Vous disposez de plusieurs options d'Application Auto Scaling pour les tâches Amazon ECS. Le suivi des cibles est le mode le plus simple à utiliser. Il vous suffit de définir une valeur cible pour une métrique, telle que l'utilisation moyenne du processeur. Ensuite, l'autoscaler gère automatiquement le nombre de tâches nécessaires pour atteindre cette valeur. Grâce à la mise à l'échelle par étapes, vous pouvez réagir plus rapidement aux variations de la demande, car vous définissez les seuils spécifiques pour vos métriques de mise à l'échelle et le nombre de tâches à ajouter ou à supprimer lorsque les seuils sont dépassés. Et surtout, vous pouvez réagir très rapidement aux variations de la demande en réduisant la durée pendant laquelle une alarme de seuil est franchie.

Pour de plus amples informations sur les pratiques exemplaires en matière d’autoscaling de service, consultez la section [Optimisation de l’autoscaling d’un service Amazon ECS](capacity-autoscaling-best-practice.md).

## Service Auto Scaling et déploiements
<a name="service-auto-scaling-deployments"></a>

Application Auto Scaling désactive les processus évolutifs pendant que les déploiements Amazon ECS sont en cours. Toutefois, pendant les déploiements, les processus de montée en puissance se poursuivent, sauf s'ils sont suspendus. Ce comportement ne s’applique pas aux services Amazon ECS utilisant le contrôleur de déploiement externe. Si vous souhaitez suspendre les processus de montée en puissance pendant les déploiements, procédez comme suit.

1. Appelez la [describe-scalable-targets](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scalable-targets.html)commande en spécifiant l'ID de ressource du service associé à la cible évolutive dans Application Auto Scaling (Example :`service/default/sample-webapp`). Enregistrez la sortie. Vous en aurez besoin pour appeler la commande suivante.

1. Appelez la [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)commande en spécifiant l'ID de ressource, l'espace de noms et la dimension évolutive. Spécifiez `true` pour `DynamicScalingInSuspended` et `DynamicScalingOutSuspended`.

1. Une fois le déploiement terminé, vous pouvez appeler la [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)commande pour reprendre le dimensionnement.

Pour de plus amples informations, veuillez consulter [Suspension et reprise de la mise à l'échelle pour Application Auto Scaling](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-suspend-resume-scaling.html).

# Utiliser une métrique cible pour faire évoluer les services Amazon ECS
<a name="service-autoscaling-targettracking"></a>

Grâce aux politiques de suivi des objectifs et d’échelonnement, vous sélectionnez une métrique et définissez une valeur cible. Amazon ECS Service Auto Scaling crée et gère les CloudWatch alarmes qui contrôlent la politique de dimensionnement et calcule l'ajustement de dimensionnement en fonction de la métrique et de la valeur cible. La politique de mise à l'échelle ajoute ou supprime des tâches de service si nécessaire pour maintenir la métrique à la valeur cible spécifiée ou proche de celle-ci. En plus de maintenir la métrique proche de la valeur cible, une politique de suivi des objectifs et d'échelonnement s'ajuste également aux fluctuations de la métrique dues à un modèle de charge fluctuant, et minimise les fluctuations rapides du nombre de tâches exécutées dans votre service.

Les politiques de suivi des cibles éliminent le besoin de définir manuellement les CloudWatch alarmes et les ajustements de dimensionnement. Amazon ECS gère cela automatiquement en fonction de la cible que vous avez définie.

Tenez compte des éléments suivants lorsque vous utilisez des politiques de suivi des cibles :
+ Une politique de suivi des objectifs et d'échelonnement suppose qu'elle doit effectuer une montée en puissance ; lorsque la métrique spécifiée est au-dessus de la valeur cible. Vous ne pouvez pas utiliser une politique de suivi des objectifs et d'échelonnement pour effectuer une montée en puissance lorsque la métrique spécifiée est en dessous de la valeur cible.
+ Une politique de suivi des objectifs et d'échelonnement n'effectue pas de mise à l'échelle lorsque la métrique spécifiée a des données insuffisantes. Elle n'effectue pas de mise à l'échelle horizontale car elle n'interprète pas des données insuffisantes comme une faible utilisation.
+ Vous pouvez constater des écarts entre la valeur cible et les points de données de métrique réels. Ceci est dû au fait que Service Auto Scaling agit toujours avec prudence en effectuant un arrondi vers le haut ou vers le bas quand il détermine la capacité à ajouter ou à enlever. Cela l'empêche d'ajouter une capacité insuffisante ou de retirer trop de capacité. 
+ Pour garantir la disponibilité de l'application, le service augmente proportionnellement aux métriques aussi rapidement que possible, mais diminue plus progressivement.
+ Application Auto Scaling désactive les processus évolutifs pendant que les déploiements Amazon ECS sont en cours. Toutefois, pendant les déploiements, les processus de montée en puissance se poursuivent, sauf s'ils sont suspendus. Ce comportement ne s’applique pas aux services Amazon ECS utilisant le contrôleur de déploiement externe. Pour de plus amples informations, veuillez consulter [Service Auto Scaling et déploiements](service-auto-scaling.md#service-auto-scaling-deployments).
+ Vous pouvez avoir plusieurs politiques de suivi des objectifs et d'échelonnement pour un service Amazon ECS service dans la mesure où chacune d'elles utilise une métrique différente. L'objectif de Service Auto Scaling est de toujours donner la priorité à la disponibilité, afin que son comportement diffère selon que les politiques de suivi des objectifs et d'échelonnement sont prêtes pour une augmentation ou une diminution de taille. Il procèdera à la montée en puissance du service si l'une des politiques Suivi de la cible est prête pour une augmentation de taille, mais la diminuera uniquement si toutes les politiques Suivi de la cible (avec la portion de mise à l'échelle horizontale activée) sont prêtes pour une diminution de taille. 
+ Ne modifiez ni ne supprimez les CloudWatch alarmes gérées par Service Auto Scaling dans le cadre d'une politique de dimensionnement du suivi des cibles. Service Auto Scaling supprime les alarmes automatiquement quand vous supprimez la politique de mise à l'échelle.
+ La `ALBRequestCountPerTarget` métrique pour les politiques de dimensionnement du suivi des cibles n'est pas prise en charge pour le type de blue/green déploiement. 

Pour de plus amples informations sur les politiques de dimensionnement de suivi de cible, veuillez consulter [Politiques de dimensionnement de suivi de cible](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html) dans le *Manuel de l'utilisateur Application Auto Scaling*.

# Création d’une stratégie de mise à l’échelle du suivi de cible pour l’autoscaling d’un service Amazon ECS
<a name="target-tracking-create-policy"></a>

Créez une stratégie de mise à l’échelle du suivi de cible pour qu’Amazon ECS augmente ou diminue automatiquement le nombre de tâches souhaité dans votre service. Le suivi de cible fonctionne à partir d’une valeur métrique cible.

## Console
<a name="target-tracking-create-policy-aws-console"></a>

1. En plus des autorisations IAM standard pour créer et mettre à jour des services, vous avez besoin d’autorisations supplémentaires. Pour de plus amples informations, veuillez consulter [Autorisations IAM requises pour l’autoscaling d’un service Amazon ECS](auto-scaling-IAM.md).

1. Déterminez les métriques à utiliser pour la stratégie. Les mesures suivantes sont disponibles :
   +  **ECSServiceMoyenne CPUUtilization** : utilisation moyenne du processeur que le service doit utiliser. 
   + **ECSServiceAverageMemoryUtilization**— Utilisation moyenne de la mémoire que le service doit utiliser. 
   + **ALBRequestCountPerTarget**— Le nombre moyen de demandes par minute que cette tâche devrait idéalement recevoir.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, puis choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Définir le nombre de tâches**.

1. Sous **Nombre de tâches du service Amazon ECS**, sélectionnez **Utiliser l’autoscaling**.

   La section **Nombre de tâches** s’affiche.

   1. Pour **Nombre minimum de tâches**, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.

   1. Pour **Nombre maximal de tâches**, saisissez la limite supérieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.

   1. Choisissez **Enregistrer**.

      La page des stratégies s’affiche.

1. Choisissez **Créer une stratégie de mise à l’échelle**.

   La page **Créer une stratégie** s’affiche.

1. Pour **Scaling policy type** (Type de politique de mise à l'échelle), choisissez **Target tracking** (Suivi de cible).

1. Pour **Policy name** (Nom de la politique), saisissez un nom de politique.

1. Sous **Type de métrique**, choisissez vos métriques dans la liste des options.

1. Pour **Utilisation cible**, saisissez la valeur cible pour le pourcentage de tâches qu’Amazon ECS doit gérer. L’autoscaling du service augmente horizontalement votre capacité jusqu’à ce que l’utilisation moyenne corresponde à l’objectif, ou jusqu’à ce qu’elle atteigne le nombre maximal de tâches que vous avez spécifié.

1. Sous **Paramètres supplémentaires**, procédez comme suit :

   1. Pour **Temps de stabilisation de la réduction horizontale**, saisissez la durée, en secondes, devant s’écouler entre la fin d’une activité de réduction horizontale et le début d’une autre. 

   1. Pour **Temps de stabilisation de l’augmentation horizontale**, saisissez la durée, en secondes, à attendre avant qu’une activité d’augmentation horizontale précédente ne prenne effet.

   1. Pour ne créer qu’une stratégie d’augmentation horizontale, sélectionnez **Désactiver la réduction horizontale**.

1. Choisissez **Créer une stratégie de mise à l’échelle**.

## AWS CLI
<a name="target-tracking-create-policy-aws-cli"></a>

1. Enregistrez votre service Amazon ECS en tant que cible évolutive à l'aide de la [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)commande.

1. Créez une politique de dimensionnement à l'aide de la [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)commande.

# Utilisez des incréments prédéfinis basés sur les CloudWatch alarmes pour dimensionner les services Amazon ECS
<a name="service-autoscaling-stepscaling"></a>

Les politiques de dimensionnement par étapes vous permettent de créer et de gérer les CloudWatch alarmes qui déclenchent le processus de dimensionnement. Lorsqu'une alarme est violée, Amazon ECS initie la politique de dimensionnement associée à cette alarme. La stratégie de mise à l’échelle par étapes met à l’échelle les tâches à l’aide d’un ensemble d’ajustements, appelés ajustements par étapes. La taille de l’ajustement varie en fonction de l’ampleur du déclenchement de l’alarme. 
+ Si le dépassement dépasse le premier seuil, Amazon ECS applique le premier ajustement par étapes. 
+ Si le déclenchement dépasse le second seuil, Amazon ECS applique le deuxième ajustement par étapes, et ainsi de suite.

Nous vous recommandons fortement d’utiliser une stratégie de mise à l’échelle de suivi cible pour appliquer une mise à l’échelle en fonction de métriques telles que l’utilisation moyenne de l’UC ou le nombre moyen de requêtes par cible. Les métriques qui diminuent lorsque la capacité augmente et augmentent lorsque la capacité diminue peuvent être utilisées pour augmenter ou réduire horizontalement le nombre de tâches proportionnellement en utilisant le suivi de cible. Cela permet de s’assurer qu’Amazon ECS suit de près la courbe de requêtes pour vos applications.

# Création d’une stratégie de mise à l’échelle par étapes pour l’autoscaling de service Amazon ECS
<a name="step-scaling-create-policy"></a>

Créez une stratégie de mise à l’échelle par étapes pour qu’Amazon ECS augmente ou diminue automatiquement le nombre souhaité de tâches dans votre service. La mise à l’échelle d’étape est basée sur un ensemble d’ajustements de mise à l’échelle, appelés ajustements par étapes, qui varient en fonction de l’importance du dépassement du seuil d’alarme. 

## Console
<a name="step-scaling-create-policy-aws-console"></a>

1. En plus des autorisations IAM standard pour créer et mettre à jour des services, vous avez besoin d’autorisations supplémentaires. Pour de plus amples informations, veuillez consulter [Autorisations IAM requises pour l’autoscaling d’un service Amazon ECS](auto-scaling-IAM.md).

1. Déterminez les métriques à utiliser pour la stratégie. Les mesures suivantes sont disponibles :
   +  **ECSServiceMoyenne CPUUtilization** : utilisation moyenne du processeur que le service doit utiliser. 
   + **ECSServiceAverageMemoryUtilization**— Utilisation moyenne de la mémoire que le service doit utiliser. 
   + **ALBRequestCountPerTarget**— Le nombre moyen de demandes par minute que cette tâche devrait idéalement recevoir.

1. Créez les CloudWatch alarmes pour les métriques. Pour plus d'informations, consultez la section [Création CloudWatch d'une alarme basée sur un seuil statique](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html) dans le *guide de CloudWatch l'utilisateur Amazon*.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, puis choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Définir le nombre de tâches**.

1. Sous **Nombre de tâches du service Amazon ECS**, sélectionnez **Utiliser l’autoscaling**.

   La section **Nombre de tâches** s’affiche.

   1. Pour **Nombre minimum de tâches**, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.

   1. Pour **Nombre maximal de tâches**, saisissez la limite supérieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.

   1. Choisissez **Enregistrer**.

      La page des stratégies s’affiche.

1. Choisissez **Créer une stratégie de mise à l’échelle**.

   La page **Créer une stratégie** s’affiche.

1. Pour **Type de stratégie de mise à l’échelle**, choisissez **Mise à l’échelle par étapes**.

1. Configurez les propriétés d’augmentation horizontale. Sous **Étapes pour ajouter des tâches**, procédez comme suit :

   1. Pour **Policy name** (Nom de la politique), saisissez un nom de politique.

   1. Pour le **nom de l'CloudWatch alarme**, choisissez l' CloudWatch alarme.

   1. Pour **Type d’agrégation des métriques**, choisissez comment comparer la métrique sélectionnée au seuil défini.

   1. Pour **Types d’ajustement**, choisissez si l’ajustement est basé sur une modification du nombre de tâches ou sur une modification du pourcentage de tâches.

   1. Dans **Actions à entreprendre**, saisissez les valeurs correspondant à l’action à entreprendre.

      Choisissez **Ajouter une étape** pour ajouter des actions supplémentaires.

1. Configurez les propriétés de réduction horizontale. Sous **Étapes pour supprimer des tâches**, procédez comme suit :

   1. Pour **Policy name** (Nom de la politique), saisissez un nom de politique.

   1. Pour le **nom de l'CloudWatch alarme**, choisissez l' CloudWatchalarme.

   1. Pour **Type d’agrégation des métriques**, choisissez comment comparer la métrique sélectionnée au seuil défini.

   1. Pour **Types d’ajustement**, choisissez si l’ajustement est basé sur une modification du nombre de tâches ou sur une modification du pourcentage de tâches.

   1. Dans **Actions à entreprendre**, saisissez les valeurs correspondant à l’action à entreprendre.

      Choisissez **Ajouter une étape** pour ajouter des actions supplémentaires.

1. Pour **Temps de stabilisation**, saisissez la durée, en secondes, à attendre avant qu’une activité de mise à l’échelle précédente ne prenne effet. Pour une stratégie d’ajout, il s’agit du délai après une activité d’augmentation horizontale pendant lequel la stratégie de mise à l’échelle bloque les activités de réduction horizontale et limite le nombre de tâches pouvant augmenter horizontalement simultanément. Pour une politique de suppression, il s’agit du délai qui doit s’écouler après une activité de réduction horizontale avant qu’une autre activité de réduction puisse commencer. 

1. Choisissez **Créer une stratégie de mise à l’échelle**.

## AWS CLI
<a name="step-scaling-create-policy-aws-cli"></a>

1. Enregistrez votre service Amazon ECS en tant que cible évolutive à l'aide de la [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)commande.

1. Créez une politique de dimensionnement à l'aide de la [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)commande.

# Utilisez des actions planifiées pour faire évoluer les services Amazon ECS
<a name="service-autoscaling-schedulescaling"></a>

Avec la mise à l’échelle planifiée, vous pouvez configurer la mise à l’échelle automatique de votre application en fonction des changements de charge prévisibles en créant des actions planifiées qui augmentent ou diminuent le nombre de tâches à des moments précis. Cette procédure vous permet de mettre votre application à l’échelle de manière proactive afin qu’elle corresponde aux variations de charge prévisibles.

Ces actions de mise à l’échelle planifiées vous permettent d’optimiser les coûts et les performances. Votre application dispose d’un nombre suffisant de tâches pour gérer le pic de trafic en milieu de semaine, mais ne surdimensionne pas le nombre de tâches à d’autres moments. 

Vous pouvez utiliser conjointement la mise à l’échelle planifiée et les stratégies de mise à l’échelle pour bénéficier des avantages des approches proactives et réactives de la mise à l’échelle. Après l’exécution d’une action de mise à l’échelle planifiée, la stratégie de mise à l’échelle peut continuer à prendre des décisions sur l’opportunité de poursuivre la mise à l’échelle du nombre de tâches. Cela vous permet de vous assurer que vous avez un nombre de tâches suffisant pour gérer la charge de votre application. Bien que votre application soit mise à l’échelle pour répondre à la demande, la capacité actuelle doit se situer dans les limites du nombre de tâches minimal et maximal qui a été fixée par votre action planifiée. 

Vous pouvez configurer la mise à l’échelle du calendrier à l’aide de l’ AWS CLI. Pour de plus amples informations sur l’utilisation de la mise à l’échelle planifiée, consultez la section [Mise à l’échelle planifiée](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html) dans le *Guide de l’utilisateur Application Auto Scaling*.

# Création d’une action planifiée pour l’autoscaling d’un service Amazon ECS
<a name="scheduled-action-create-policy"></a>

Créez une action planifiée pour qu’Amazon ECS augmente ou diminue le nombre de tâches exécutées par votre service en fonction de la date et de l’heure. 

## Console
<a name="scheduled-action-policy-aws-console"></a>

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Autoscaling du service**.

   La page d’autoscaling du service s’affiche.

1. Si vous n’avez pas configuré l’autoscaling du service, sélectionnez **Définir le nombre de tâches**.

   La section **Nombre de tâches du service Amazon ECS** s’affiche.

   Sous **Nombre de tâches du service Amazon ECS**, choisissez **Utiliser l’autoscaling du service pour ajuster le nombre de tâches souhaité pour votre service**.

   La section **Nombre de tâches** s’affiche.

   1. Pour **Nombre minimum de tâches**, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.

   1. Pour **Nombre maximal de tâches**, saisissez la limite supérieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.

   1. Choisissez **Enregistrer**.

      La page des stratégies s’affiche.

1. Choisissez **Actions planifiées**, puis **Créer**.

   La page **Créer une action planifiée** s’affiche.

1. Pour **Nom de l’action**, saisissez un nom unique.

1. Dans le champ **Fuseau horaire**, choisissez un fuseau horaire.

   Tous les fuseaux horaires répertoriés proviennent de la base de données des fuseaux horaires IANA. Pour plus d’informations, consultez la section [Liste des fuseaux horaires de la base de données tz](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

1. Pour **Heure de début**, saisissez la **date** et l’**heure** de début de l’action.

   Si vous avez choisi une planification récurrente, l'heure de début définit le moment où la première action planifiée de la série récurrente s'exécute.

1. Pour **Recurrence (Récurrence)**, choisissez l'une des options disponibles.
   + Pour effectuer des mises à l’échelle selon un calendrier récurrent, choisissez la fréquence à laquelle Amazon ECS exécute l’action planifiée.
     + Si vous sélectionnez une option qui commence par **Fréquence**, l’expression Cron est créée pour vous.
     + Si vous sélectionnez **Cron**, tapez une expression Cron qui spécifie l'heure à laquelle exécuter l'action. 
   + Pour ne mettre à l’échelle qu’une seule fois, choisissez **Une fois**.

1. Sous **Ajustements des tâches**, procédez comme suit :
   + Pour **Minimum**, saisissez le nombre minimum de tâches que le service doit exécuter.
   + Pour **Maximum**, saisissez le nombre maximum de tâches que le service doit exécuter.

1. Choisissez **Create Scheduled Action** (Créer une action planifiée).

## INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="scheduled-action-aws-cli"></a>

Utilisez ce qui AWS CLI suit pour configurer les politiques de dimensionnement planifiées pour votre service. Remplacez chaque *user input placeholder* par vos propres informations.

**Exemple : Pour planifier un dimensionnement unique**  
Utilisez la [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html)commande suivante avec les `--MaxCapacity` options `--start-time "YYYY-MM-DDThh:mm:ssZ"` et `--MinCapacity` et ou les deux. 

```
aws application-autoscaling put-scheduled-action --service-namespace ecs \
  --resource-id service/my-cluster/my-service \
  --scheduled-action-name my-one-time-schedule \
  --start-time 2021-01-30T12:00:00 \
  --scalable-target-action MinCapacity=3,MaxCapacity=10
```

**Exemple : pour planifier la mise à l’échelle selon un calendrier récurrent**  
Utilisez la commande [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html) suivante. Remplacez le *user input* par vos valeurs.

```
aws application-autoscaling put-scheduled-action --service-namespace ecs \
  --resource-id service/my-cluster/my-service \
  --scheduled-action-name my-recurring-action \
  --schedule "rate(5 hours)" \
  --start-time 2021-01-30T12:00:00 \
  --end-time 2021-01-31T22:00:00 \
  --scalable-target-action MinCapacity=3,MaxCapacity=10
```

Le calendrier de récurrence spécifié est basé sur le fuseau horaire UTC. Pour spécifier un fuseau horaire différent, incluez l’option `--time-zone` et le nom du fuseau horaire IANA, comme dans l’exemple suivant.

```
--time-zone "America/New_York"
```

Pour plus d’informations, consultez la section [Liste des fuseaux horaires de la base de données tz](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

# Utilisez des modèles historiques pour faire évoluer les services Amazon ECS grâce à une mise à l'échelle prédictive
<a name="predictive-auto-scaling"></a>

La mise à l’échelle prédictive examine les données de charge passées issues des flux de trafic afin d’analyser les tendances quotidiennes ou hebdomadaires. Elle utilise ensuite cette analyse pour anticiper les besoins postérieurs et augmenter de manière proactive les tâches dans votre service selon les besoins.

L’autoscaling prédictif est particulièrement utile dans les cas suivants.
+ Trafic cyclique : utilisation accrue des ressources pendant les heures normales de bureau et utilisation réduite pendant les soirées et les fins de semaine.
+ Modèles on-and-off de charge de travail récurrents ‐ Les exemples incluent le traitement par lots, les tests ou l'analyse périodique des données.
+ Applications avec des temps d’initialisation longs : cette situation peut avoir un impact sur les performances des applications lors d’événements d’augmentation horizontale, entraînant une latence notable.

Si vos applications prennent beaucoup de temps à s’initialiser et que le trafic augmente de manière régulière, vous devriez envisager d’utiliser la mise à l’échelle prédictive. Elle permet d’accélérer la mise à l’échelle en augmentant de manière proactive le nombre de tâches pour les charges prévues, au lieu d’utiliser uniquement des stratégies de mise à l’échelle dynamique, telles que la stratégie de mise à l’échelle du suivi de cible ou la mise à l’échelle par étapes. En vous aidant à éviter le risque de surallocation du nombre de tâches, la mise à l’échelle prédictive peut également vous permettre de réaliser des économies.

Prenons l'exemple d'une application très utilisée pendant les heures de bureau et peu utilisée la nuit. Au début de chaque journée ouvrable, la mise à l’échelle prédictive peut augmenter horizontalement les tâches avant le premier afflux de trafic. Cela permet à votre application de maintenir une disponibilité et des performances élevées lorsqu'elle passe d'une période de faible utilisation à une période d'utilisation plus intensive. Vous n'avez pas besoin d'attendre que la mise à l'échelle dynamique réagisse à l'évolution du trafic. Vous n’avez pas non plus à passer du temps à examiner les modèles de charge de votre application et à essayer de planifier le nombre adéquat de tâches à l’aide d’une mise à l’échelle planifiée.

La mise à l’échelle prédictive est une fonctionnalité au niveau du service qui met à l’échelle la tâche de votre service indépendamment de la mise à l’échelle de la capacité de calcul sous-jacente (par exemple, EC2 ou Fargate). Pour Fargate AWS , gère et adapte automatiquement la capacité sous-jacente en fonction des exigences des tâches. Pour la capacité EC2, vous pouvez utiliser les fournisseurs de capacité du groupe Auto Scaling pour mettre automatiquement à l’échelle les instances EC2 sous-jacentes en fonction des exigences de dimensionnement de vos tâches.

**Topics**
+ [Présentation de la mise à l’échelle prédictive](#predictive-auto-scaling-overview)
+ [Créer une stratégie de mise à l’échelle prédictive](predictive-scaling-create-policy.md)
+ [Évaluer vos politiques de mise à l'échelle prédictive](predictive-scaling-graphs.md)
+ [Remplacer la prévision](predictive-scaling-overriding-forecast-capacity.md)
+ [Utilisation de métriques personnalisées](predictive-scaling-custom-metrics.md)

## Fonctionnement de la mise à l’échelle prédictive dans Amazon ECS
<a name="predictive-auto-scaling-overview"></a>

Vous trouverez ici des informations sur les considérations relatives à l’utilisation de la mise à l’échelle prédictive, son fonctionnement et ses limites.

### Considérations relatives à l’utilisation de la mise à l’échelle prédictive
<a name="predictive-auto-scaling-considerations"></a>
+ Vous voulez vous assurer que la mise à l’échelle prédictive est adaptée à votre charge de travail. Vous pouvez vérifier cela en configurant les stratégies de mise à l’échelle en mode **prévisions uniquement** et en consultant les recommandations de la console. Vous devez évaluer les prévisions et les recommandations avant de commencer à utiliser la mise à l’échelle prédictive.
+ Avant que la mise à l’échelle prédictive puisse commencer à établir des prévisions, elle a besoin d’au moins 24 heures de données historiques. Plus il y a de données historiques disponibles, plus les prévisions sont efficaces, l’idéal étant deux semaines. Vous devrez également attendre 24 heures avant que la mise à l’échelle prédictive puisse générer de nouvelles prévisions lorsque vous supprimez un service Amazon ECS pour en recréer un. L’une des manières d’accélérer les choses consiste à utiliser des métriques personnalisées pour agréger les métriques entre l’ancien et le nouveau service Amazon ECS.
+ Choisissez une métrique de charge qui représente avec précision la charge complète de votre application et qui constitue l’aspect le plus important de votre application à prendre en compte.
+ La mise à l’échelle dynamique avec mise à l’échelle prédictive vous permet de suivre de près la demande de votre application, afin que vous puissiez l’augmenter en période d’accalmie et l’augmenter en cas d’augmentation inattendue du trafic. Lorsque plusieurs stratégies de mise à l’échelle sont actives, chaque stratégie détermine indépendamment le nombre souhaité de tâches, et le nombre souhaité de tâches est défini sur le maximum de celles-ci.
+ Vous pouvez utiliser la mise à l’échelle prédictive parallèlement à vos stratégies de mise à l’échelle dynamique, telles que le suivi des cibles ou la mise à l’échelle par étapes, afin que vos applications évoluent en fonction de modèles historiques et en temps réel. En soi, la mise à l’échelle prédictive ne permet pas de réduire horizontalement vos tâches. 
+ Si vous utilisez un rôle personnalisé lorsque vous appelez l’API `register-scalable-target`, un message d’erreur peut s’afficher indiquant que la stratégie de mise à l’échelle prédictive ne peut fonctionner que si le SLR est activé. Dans ce cas, vous devez appeler `register-scalable-target` à nouveau, mais sans role-arn. Utilisez le SLR lors de l’enregistrement de la cible évolutive et appelez l’API `put-scaling-policy`.

### Fonctionnement de la mise à l'échelle prédictive
<a name="predictive-auto-scaling-details"></a>

Vous utilisez la mise à l'échelle prédictive en créant une politique de mise à l'échelle prédictive qui spécifie la CloudWatch métrique à surveiller et à analyser. La mise à l’échelle prédictive doit disposer d’au moins 24 heures de données pour commencer à prévoir les valeurs futures.

Une fois que vous avez créé la stratégie, la mise à l’échelle prédictive commence à analyser les données métriques recueillies au cours des 14 derniers jours afin d’identifier des modèles. Cette analyse est utilisée pour générer des prévisions horaires des besoins pour les 48 prochaines heures. Les dernières CloudWatch données sont utilisées pour mettre à jour les prévisions toutes les six heures. À mesure que de nouvelles données arrivent, la mise à l’échelle prédictive améliore continuellement la précision des prévisions futures.

Lorsque vous activez la mise à l’échelle prédictive pour la première fois, elle s’exécute en mode *prévision uniquement*. Elle génère des prévisions dans ce mode, mais ne met pas votre service Amazon ECS à l’échelle en fonction de ces prévisions. Cela vous permet d’évaluer la précision et la pertinence des prévisions. Vous pouvez consulter les données de prévision à l’aide de l’opération API `GetPredictiveScalingForecast` ou de l’ AWS Management Console.

Lorsque vous décidez de commencer à utiliser la mise à l’échelle prédictive, passez la stratégie de mise à l’échelle en mode *prévision et mise à l’échelle*. Dans ce mode, les événements suivants se produisent.

Votre service Amazon ECS est mis à l’échelle au début de chaque heure en fonction des prévisions pour cette heure, par défaut. Vous pouvez choisir de commencer plus tôt en utilisant la propriété `SchedulingBufferTime` dans l’opération d’API `PutScalingPolicy`. Cela permet de lancer de nouvelles tâches avant la demande prévue et leur donne le temps de démarrer et de se préparer à gérer le trafic.

### Limite maximum de tâches
<a name="predictive-scaling-maximum-tasks-limit"></a>

Lorsque vous enregistrez les services Amazon ECS pour la mise à l’échelle, vous définissez un nombre maximal de tâches pouvant être lancées par service. Par défaut, lorsque des politiques de mise à l’échelle sont définies, elles ne peuvent pas augmenter le nombre de tâches au-dessus de sa limite maximale.

Vous pouvez également autoriser l’augmentation automatique du nombre maximum de tâches du service si les prévisions approchent ou dépassent le nombre maximum de tâches du service Amazon ECS.

**Avertissement**  
Soyez prudent lorsque vous autorisez l’augmentation automatique du nombre maximum de tâches. Cela peut entraîner le lancement d’un plus grand nombre de tâches que prévu, si le nombre maximum de tâches augmenté n’est pas surveillé et géré. Le nombre maximum de tâches augmenté devient alors le nouveau nombre maximum normal de tâches pour le service Amazon ECS jusqu’à ce que vous le mettiez à jour manuellement. Le nombre maximum de tâches ne revient pas automatiquement au maximum initial.

### Régions prises en charge
<a name="predictive-auto-scaling-supported-regions"></a>
+ USA Est (Virginie du Nord)
+ USA Est (Ohio)
+ USA Ouest (Californie du Nord)
+ USA Ouest (Oregon)
+ Afrique (Le Cap)
+ Asie-Pacifique (Hong Kong)
+ Asie-Pacifique (Jakarta)
+ Asie-Pacifique (Mumbai)
+ Asie-Pacifique (Osaka)
+ Asia Pacific (Seoul)
+ Asie-Pacifique (Singapour)
+ Asie-Pacifique (Sydney)
+ Asie-Pacifique (Tokyo)
+ Canada (Centre)
+ Chine (Pékin)
+ China (Ningxia)
+ Europe (Francfort)
+ Europe (Irlande)
+ Europe (Londres)
+ Europe (Milan)
+ Europe (Paris)
+ Europe (Stockholm)
+ Moyen-Orient (Bahreïn)
+ Amérique du Sud (São Paulo)
+ AWS GovCloud (USA Est)
+ AWS GovCloud (US-Ouest)

# Création d’une stratégie de mise à l’échelle pour l’autoscaling d’un service Amazon ECS
<a name="predictive-scaling-create-policy"></a>

Créez une stratégie de mise à l’échelle prédictive pour qu’Amazon ECS augmente ou diminue le nombre de tâches exécutées par votre service en fonction de données historiques. 

**Note**  
Un nouveau service doit fournir au moins 24 heures de données avant de pouvoir générer une prévision.

## Console
<a name="predictive-scaling-policy-aws-console"></a>

1. En plus des autorisations IAM standard pour créer et mettre à jour des services, vous avez besoin d’autorisations supplémentaires. Pour de plus amples informations, veuillez consulter [Autorisations IAM requises pour l’autoscaling d’un service Amazon ECS](auto-scaling-IAM.md).

1. Déterminez les métriques à utiliser pour la stratégie. Les mesures suivantes sont disponibles :
   +  **ECSServiceMoyenne CPUUtilization** : utilisation moyenne du processeur que le service doit utiliser. 
   + **ECSServiceAverageMemoryUtilization**— Utilisation moyenne de la mémoire que le service doit utiliser. 
   + **ALBRequestCountPerTarget**— Le nombre moyen de demandes par minute que cette tâche devrait idéalement recevoir.

   Vous pouvez également utiliser une métrique personnalisée. Vous devez définir les valeurs suivantes :
   + Charge : métrique qui représente avec précision la charge totale de votre application et qui constitue l’aspect le plus important à prendre en compte pour la mise à l’échelle de votre application.
   + Métrique de mise à l’échelle : le meilleur indicateur pour déterminer le niveau d’utilisation idéal pour votre application.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Autoscaling du service**, puis sélectionnez **Définir le nombre de tâches**.

1. Sous **Nombre de tâches du service Amazon ECS**, sélectionnez **Utiliser l’autoscaling**.

   La section **Nombre de tâches** s’affiche.

   1. Pour **Nombre minimum de tâches**, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.

   1. Pour **Nombre maximal de tâches**, saisissez la limite supérieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.

   1. Choisissez **Enregistrer**.

      La page des stratégies s’affiche.

1. Choisissez **Créer une stratégie de mise à l’échelle**.

   La page **Créer une stratégie** s’affiche.

1. Pour **Type de stratégie de mise à l’échelle**, choisissez **Mise à l’échelle prédictive**.

1. Pour **Policy name** (Nom de la politique), saisissez un nom de politique.

1. Sous **Paire de métriques**, choisissez vos métriques dans la liste des options.

   Si vous avez choisi **Nombre de requêtes Application Load Balancer par cible**, choisissez un groupe cible dans le champ **Groupe cible**. L’option **Nombre de requêtes Application Load Balancer par cible** n’est prise en charge que si vous avez attaché un groupe cible Application Load Balancer à votre service. 

   Si vous avez choisi **Paire de métriques personnalisées**, sélectionnez les métriques individuelles dans les listes déroulantes **Métrique de charge** et **Métrique de mise à l’échelle**. 

1. Pour **Utilisation cible**, saisissez la valeur cible pour le pourcentage de tâches qu’Amazon ECS doit gérer. L’autoscaling du service augmente horizontalement votre capacité jusqu’à ce que l’utilisation moyenne corresponde à l’objectif, ou jusqu’à ce qu’elle atteigne le nombre maximal de tâches que vous avez spécifié.

1. Choisissez **Créer une stratégie de mise à l’échelle**.

## AWS CLI
<a name="predictive-scaling-policy-aws-cli"></a>

Utilisez ce qui AWS CLI suit pour configurer des politiques de dimensionnement prédictif pour votre service Amazon ECS. Remplacez chaque *user input placeholder* par vos propres informations.

Pour plus d'informations sur les CloudWatch métriques que vous pouvez spécifier, consultez le [PredictiveScalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html)manuel *Amazon EC2 Auto Scaling API* Reference.

### Exemple 1 : stratégie de mise à l’échelle prédictive avec mémoire prédéfinie.
<a name="predictive-scaling-cli-example-one"></a>

Voici un exemple de stratégie avec une configuration mémoire prédéfinie.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 40,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceMemoryUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

L'exemple suivant illustre la création de la politique en exécutant la [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html)commande avec le fichier de configuration spécifié.

```
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

Si elle aboutit, cette commande renvoie l’ARN de la stratégie.

```
{
    "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
    "Alarms": []
}
```

### Exemple 2 : stratégie de mise à l’échelle prédictive avec UC prédéfinie.
<a name="predictive-scaling-cli-example-two"></a>

Voici un exemple de stratégie avec une configuration UC prédéfinie.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 0.00000004,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceCPUUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

L'exemple suivant illustre la création de la politique en exécutant la [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html)commande avec le fichier de configuration spécifié.

```
aws aas put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

Si elle aboutit, cette commande renvoie l’ARN de la stratégie.

```
{
    "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
    "Alarms": []
}
```

# Évaluation de vos stratégies de mise à l’échelle prédictive pour Amazon ECS
<a name="predictive-scaling-graphs"></a>

Avant d’utiliser une stratégie de mise à l’échelle prédictive pour mettre à l’échelle vos services, consultez les recommandations et autres données relatives à votre stratégie dans la console Amazon ECS. C'est une étape importante pour éviter qu'une politique de mise à l'échelle prédictive mette votre capacité réelle à l'échelle tant que vous ne savez pas si ses prévisions sont exactes.

Si le service est neuf, prévoyez 24 heures pour créer la première prévision.

Lors de AWS la création d'une prévision, elle utilise des données historiques. Si votre service ne dispose pas encore de beaucoup de données historiques récentes, la mise à l’échelle prédictive peut temporairement compléter les prévisions avec des agrégats créés à partir des agrégats historiques actuellement disponibles. Les prévisions sont remplies jusqu'à deux semaines avant la date de création d'une politique.

## Afficher vos recommandations de mise à l'échelle prédictive
<a name="view-predictive-scaling-recommendations"></a>

Pour une analyse efficace, l’autoscaling du service doit disposer d’au moins deux stratégies de mise à l’échelle prédictive à comparer. (Toutefois, vous pouvez toujours consulter les résultats d'une seule politique.) Lorsque vous créez plusieurs politiques, vous pouvez évaluer une politique qui utilise une seule métrique par rapport à une autre qui utilise une autre métrique. Vous pouvez également évaluer l'impact de différentes combinaisons de valeurs cibles et de métriques. Une fois les stratégies de mise à l’échelle prédictive créées, Amazon ECS commence immédiatement à évaluer la stratégie la plus appropriée pour mettre votre groupe à l’échelle.

**Pour afficher vos recommandations dans la console Amazon ECS**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Autoscaling du service**.

1. Choisissez la stratégie de mise à l’échelle prédictive, puis sélectionnez **Actions**, **Mise à l’échelle prédictive**, **Afficher les recommandations**.

   Vous pouvez consulter les détails d’une stratégie ainsi que notre recommandation. La recommandation vous indique si la politique de mise à l'échelle prédictive est plus efficace que si vous ne l'utilisez pas. 

   Si vous ne savez pas si une politique de mise à l'échelle prédictive convient à votre groupe, consultez les colonnes **Impact sur la disponibilité** et **Impact sur les coûts** pour choisir la politique appropriée. Les informations de chaque colonne vous indiquent l'impact de la politique. 
   + **Impact sur la disponibilité** : indique si la stratégie permettrait d’éviter un impact négatif sur la disponibilité en provisionnant suffisamment d’instances pour gérer la charge de travail, en comparaison avec sa non-utilisation.
   + **Impact sur les coûts** : indique si la stratégie éviterait un impact négatif sur vos coûts en évitant une surallocation des tâches, en comparaison avec sa non-utilisation. En cas d’allocation excessive, vos services sont sous-utilisés ou inactifs, ce qui ne fait qu’augmenter l’impact sur les coûts.

   Si vous avez plusieurs politiques, la balise **Meilleure prévision** s'affiche à côté du nom de la politique qui offre le plus d'avantages en matière de disponibilité à moindre coût. Une plus grande importance est accordée à l'impact sur la disponibilité. 

1. (Facultatif) Pour sélectionner la période souhaitée pour les résultats des recommandations, choisissez la valeur de votre choix dans le menu déroulant **Période d’évaluation** : **2 jours**, **1 semaine** ou **2 semaines**. Par défaut, la période d'évaluation est réglée sur les deux dernières semaines. Une période d'évaluation plus longue fournit davantage de points de données pour les résultats des recommandations. Toutefois, l'ajout de points de données supplémentaires risque de ne pas améliorer les résultats si vos modèles de charge ont changé, par exemple après une période de demande exceptionnelle. Dans ce cas, vous pouvez obtenir une recommandation plus ciblée en consultant des données plus récentes.

**Note**  
Les recommandations sont générées uniquement pour les politiques qui sont en mode **Prévision uniquement**. La fonctionnalité des recommandations offre de meilleurs résultats lorsqu'une politique est en mode **Prévision uniquement** pendant toute la période d'évaluation. Si vous lancez une politique en mode **Prévision et mise à l'échelle** et que vous la passez ultérieurement en mode **Prévision uniquement**, les résultats de cette politique risquent d'être biaisés. Cela s'explique par le fait que la politique a déjà contribué à la capacité réelle.

## Consulter les graphiques de surveillance de la mise à l'échelle prédictive
<a name="review-predictive-scaling-monitoring-graphs"></a>

Dans la console, vous pouvez consulter les prévisions des jours, semaines ou mois précédents afin de visualiser les performances de la stratégie au fil du temps. Vous pouvez également utiliser ces informations pour évaluer la précision des prévisions lorsque vous décidez de laisser une stratégie mettre à l’échelle votre nombre réel de tâches.

**Pour consulter les graphiques de surveillance de la mise à l’échelle prédictive dans la console Amazon ECS**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Autoscaling du service**.

1. Choisissez la stratégie de mise à l’échelle prédictive, puis sélectionnez **Actions**, **Mise à l’échelle prédictive**, **Afficher les graphiques**.

1. Dans la section **Surveillance**, vous pouvez afficher les prévisions passées et futures de votre politique concernant la charge et la capacité par rapport aux valeurs réelles. Le graphique **Charge** présente la prévision de charge et les valeurs réelles pour la métrique de charge que vous avez choisie. Le graphique **Capacité** indique le nombre de tâches prédit par la stratégie. Il inclut également le nombre réel de tâches lancées. La ligne verticale sépare les valeurs historiques des prévisions futures. Ces graphiques sont disponibles peu de temps après la création de la politique. 

1. (Facultatif) Pour modifier la quantité de données historiques affichées dans le graphique, choisissez la valeur de votre choix dans la liste déroulante **Période d'évaluation** en haut de la page. La période d'évaluation ne transforme en rien les données de cette page. Elle ne fait que modifier la quantité de données historiques affichées.

**Comparer les données du graphique **Charge****  
Chaque ligne horizontale représente un ensemble différent de points de données rapportés à des intervalles d'une heure :

1. La **charge observée réelle** utilise la statistique SUM correspondant à la métrique de charge de votre choix afin d'afficher la charge horaire totale dans le passé.

1. La **charge prévue par la politique** indique la prévision de charge horaire. Cette prévision se base sur les observations de charge réelles des deux semaines précédentes.

**Comparez les données du graphique **Capacité****  
Chaque ligne horizontale représente un ensemble différent de points de données rapportés à des intervalles d'une heure :

1. Le **nombre réel de tâches observé** indique la capacité réelle de votre service Amazon ECS dans le passé, qui dépend de vos autres stratégies de mise à l’échelle et de la taille minimale du groupe en vigueur pour la période sélectionnée.

1. La **capacité prévue par la politique** indique la capacité de base à laquelle vous pouvez vous attendre au début de chaque heure lorsque la politique est en mode **Prévision et mise à l'échelle**.

1. Le **nombre de tâches requis estimé** indique le nombre idéal de tâches dans votre service pour maintenir la métrique de mise à l’échelle à la valeur cible que vous avez choisie.

1. Le **nombre minimum de tâches** indique le nombre minimum de tâches de votre service.

1. La **capacité maximale** indique le nombre maximal de tâches de votre service.

Afin de calculer la capacité requise estimée, nous partons du principe que chaque tâche est utilisée de manière égale à une valeur cible spécifiée. Dans la pratique, le nombre de tâches n’est pas utilisé de manière égale. En supposant toutefois que l’utilisation est répartie uniformément entre les tâches, nous pouvons estimer la probabilité de la capacité nécessaire. Le nombre de tâches requis est alors calculé comme étant inversement proportionnel à la métrique de mise à l’échelle que vous avez utilisée pour votre stratégie de mise à l’échelle prédictive. En d’autres termes, à mesure que le nombre de tâches augmente, la métrique de mise à l’échelle diminue au même rythme. Par exemple, si le nombre de tâches double, la métrique de mise à l’échelle doit diminuer de moitié. 

La formule de la capacité requise déduite est la suivante :

 `sum of (actualServiceUnits*scalingMetricValue)/(targetUtilization)`

Par exemple, nous prenons les `actualServiceUnits` (`10`) et la `scalingMetricValue` (`30`) pour une heure donnée. Nous prenons ensuite la `targetUtilization` que vous avez spécifiée dans votre politique de mise à l'échelle prédictive (`60`) et calculons la capacité requise déduite pour la même heure. Elle renvoie la valeur `5`. Cela signifie que cinq est la quantité de capacité requise déduite pour maintenir la capacité en proportion inverse directe à la valeur cible de la métrique de mise à l'échelle.

**Note**  
Différents leviers sont à votre disposition pour ajuster et améliorer les économies de coûts et la disponibilité de votre application.  
Vous utilisez la mise à l'échelle prédictive pour la capacité de base et la mise à l'échelle dynamique afin de gérer la capacité supplémentaire. La mise à l'échelle dynamique fonctionne indépendamment de la mise à l'échelle prédictive, avec une mise à l'échelle horizontale et une montée en puissance en fonction de l'utilisation actuelle. Tout d’abord, Amazon ECS calcule le nombre de tâches recommandé pour chaque stratégie de mise à l’échelle non planifiée. Ensuite, il procède à la mise à l’échelle en fonction de la stratégie qui fournit le plus grand nombre de tâches.
Pour permettre la réduction horizontale lorsque la charge diminue, votre service doit toujours disposer d’au moins une stratégie de mise à l’échelle dynamique avec la partie réduction horizontale activée.
Vous pouvez améliorer les performances de mise à l'échelle en vous assurant que vos capacités minimale et maximale ne sont pas trop restrictives. Une stratégie avec un nombre recommandé de tâches qui ne se situe pas dans la plage de capacité minimale et maximale ne pourra pas être mise à l’échelle.

# Surveillez les mesures de dimensionnement prédictif pour Amazon ECS avec CloudWatch
<a name="predictive-scaling-monitoring"></a>

Vous pouvez utiliser Amazon CloudWatch pour surveiller vos données à des fins de dimensionnement prédictif. Une stratégie de mise à l’échelle prédictive collecte des données qui sont utilisées pour prévoir votre charge postérieure. Les données collectées sont automatiquement stockées CloudWatch à intervalles réguliers et peuvent être utilisées pour visualiser les performances de la politique au fil du temps. Vous pouvez également créer des CloudWatch alarmes pour vous avertir lorsque les indicateurs de performance changent au-delà des limites que vous avez définies.

## Visualisez les données de prévision historiques
<a name="visualize-historical-forecast-data"></a>

Les données de prévision de charge pour une politique de dimensionnement prédictif peuvent être consultées CloudWatch et peuvent être utiles lors de la visualisation des prévisions par rapport à d'autres CloudWatch indicateurs dans un seul graphique. Vous pouvez également observer les tendances au fil du temps en affichant une période plus longue. Vous pouvez accéder aux métriques historiques jusqu'à 15 mois pour acquérir un meilleur point de vue de la façon dont votre politique s'exécute.

**Pour consulter les données de prévision historiques à l'aide de la CloudWatch console**

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le panneau de navigation, choisissez **Metrics** (Métriques), **All metrics** (Toutes les métriques).

1. Choisissez l’espace de noms de métrique **Application Auto Scaling**.

1. Choisissez **Prévisions de charge pour la mise à l’échelle prédictive**.

1. Dans le champ de recherche, saisissez le nom de la stratégie de mise à l’échelle prédictive ou le nom du groupe de services Amazon ECS, puis appuyez sur « Entrée » pour filtrer les résultats. 

1. Pour représenter graphiquement une métrique, cochez la case en regard de la métrique. Pour modifier le nom du graphique, choisissez l'icône représentant un crayon. Pour modifier la plage de temps, sélectionnez l'une des valeurs prédéfinies ou choisissez **custom (personnalisé)**. Pour plus d'informations, consultez la section [Représentation graphique d'une métrique](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph_a_metric.html) dans le *guide de CloudWatch l'utilisateur Amazon*.

1. Pour modifier les statistiques, choisissez l'onglet **Graphed metrics (Graphique des métriques)**. Sélectionnez l'en-tête de colonne ou une valeur individuelle et choisissez une autre valeur. Bien que vous puissiez choisir n'importe quelle statistique pour chaque métrique, toutes les statistiques ne sont pas utiles pour les **PredictiveScalingLoadForecast**métriques. Par exemple, les calculs statistiques de moyenne, minimum et maximum de l'utilisation de l'UC sont utiles, mais le calcul statistique de somme ne l'est pas.

1. (En option) Pour ajouter une autre métrique à utiliser dans l'expression mathématique, sous **Toutes les métriques**, choisissez **Tous**, recherchez la métrique spécifique, puis activez la case à cocher en regard de celle-ci. Vous pouvez ajouter jusqu'à 10 métriques.

1. (Facultatif) Pour ajouter le graphique à un CloudWatch tableau de bord, choisissez **Actions**, puis **Ajouter au tableau de bord**.

## Créer des mesures de précision à l'aide de mathématiques
<a name="create-accuracy-metrics"></a>

Avec les mathématiques métriques, vous pouvez interroger plusieurs CloudWatch métriques et utiliser des expressions mathématiques pour créer de nouvelles séries chronologiques basées sur ces métriques. Vous pouvez visualiser les séries chronologiques obtenues sur la CloudWatch console et les ajouter aux tableaux de bord. Pour plus d'informations sur les mathématiques métriques, consultez la section [Utilisation des mathématiques métriques](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) dans le *guide de CloudWatch l'utilisateur Amazon*.

À l’aide des mathématiques de métriques, vous pouvez représenter graphiquement les données générées par l’autoscaling du service pour la mise à l’échelle prédictive de différentes manières. Cela vous permet de surveiller les performances des politiques au fil du temps et de comprendre si votre combinaison de mesures peut être améliorée.

Par exemple, vous pouvez utiliser une expression mathématique de métrique pour surveiller[erreur absolue moyenne en pourcentage](https://en.wikipedia.org/wiki/Mean_absolute_percentage_error)(MÂLE). La métrique MAPE permet de surveiller la différence entre les valeurs prévues et les valeurs réelles observées pendant une fenêtre de prévision donnée. Les modifications de la valeur de MAPE peuvent indiquer si les performances de la stratégie se dégradent au fil du temps à mesure que la nature de votre application change. Une augmentation de l'EMAP indique un écart plus important entre les valeurs prévues et les valeurs réelles. 

**Exemple : expressions mathématiques appliquées aux métriques**

Pour commencer avec ce type de graphique, vous pouvez créer une expression mathématique de métrique comme celle présentée dans l'exemple suivant.



Au lieu d'une seule métrique, il existe un tableau de structures de requêtes de données de métriques pour`MetricDataQueries`. Chaque élément de`MetricDataQueries`obtient une métrique ou exécute une expression mathématique. Le premier point,`e1`, est l'expression mathématique. L'expression désignée définit le`ReturnData`Paramètre to`true`, qui génère une seule série chronologique. Pour toutes les autres métriques, le kit`ReturnData`valeur est`false`. 

Dans l'exemple, l'expression désignée utilise les valeurs réelles et prévues comme entrée et renvoie la nouvelle métrique (MAPE). `m1`est la CloudWatch métrique qui contient les valeurs de charge réelles (en supposant que l'utilisation du processeur est la métrique de charge initialement spécifiée pour la politique nommée`my-predictive-scaling-policy`). `m2`est la CloudWatch métrique qui contient les valeurs de charge prévues. La syntaxe mathématique de la métrique MAPE est la suivante :

*Moyenne de (abs ((Réel - Forecast)/(Réel)))*

### Visualisez vos mesures de précision et définissez des alarmes
<a name="visualize-accuracy-metrics-set-alarms"></a>

Pour visualiser les données métriques de précision, sélectionnez l'onglet **Métriques** dans la CloudWatch console. Vous pouvez représenter les données sous forme graphique à partir de là. Pour plus d'informations, consultez la section [Ajouter une expression mathématique à un CloudWatch graphique](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#adding-metrics-expression-console) dans le *guide de CloudWatch l'utilisateur Amazon*.

Vous pouvez définir une alarme sur une métrique que vous surveillez à partir de la section **Metrics** (Métriques). Pendant que vous êtes sur l'onglet **Métriques sous forme de graphique**, vous pouvez sélectionner l'icône **Créer une alarme** sous la colonne **Actions**. Le**Créer une alarme**est représentée par une petite cloche. Pour plus d'informations et pour connaître les options de notification, consultez les [sections Création CloudWatch d'une alarme basée sur une expression mathématique métrique](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html) et [Notification aux utilisateurs des modifications apportées aux alarmes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Notify_Users_Alarm_Changes.html) dans le *guide de l' CloudWatch utilisateur Amazon*.

Vous pouvez également utiliser [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)et effectuer des calculs [PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html)à l'aide des mathématiques métriques et créer des alarmes en fonction de la sortie.

# Utilisation des actions planifiées pour remplacer les valeurs prévisionnelles pour Amazon ECS
<a name="predictive-scaling-overriding-forecast-capacity"></a>

Parfois, vous pouvez disposer d'informations supplémentaires sur de futurs besoins de votre application que le calcul prédictif ne peut pas prendre en compte. Par exemple, les calculs prévisionnels pourraient sous-estimer les tâches nécessaires à la préparation d’un événement marketing à venir. Vous pouvez alors utiliser des actions planifiées pour remplacer temporairement la prévision au cours de périodes ultérieures. Les actions planifiées peuvent être exécutées de manière récurrente, ou à une date et une heure spécifiques en cas de fluctuations ponctuelles de la demande. 

Par exemple, vous pouvez créer une action planifiée avec un nombre de tâches supérieur à celui prévu. Au moment de l’exécution, Amazon ECS met à jour le nombre minimum de tâches de votre service. Étant donné que la mise à l’échelle prédictive optimise le nombre de tâches, une action planifiée dont le nombre minimum de tâches est supérieur aux valeurs prévues est respectée. Cela permet d’éviter que le nombre de tâches soit inférieur à celui prévu. Pour cesser de remplacer les prévisions, utilisez une deuxième action planifiée afin de rétablir le nombre minimum de tâches à son paramètre d’origine.

La procédure suivante présente les étapes à suivre pour remplacer la prévision au cours de périodes ultérieures. 

**Topics**
+ [Étape 1 : (facultatif) Analyser les données en séries chronologiques](#analyzing-time-series-data)
+ [Étape 2 : créer deux actions planifiées](#scheduling-capacity)

**Important**  
Cette rubrique part du principe que vous essayez de remplacer les prévisions afin d’atteindre une capacité supérieure à celle prévue. Si vous devez réduire temporairement le nombre de tâches sans interférer avec une stratégie de mise à l’échelle prédictive, utilisez plutôt le mode *prévision uniquement*. En mode « prévision uniquement », la mise à l’échelle prédictive continuera de générer des prévisions, mais elle n’augmentera pas automatiquement le nombre de tâches. Vous pouvez ensuite surveiller l’utilisation des ressources et réduire manuellement le nombre de tâches selon les besoins. 

## Étape 1 : (facultatif) Analyser les données en séries chronologiques
<a name="analyzing-time-series-data"></a>

Commencez par analyser les données en séries chronologiques de la prévision. Il s'agit d'une étape facultative, mais elle permet de comprendre les détails de la prévision.

1. **Récupérer la prévision**

   Une fois la prévision créée, vous pouvez interroger une période spécifique au sein de celle-ci. L'objectif de la requête est d'obtenir une vue complète des données en séries chronologiques d'une période spécifique. 

   Votre requête peut inclure jusqu'à deux jours de données de prévision ultérieures. Si vous utilisez la mise à l'échelle prédictive depuis un certain temps, vous pouvez également accéder à vos données de prévision antérieures. Toutefois, la durée maximale entre le début et la fin est de 30 jours. 

   Pour obtenir les prévisions à l'aide de la [get-predictive-scaling-forecast](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/get-predictive-scaling-forecast.html) AWS CLI commande, entrez les paramètres suivants dans la commande : 
   + Saisissez le nom du cluster dans le paramètre `resource-id`. 
   + Entrez le nom de la stratégie dans le paramètre `--policy-name`. 
   + Entrez l'heure de début dans le paramètre `--start-time` pour ne renvoyer que les données de prévision correspondant à l'heure spécifiée ou ultérieures à celle-ci.
   + Entrez l'heure de fin dans le paramètre `--end-time` pour ne renvoyer que les données de prévision correspondant à l'heure spécifiée ou antérieures à celle-ci. 

   ```
   aws application-autoscaling get-predictive-scaling-forecast \
       --service-namespace ecs \
       --resource-id service/MyCluster/test \
       --policy-name cpu40-predictive-scaling-policy \
       --scalable-dimension ecs:service:DesiredCount \
       --start-time "2021-05-19T17:00:00Z" \
       --end-time "2021-05-19T23:00:00Z"
   ```

   Si elle aboutit, la commande renvoie des données semblables à l'exemple suivant. 

   ```
   {
       "LoadForecast": [
           {
               "Timestamps": [
                   "2021-05-19T17:00:00+00:00",
                   "2021-05-19T18:00:00+00:00",
                   "2021-05-19T19:00:00+00:00",
                   "2021-05-19T20:00:00+00:00",
                   "2021-05-19T21:00:00+00:00",
                   "2021-05-19T22:00:00+00:00",
                   "2021-05-19T23:00:00+00:00"
               ],
               "Values": [
                   153.0655799339254,
                   128.8288551285919,
                   107.1179447150675,
                   197.3601844551528,
                   626.4039934516954,
                   596.9441277518481,
                   677.9675713779869
               ],
               "MetricSpecification": {
                   "TargetValue": 40.0,
                   "PredefinedMetricPairSpecification": {
                       "PredefinedMetricType": "ASGCPUUtilization"
                   }
               }
           }
       ],
       "CapacityForecast": {
           "Timestamps": [
               "2021-05-19T17:00:00+00:00",
               "2021-05-19T18:00:00+00:00",
               "2021-05-19T19:00:00+00:00",
               "2021-05-19T20:00:00+00:00",
               "2021-05-19T21:00:00+00:00",
               "2021-05-19T22:00:00+00:00",
               "2021-05-19T23:00:00+00:00"
           ],
           "Values": [
               2.0,
               2.0,
               2.0,
               2.0,
               4.0,
               4.0,
               4.0
           ]
       },
       "UpdateTime": "2021-05-19T01:52:50.118000+00:00"
   }
   ```

   La réponse comprend deux prévisions : `LoadForecast` et `CapacityForecast`. `LoadForecast` affiche la prévision de charge horaire. `CapacityForecast` affiche les valeurs de prévision de la capacité nécessaire sur une base horaire pour gérer la charge prévue tout en maintenant une `TargetValue` de 40 (40 % d'utilisation moyenne du processeur).

1. **Identifier la période cible**

   Indiquez l'heure ou les heures où la fluctuation de la demande ponctuelle devrait avoir lieu. N'oubliez pas que les dates et les heures indiquées dans la prévision sont basées sur le fuseau horaire UTC.

## Étape 2 : créer deux actions planifiées
<a name="scheduling-capacity"></a>

Créez ensuite deux actions planifiées pour une période spécifique où votre application devra gérer une charge plus élevée que celle prédite. Par exemple, si vous organisez un événement marketing qui va générer du trafic sur votre site pendant une période limitée, vous pouvez planifier une action ponctuelle pour mettre à jour la capacité minimale au début de cet événement. Puis vous pouvez planifier une autre action pour rétablir le paramètre d'origine de la capacité minimale à la fin de l'événement. 

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, puis choisissez le service.

   La page de détails du service s’affiche.

1. Choisissez **Service Auto Scaling**.

   La page des stratégies s’affiche.

1. Choisissez **Actions planifiées**, puis **Créer**.

   La page **Créer une action planifiée** s’affiche.

1. Pour **Nom de l’action**, saisissez un nom unique.

1. Dans le champ **Fuseau horaire**, choisissez un fuseau horaire.

   Tous les fuseaux horaires répertoriés proviennent de la base de données des fuseaux horaires IANA. Pour plus d’informations, consultez la section [Liste des fuseaux horaires de la base de données tz](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).

1. Pour **Heure de début**, saisissez la **date** et l’**heure** de début de l’action.

1. Pour **Recurrence** (Récurrence), choisissez **Once** (Une fois).

1. Sous **Ajustements des tâches**, pour « Minimum », saisissez une valeur inférieure ou égale au nombre maximum de tâches.

1. Choisissez **Create Scheduled Action** (Créer une action planifiée).

   La page des stratégies s’affiche.

1. Configurez une deuxième action planifiée pour rétablir le nombre minimum de tâches à la configuration d’origine à la fin de l’événement. La mise à l’échelle prédictive ne peut mettre à l’échelle le nombre de tâches que lorsque la valeur que vous avez définie pour **Minimum** est inférieure aux valeurs prévues.

**Pour créer deux actions planifiées pour des événements ponctuels (AWS CLI)**  
Pour AWS CLI créer les actions planifiées, utilisez la commande [put-scheduled-update-group-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-update-group-action.html). 

Par exemple, définissons une action planifiée pour maintenir une capacité minimale de trois instances pendant huit heures à partir du 19 mai à 17h00. Les commandes suivantes montrent comment implémenter ce scénario.

La première commande [put-scheduled-update-group-action](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scheduled-update-group-action.html) demande à Amazon EC2 Auto Scaling de mettre à jour la capacité minimale du groupe Auto Scaling spécifié à 17 h 00 UTC le 19 mai 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-start \
  --auto-scaling-group-name my-asg --start-time "2021-05-19T17:00:00Z" --minimum-capacity 3
```

La deuxième commande indique à Amazon EC2 Auto Scaling de définir la capacité minimale du groupe à 1h00 UTC le 20 mai 2021. 

```
aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-event-end \
  --auto-scaling-group-name my-asg --start-time "2021-05-20T01:00:00Z" --minimum-capacity 1
```

Après l'ajout de ces actions planifiées au groupe Auto Scaling, Amazon EC2 Auto Scaling effectue les opérations suivantes : 
+ À 17h00 UTC le 19 mai 2021, la première action planifiée s'exécute. Si le groupe compte actuellement moins de trois instances, il passe à trois instances. Pendant ce temps et pendant les huit heures suivantes, Amazon EC2 Auto Scaling peut continuer à monter en puissance si la capacité prévue est supérieure à la capacité réelle ou si une stratégie de mise à l'échelle dynamique est en vigueur. 
+ À 1h00 UTC le 20 mai 2021, la seconde action planifiée s'exécute. Cette action rétablit le paramètre d'origine de la capacité minimale à la fin de l'événement.

### Mise à l'échelle basée sur des planifications récurrentes
<a name="scheduling-recurring-actions"></a>

Pour remplacer la prévision applicable à la même période chaque semaine, créez deux actions planifiées et fournissez la logique d'heure et de date à l'aide d'une expression cron. 

L'expression cron est constituée de cinq champs séparés par des espaces : [Minute] [Heure] [Jour\$1du\$1Mois] [Mois\$1de\$1Année] [Jour\$1de\$1Semaine]. Ces champs peuvent contenir toutes les valeurs autorisées, y compris des caractères spéciaux. 

Par exemple, l'expression cron suivante exécute l'action tous les mardis à 6h30. L'astérisque est utilisé comme caractère générique pour représenter toutes les valeurs d'un champ.

```
30 6 * * 2
```

### Consultez aussi
<a name="scheduling-scaling-see-also"></a>

Pour plus d’informations sur la gestion des actions planifiées, consultez la section [Utilisez des actions planifiées pour faire évoluer les services Amazon ECS](service-autoscaling-schedulescaling.md).

# Stratégie avancée de mise à l’échelle prédictive utilisant des métriques personnalisées pour Amazon ECS
<a name="predictive-scaling-custom-metrics"></a>

Dans une stratégie de mise à l’échelle prédictive, vous pouvez utiliser des métriques prédéfinies ou personnalisées. Les métriques personnalisées sont utiles lorsque les métriques prédéfinies (UC, mémoire, etc.) ne sont pas suffisantes pour décrire suffisamment la charge de votre application.

Lorsque vous créez une politique de dimensionnement prédictif avec des métriques personnalisées, vous pouvez spécifier d'autres CloudWatch métriques fournies par AWS. Vous pouvez également spécifier des métriques que vous définissez et publiez vous-même. Vous pouvez également utiliser les mathématiques des métriques pour agréger et transformer les métriques existantes en une nouvelle série chronologique qui AWS n'est pas automatiquement suivie. Un exemple consiste à combiner les valeurs de vos données en calculant de nouvelles sommes ou moyennes, ce qu’on appelle l’*agrégation*. Les données résultantes sont appelées un *agrégat*.

La section suivante contient les bonnes pratiques et des exemples de construction de la structure JSON pour la politique.

## Conditions préalables
<a name="predictive-scaling-custom-metrics-prerequisites"></a>

Pour ajouter des métriques personnalisées à votre politique de mise à l'échelle, vous devez disposer des autorisations `cloudwatch:GetMetricData`.

Pour spécifier vos propres indicateurs au lieu des indicateurs AWS fournis, vous devez d'abord les publier sur CloudWatch. Pour plus d'informations, consultez la section [Publication de métriques personnalisées](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) dans le *guide de CloudWatch l'utilisateur Amazon*. 

Si vous publiez vos propres métriques, veillez à publier les points de données à une fréquence minimale de cinq minutes. Les points de données sont extraits CloudWatch en fonction de la durée de la période dont ils ont besoin. Par exemple, la spécification des métriques de charge utilise des métriques horaires pour mesurer la charge de votre application. CloudWatch utilise vos données métriques publiées pour fournir une valeur de données unique pour toute période d'une heure en agrégeant tous les points de données avec des horodatages correspondant à chaque période d'une heure.

## Bonnes pratiques
<a name="predictive-scaling-custom-metrics-best-practices"></a>

Les bonnes pratiques suivantes peuvent vous aider à utiliser plus efficacement les métriques personnalisées :
+ La métrique la plus utile pour la spécification de la métrique de charge est une métrique qui représente la charge sur un groupe Auto Scaling dans son ensemble.
+ La métrique la plus utile pour la spécification de la métrique de mise à l’échelle est le débit moyen ou l’utilisation moyenne par tâche.
+ L'utilisation cible doit correspondre au type de métrique de mise à l'échelle. Pour une configuration de stratégie qui utilise l’utilisation de l’UC, il s’agit par exemple d’un pourcentage cible.
+ Si ces recommandations ne sont pas suivies, les valeurs futures prédites des séries temporelles seront probablement incorrectes. Pour vérifier que les données sont correctes, vous pouvez afficher les valeurs prévues dans la console. Sinon, après avoir créé votre politique de dimensionnement prédictif, inspectez les `LoadForecast` objets renvoyés par un appel à l'[GetPredictiveScalingForecast](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_GetPredictiveScalingForecast.html)API.
+ Nous vous recommandons vivement de configurer la mise à l’échelle prédictive en mode « prévision uniquement » de manière à pouvoir évaluer les prévisions avant que la mise à l’échelle prédictive ne commence à s’appliquer activement.

## Limitations
<a name="predicitve-scaling-custom-metrics-limitations"></a>
+ Vous pouvez interroger des points de données de 10 métriques au maximum dans une spécification métrique.
+ Dans le cadre de cette limite, une expression compte pour une métrique.

## Résolution des problèmes liés à une stratégie de mise à l’échelle prédictive avec des métriques personnalisées
<a name="predictive-scaling-custom-metrics-troubleshooting"></a>

Si un problème survient lors de l'utilisation de métriques personnalisées, nous vous recommandons d'effectuer les opérations suivantes :
+ Si vous rencontrez un problème lors d'un blue/green déploiement lors de l'utilisation d'une expression de recherche, assurez-vous d'avoir créé une expression de recherche qui recherche une correspondance partielle et non une correspondance exacte. Vérifiez également que la requête ne s’applique qu’aux groupes Auto Scaling exécutés dans l’application spécifique. Pour plus d'informations sur la syntaxe des expressions de recherche, consultez la section [Syntaxe des expressions de CloudWatch recherche](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/search-expression-syntax.html) dans le *guide de CloudWatch l'utilisateur Amazon*.
+ La [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)commande valide une expression lorsque vous créez votre politique de dimensionnement. Cependant, il est possible que cette commande ne parvienne pas à identifier la cause exacte des erreurs détectées. Pour résoudre les problèmes, corrigez les erreurs que vous recevez en réponse à une demande de [get-metric-data](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/get-metric-data.html)commande. Vous pouvez également résoudre les problèmes liés à l'expression depuis la CloudWatch console.
+ Vous devez spécifier `false` pour `ReturnData` si `MetricDataQueries` spécifie la fonction SEARCH() seule sans une fonction mathématique comme SUM(). Cela est dû au fait que les expressions de recherche peuvent renvoyer plusieurs séries temporelles et qu'une spécification métrique basée sur une expression ne peut renvoyer qu'une seule séries temporelles.
+ Toutes les métriques impliquées dans une expression de recherche doivent avoir la même résolution.

# Structure du JSON pour les métriques personnalisées de mise à l’échelle prédictive avec Amazon ECS
<a name="predictive-scaling-custom-metrics-example"></a>

La section suivante contient des exemples de configuration de la mise à l'échelle prédictive pour interroger des données CloudWatch. Il existe deux méthodes pour configurer cette option, qui affecteront le format utilisé pour créer le fichier JSON de votre politique de mise à l'échelle prédictive. Lorsque vous utilisez des mathématiques de métriques, le format du fichier JSON varie davantage en fonction des mathématiques de métriques effectuées.

1. Pour créer une politique qui obtient des données directement à partir d'autres CloudWatch indicateurs fournis par AWS ou sur lesquels vous publiez CloudWatch, voir[Exemple de politique de dimensionnement prédictif avec des mesures de charge et de dimensionnement personnalisées à l'aide du AWS CLI](#predictive-scaling-custom-metrics-example1).

## Exemple de politique de dimensionnement prédictif avec des mesures de charge et de dimensionnement personnalisées à l'aide du AWS CLI
<a name="predictive-scaling-custom-metrics-example1"></a>

Pour créer une politique de dimensionnement prédictive avec des métriques de charge et de dimensionnement personnalisées avec le AWS CLI, stockez les arguments pour `--predictive-scaling-configuration` dans un fichier JSON nommé`config.json`.

Vous commencez par ajouter des métriques personnalisées en remplaçant les valeurs remplaçables de l'exemple suivant par celles de vos métriques et de votre utilisation cible.

```
{
  "MetricSpecifications": [
    {
      "TargetValue": 50,
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "scaling_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "MyUtilizationMetric",
                "Namespace": "MyNameSpace",
                "Dimensions": [
                  {
                    "Name": "MyOptionalMetricDimensionName",
                    "Value": "MyOptionalMetricDimensionValue"
                  }
                ]
              },
              "Stat": "Average"
            }
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "MyLoadMetric",
                "Namespace": "MyNameSpace",
                "Dimensions": [
                  {
                    "Name": "MyOptionalMetricDimensionName",
                    "Value": "MyOptionalMetricDimensionValue"
                  }
                ]
              },
              "Stat": "Sum"
            }
          }
        ]
      }
    }
  ]
}
```

Pour plus d'informations, consultez le [MetricDataQuery](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_MetricDataQuery.html)manuel *Amazon EC2 Auto Scaling API Reference*.

**Note**  
Voici quelques ressources supplémentaires qui peuvent vous aider à trouver des noms de métriques, des espaces de noms, des dimensions et des statistiques pour les CloudWatch métriques :   
Pour plus d'informations sur les métriques disponibles pour les AWS services, consultez les [AWS services qui publient CloudWatch des métriques](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) dans le *guide de CloudWatch l'utilisateur Amazon*.
Pour obtenir le nom, l'espace de noms et les dimensions exacts (le cas échéant) d'une CloudWatch métrique comportant le AWS CLI, consultez [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html). 

Pour créer cette politique, exécutez la [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html)commande en utilisant le fichier JSON comme entrée, comme illustré dans l'exemple suivant.

```
aws application-autoscaling put-scaling-policy --policy-name my-predictive-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
```

Si elle aboutit, cette commande renvoie l'Amazon Resource Name (ARN) de la stratégie.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-predictive-scaling-policy",
  "Alarms": []
}
```

# Utiliser des expressions mathématiques de métrique
<a name="predictive-scaling-math-expression"></a>

La section suivante fournit des informations sur l’utilisation des mathématiques de métriques avec les stratégies de mise à l’échelle prédictive dans votre stratégie. 

## Comprendre les mathématiques de métrique
<a name="predictive-scaling-custom-metrics-math"></a>

Si vous souhaitez simplement agréger des données métriques existantes, les mathématiques CloudWatch métriques vous évitent les efforts et les coûts liés à la publication d'une autre métrique dans CloudWatch. Vous pouvez utiliser n'importe quelle métrique qui AWS fournit, et vous pouvez également utiliser des métriques que vous définissez dans le cadre de vos applications.

Pour plus d'informations, consultez la section [Utilisation des mathématiques métriques](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) dans le *guide de CloudWatch l'utilisateur Amazon*. 

Si vous choisissez d'utiliser une expression mathématique de métrique dans votre politique de mise à l'échelle prédictive, tenez compte des points suivants :
+ Les opérations mathématiques métriques utilisent les points de données d'une combinaison unique de keys/value paires de métriques de nom, d'espace de noms et de dimensions. 
+ Vous pouvez utiliser n'importe quel opérateur arithmétique (\$1 - \$1/^), fonction statistique (telle que AVG ou SUM) ou toute autre fonction compatible. CloudWatch 
+ Vous pouvez utiliser à la fois des métriques et les résultats d'autres expressions mathématiques dans les formules de l'expression mathématique. 
+ Vos expressions mathématiques de métrique peuvent être composées de différentes agrégations. Cependant, une bonne pratique pour le résultat final de l'agrégation consiste à utiliser `Average` pour la métrique de mise à l'échelle et `Sum` pour la métrique de charge.
+ Toutes les expressions utilisées dans une spécification de métrique doivent finalement retourner une seule séries temporelles.

Pour utiliser les mathématiques de métrique, procédez comme suit :
+ Choisissez un ou plusieurs CloudWatch indicateurs. Créez ensuite l'expression. Pour plus d'informations, consultez la section [Utilisation des mathématiques métriques](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html) dans le *guide de CloudWatch l'utilisateur Amazon*. 
+ Vérifiez que l'expression mathématique de la métrique est valide à l'aide de la CloudWatch console ou de l' CloudWatch[GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html)API.

## Exemple de politique de mise à l'échelle prédictive qui combine des métriques à l'aide des mathématiques de métriques (AWS CLI)
<a name="custom-metrics-ex2"></a>

Parfois, au lieu de spécifier la métrique directement, vous devrez d'abord traiter ses données d'une certaine manière. Par exemple, une application peut extraire le travail d'une file d'attente Amazon SQS et vous souhaitez utiliser le nombre d'éléments dans la file d'attente comme critère de mise à l'échelle prédictive. Le nombre de messages dans la file d'attente ne définit pas uniquement le nombre d'instances dont vous avez besoin. Par conséquent, un travail supplémentaire est nécessaire pour créer une métrique qui peut être utilisée pour calculer le backlog par instance.

Ce qui suit est un exemple de politique de mise à l'échelle prédictive pour ce scénario. Il spécifie les métriques de mise à l'échelle et de charge qui sont basées sur la métrique `ApproximateNumberOfMessagesVisible` d'Amazon SQS, qui est le nombre de messages disponibles pour la récupération de la file d'attente. Il utilise également la métrique `GroupInServiceInstances` d'Amazon EC2 Auto Scaling et une expression mathématique pour calculer le backlog par instance pour la métrique de mise à l'échelle.

```
aws application-autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \
  --policy-type PredictiveScaling \
  --predictive-scaling-configuration file://config.json
  --service-namespace ecs \
  --resource-id service/MyCluster/test \
  "MetricSpecifications": [
    {
      "TargetValue": 100,
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Label": "Get the queue size (the number of messages waiting to be processed)",
            "Id": "queue_size",
            "MetricStat": {
              "Metric": {
                "MetricName": "ApproximateNumberOfMessagesVisible",
                "Namespace": "AWS/SQS",
                "Dimensions": [
                  {
                    "Name": "QueueName",
                    "Value": "my-queue"
                  }
                ]
              },
              "Stat": "Sum"
            },
            "ReturnData": false
          },
          {
            "Label": "Get the group size (the number of running instances)",
            "Id": "running_capacity",
            "MetricStat": {
              "Metric": {
                "MetricName": "GroupInServiceInstances",
                "Namespace": "AWS/AutoScaling",
                "Dimensions": [
                  {
                    "Name": "AutoScalingGroupName",
                    "Value": "my-asg"
                  }
                ]
              },
              "Stat": "Sum"
            },
            "ReturnData": false
          },
          {
            "Label": "Calculate the backlog per instance",
            "Id": "scaling_metric",
            "Expression": "queue_size / running_capacity",
            "ReturnData": true
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "load_metric",
            "MetricStat": {
              "Metric": {
                "MetricName": "ApproximateNumberOfMessagesVisible",
                "Namespace": "AWS/SQS",
                "Dimensions": [
                  {
                    "Name": "QueueName",
                    "Value": "my-queue"
                  }
                ],
              },
              "Stat": "Sum"
            },
            "ReturnData": true
          }
        ]
      }
    }
  ]
}
```

L'exemple renvoie l'ARN de la politique.

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy",
  "Alarms": []
}
```

# Interconnexion des services Amazon ECS
<a name="interconnecting-services"></a>

Les applications qui s'exécutent dans le cadre de tâches Amazon ECS ont souvent besoin de recevoir des connexions depuis Internet ou de se connecter à d'autres applications exécutées dans les services Amazon ECS. Si vous avez besoin de connexions externes depuis Internet, nous vous recommandons d'utiliser Elastic Load Balancing. Pour plus d'informations sur l'équilibrage de charge intégrée, consultez [Utilisation de l’équilibrage de charge pour répartir le trafic des services Amazon ECS](service-load-balancing.md).

Si vous avez besoin d'une application pour vous connecter à d'autres applications qui s'exécutent dans les services Amazon ECS, Amazon ECS propose les méthodes suivantes pour le faire sans équilibreur de charge :
+ *Amazon ECS Service Connect*

  Nous recommandons Service Connect, qui fournit une configuration Amazon ECS pour la découverte de service, la connectivité et la surveillance du trafic. Avec Service Connect, vos applications peuvent utiliser des noms abrégés et des ports standard pour se connecter aux services Amazon ECS dans le même cluster ou à d'autres clusters, y compris entre VPCs ceux-ci Région AWS.

  Lorsque vous utilisez Service Connect, Amazon ECS gère toutes les étapes de la découverte de services : création des noms susceptibles d’être découverts, gestion dynamique des entrées pour chaque tâche au démarrage et à l’arrêt des tâches, exécution d’un agent dans chaque tâche configuré pour découvrir les noms. Votre application peut rechercher les noms en utilisant les fonctionnalités standard pour les noms DNS et en établissant des connexions. Si votre application le fait déjà, vous n’avez pas besoin de modifier votre application pour utiliser Service Connect.

  Vous fournissez la configuration complète dans chaque définition de service et de tâche. Amazon ECS gère les modifications apportées à cette configuration lors de chaque déploiement de service, afin de garantir que toutes les tâches d’un déploiement se comportent de la même manière. Par exemple, un problème courant avec le DNS en tant que découverte de service est le contrôle d’une migration. Si vous modifiez un nom DNS pour qu’il pointe vers les nouvelles adresses IP de remplacement, le délai TTL maximal peut être nécessaire avant que tous les clients commencent à utiliser le nouveau service. Avec Service Connect, le déploiement du client met à jour la configuration en remplaçant les tâches du client. Vous pouvez configurer le disjoncteur de déploiement et toute autre configuration de déploiement pour affecter les modifications de Service Connect de la même manière que pour tout autre déploiement.

  Pour de plus amples informations, veuillez consulter [Utilisation de Service Connect pour connecter des services Amazon ECS avec des noms abrégés](service-connect.md).
+ *Découverte du service Amazon ECS*

  Une autre approche de service-to-service communication est la communication directe à l'aide de la découverte de services. Dans cette approche, vous pouvez utiliser l’intégration de la découverte de service AWS Cloud Map avec Amazon ECS. À l'aide de la découverte de services, Amazon ECS synchronise la liste des tâches lancées avec AWS Cloud Map, ce qui permet de conserver un nom d'hôte DNS qui correspond aux adresses IP internes d'une ou de plusieurs tâches provenant de ce service en particulier. D’autres services au sein d’Amazon VPC peuvent utiliser ce nom d’hôte DNS pour envoyer le trafic directement vers un autre conteneur en utilisant son adresse IP interne. 

  Cette approche de service-to-service communication permet une faible latence. Il n’y a aucun composant supplémentaire entre les conteneurs. Le trafic passe directement d’un conteneur à l’autre.

  Cette approche convient lorsque vous utilisez le mode réseau `awsvpc`, où chaque tâche possède sa propre adresse IP unique. La plupart des logiciels ne prennent en charge que l’utilisation d’enregistrements DNS `A`, qui se résolvent directement en adresses IP. Lorsque vous utilisez le mode réseau `awsvpc`, l’adresse IP de chaque tâche est un enregistrement `A`. Toutefois, si vous utilisez le mode réseau `bridge`, plusieurs conteneurs peuvent partager la même adresse IP. En outre, les mappages de ports dynamiques entraînent l’attribution aléatoire de numéros de port aux conteneurs sur cette adresse IP unique. À ce stade, un enregistrement `A` ne suffit plus pour la découverte de service. Vous devez également utiliser un enregistrement `SRV`. Ce type d’enregistrement permet de suivre à la fois les adresses IP et les numéros de port, mais nécessite que vous configuriez les applications de manière appropriée. Certaines applications prédéfinies que vous utilisez peuvent ne pas prendre en charge les enregistrements `SRV`.

  Un autre avantage du mode réseau `awsvpc` est que vous disposez d’un groupe de sécurité unique pour chaque service. Vous pouvez configurer ce groupe de sécurité pour autoriser les connexions entrantes provenant uniquement des services en amont spécifiques qui doivent communiquer avec ce service.

  Le principal inconvénient de la service-to-service communication directe utilisant la découverte de services est que vous devez implémenter une logique supplémentaire pour effectuer de nouvelles tentatives et faire face aux échecs de connexion. Les enregistrements DNS ont une période time-to-live (TTL) qui contrôle la durée pendant laquelle ils sont mis en cache. Il faut un certain temps pour que l’enregistrement DNS soit mis à jour et que le cache expire afin que vos applications puissent récupérer la dernière version de l’enregistrement DNS. Il se peut donc que votre application finisse par résoudre l’enregistrement DNS pour qu’il pointe vers un autre conteneur qui n’existe plus. Votre application doit gérer les nouvelles tentatives et avoir une logique lui permettant d’ignorer les mauvais dorsaux.

  Pour de plus amples informations, consultez [Utilisation de la découverte de service pour connecter les services Amazon ECS avec des noms DNS](service-discovery.md).
+ *Amazon VPC Lattice*

  Amazon VPC Lattice est un service de mise en réseau d'applications géré que les clients d'Amazon ECS utilisent pour observer, sécuriser et surveiller les applications créées à travers des services AWS informatiques et des comptes sans avoir à modifier leur code. VPCs

  VPC Lattice utilise des groupes cibles, qui sont un ensemble de ressources de calcul. Ces cibles exécutent votre application ou votre service et peuvent être des instances Amazon EC2, des adresses IP, des fonctions Lambda et des équilibreurs de charge d'application. En associant leurs services Amazon ECS à un groupe cible VPC Lattice, les clients peuvent désormais activer les tâches Amazon ECS en tant que cibles IP dans VPC Lattice. Amazon ECS enregistre automatiquement les tâches auprès du groupe cible VPC Lattice lorsque les tâches du service enregistré sont lancées.

  Pour de plus amples informations, veuillez consulter [Utilisez Amazon VPC Lattice pour connecter, observer et sécuriser vos services Amazon ECS](ecs-vpc-lattice.md).

## Tableau de compatibilité des modes réseau
<a name="interconnect-network-mode-compatibility-table"></a>

Le tableau suivant décrit la compatibilité entre ces options et les modes réseau des tâches. Dans le tableau, le terme « client » fait référence à l'application qui établit les connexions depuis une tâche Amazon ECS.


****  

| Options d'interconnexion | Pontée | `awsvpc` | Host (Hôte) | 
| --- | --- | --- | --- | 
| Découverte de service | oui, mais nécessite que les clients soient au courant des enregistrements SRV dans le DNS sans hostPort. | oui | oui, mais nécessite que les clients soient au courant des enregistrements SRV dans le DNS sans hostPort. | 
| Service Connect  | oui | oui | non | 
| Treillis en VPC | oui | oui | oui | 

# Utilisation de Service Connect pour connecter des services Amazon ECS avec des noms abrégés
<a name="service-connect"></a>

Amazon ECS Service Connect permet de gérer les service-to-service communications en tant que configuration Amazon ECS. Il crée à la fois la découverte de services et un maillage de services dans Amazon ECS. Il fournit la configuration complète de chaque service que vous gérez par le biais de déploiements de services, une manière unifiée de faire référence à vos services dans des espaces de noms qui ne dépendent pas de la configuration DNS du VPC, ainsi que des métriques et des journaux normalisés pour surveiller toutes vos applications. Service Connect n’interconnecte que les services.

Le schéma suivant montre un exemple de réseau Service Connect avec deux sous-réseaux dans le VPC et deux services. Un service client qui s'exécute WordPress avec une tâche dans chaque sous-réseau. Un service de serveur qui exécute MySQL avec une tâche dans chaque sous-réseau. Les deux services sont hautement disponibles et résilients aux problèmes liés aux tâches et aux zones de disponibilité, car chaque service exécute plusieurs tâches réparties sur deux sous-réseaux. Les flèches continues indiquent une connexion depuis WordPress MySQL. Par exemple, une commande `mysql --host=mysql` CLI exécutée depuis le WordPress conteneur dans la tâche avec l'adresse IP`172.31.16.1`. La commande utilise le nom abrégé `mysql` du port par défaut de MySQL. Ce nom et ce port se connectent au proxy Service Connect dans le cadre de la même tâche. Le proxy utilisé dans la WordPress tâche utilise l'équilibrage de charge circulaire et toutes les informations relatives aux défaillances précédentes pour détecter les valeurs aberrantes afin de sélectionner la tâche MySQL à laquelle se connecter. Comme le montrent les flèches pleines du schéma, le proxy se connecte au deuxième proxy de la tâche MySQL avec l'adresse IP `172.31.16.2`. Le second proxy se connecte au serveur MySQL local dans le cadre de la même tâche. Les deux proxys indiquent les performances de connexion qui sont visibles dans les graphiques des CloudWatch consoles Amazon ECS et Amazon afin que vous puissiez obtenir les mesures de performance de toutes sortes d'applications de la même manière.

![\[Exemple de réseau Service Connect affichant des services de haute disponibilité minimale\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/images/serviceconnect.png)


Les services suivants sont utilisés avec Service Connect.

**nom du port**  
Configuration de définition de tâche Amazon ECS qui attribue un nom à un mappage de port particulier. Cette configuration est uniquement utilisée par Amazon ECS Service Connect.

**alias du client**  
Configuration du service Amazon ECS qui attribue le numéro de port utilisé dans le point de terminaison. L'alias du client peut également attribuer le nom DNS du point de terminaison, en remplaçant le nom de découverte. Si aucun nom de découverte n'est fourni dans le service Amazon ECS, le nom d'alias du client remplace le nom du port comme nom de point de terminaison. Pour des exemples de points de terminaison, consultez la définition de *point de terminaison*. Plusieurs alias client peuvent être attribués à un service Amazon ECS. Cette configuration est uniquement utilisée par Amazon ECS Service Connect.

**nom de découverte**  
Nom intermédiaire facultatif que vous pouvez créer pour un port spécifié à partir de la définition de tâche. Ce nom est utilisé pour créer un AWS Cloud Map service. Si ce nom n'est pas fourni, le nom de port indiqué dans la définition de tâche est utilisé. Plusieurs noms de découverte peuvent être attribués à un port spécifique d'un service Amazon ECS. Cette configuration est uniquement utilisée par Amazon ECS Service Connect.  
AWS Cloud Map les noms de service doivent être uniques au sein d'un espace de noms. En raison de cette limitation, vous ne pouvez avoir qu'une seule configuration Service Connect sans nom de découverte pour une définition de tâche particulière dans chaque espace de noms.

**point de terminaison**  
URL permettant de se connecter à une API ou à un site Web. L'URL contient le protocole, un nom DNS et le port. Pour plus d'informations sur les points de terminaison en général, veuillez consulter [point de terminaison](https://docs.aws.amazon.com/glossary/latest/reference/glos-chap.html#endpoint) dans le *glossaire AWS * de la Référence générale d'Amazon Web Services(langue française non garantie).  
Service Connect crée des points de terminaison qui se connectent aux services Amazon ECS et configure les tâches des services Amazon ECS pour se connecter aux points de terminaison. L'URL contient le protocole, un nom DNS et le port. Vous sélectionnez le protocole et le nom du port dans la définition de la tâche, car le port doit correspondre à l'application qui se trouve dans l'image du conteneur. Dans le service, vous sélectionnez chaque port par son nom et vous pouvez attribuer le nom DNS. Si vous ne spécifiez pas de nom DNS dans la configuration du service Amazon ECS, le nom de port indiqué dans la définition de tâche est utilisé par défaut. Par exemple, un point de terminaison Service Connect pourrait être `http://blog:80`, `grpc://checkout:8080` ou `http://_db.production.internal:99`.

**Service Service Connect**  
Configuration d'un point de terminaison unique dans un service Amazon ECS. Cela fait partie de la configuration de Service Connect, qui se compose d'une seule ligne dans la **configuration de Service Connect et du nom de découverte** dans la console, ou d'un objet dans la liste `services` de la configuration JSON d'un service Amazon ECS. Cette configuration est uniquement utilisée par Amazon ECS Service Connect.  
Pour plus d'informations, consultez le [ServiceConnectService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html)manuel Amazon Elastic Container Service API Reference.

**espace de nom**  
Nom abrégé ou Amazon Resource Name (ARN) complet de l'espace de AWS Cloud Map noms à utiliser avec Service Connect. L'espace de noms doit être Région AWS identique à celui du service et du cluster Amazon ECS. Le type d'espace de noms dans AWS Cloud Map n'affecte pas Service Connect. L'espace de noms peut être partagé avec votre Compte AWS using AWS Resource Access Manager (AWS RAM) dans la mesure où Régions AWS il AWS RAM est disponible dans. Pour plus d’informations sur les espaces de noms partagés, consultez la section [Partage d’espaces de noms AWS Cloud Map entre comptes](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) dans le *Guide du développeur AWS Cloud Map *.  
Service Connect utilise l' AWS Cloud Map espace de noms comme un regroupement logique de tâches Amazon ECS qui communiquent entre elles. Chaque service Amazon ECS ne peut appartenir qu'à un seul espace de noms. Les services d’un espace de noms peuvent être répartis sur différents clusters Amazon ECS au sein d’une même Région AWS. Si l’espace de noms est un espace de noms partagé, les services peuvent être répartis entre le propriétaire et le consommateur de l’espace de noms Comptes AWS. Vous pouvez organiser librement les services selon n’importe quel critère.

**service client**  
Un service Amazon ECS qui exécute une application client réseau. Un espace de noms doit être configuré pour ce service. Chaque tâche du service peut découvrir et se connecter à tous les points de terminaison de l'espace de noms via un conteneur de proxy Service Connect.  
Si l'un des conteneurs de la tâche doit se connecter à un point de terminaison à partir d'un service situé dans un espace de noms, choisissez un service client. Si une application frontend, un proxy inverse ou une application d'équilibreur de charge reçoit du trafic externe via d'autres méthodes comme Elastic Load Balancing, elle peut utiliser ce type de configuration Service Connect.

**service client-serveur**  
Service Amazon ECS qui exécute une application service réseau ou web. Un espace de noms et au moins un point de terminaison doivent être configurés pour ce service. Chaque tâche du service est accessible à l'aide des points de terminaison. Le conteneur de proxy Service Connect écoute le nom et le port du point de terminaison pour diriger le trafic vers les conteneurs d'applications de la tâche.  
Si l'un des conteneurs expose et écoute le trafic réseau sur un port, choisissez un service client-serveur. Ces applications n’ont pas besoin de se connecter à d’autres services client-serveur dans le même espace de noms, mais la configuration du client est nécessaire. Un dorsal, un intergiciel, une couche entreprise ou la plupart des microservices utilisent ce type de configuration Service Connect. Si vous souhaitez qu'une application frontend, un proxy inverse ou une application d'équilibreur de charge reçoive du trafic provenant d'autres services configurés avec Service Connect dans le même espace de noms, ces services doivent utiliser ce type de configuration Service Connect.

La fonctionnalité Service Connect crée un réseau virtuel de services connexes. La même configuration de service peut être utilisée sur plusieurs espaces de noms différents pour exécuter des ensembles d'applications indépendants mais identiques. Service Connect définit le conteneur de proxy dans le service Amazon ECS. Ainsi, la même définition de tâche peut être utilisée pour exécuter des applications identiques dans différents espaces de noms avec des configurations Service Connect différentes. Chaque tâche réalisée par le service exécute un conteneur de proxy dans la tâche.

Service Connect convient aux connexions entre les services Amazon ECS au sein du même espace de noms. Pour les applications suivantes, vous devez utiliser une méthode d'interconnexion supplémentaire pour vous connecter à un service Amazon ECS configuré avec Service Connect :
+ Tâches configurées dans d’autres espaces de noms
+ Tâches qui ne sont pas configurées pour Service Connect
+ Autres applications en dehors d’Amazon ECS

Ces applications peuvent se connecter via le proxy Service Connect mais ne peuvent pas résoudre les noms des points de terminaison Service Connect.

Pour que ces applications puissent résoudre les adresses IP des tâches Amazon ECS, vous devez utiliser une autre méthode d’interconnexion. 

**Topics**
+ [Tarification](#service-connect-pricing)
+ [Composants d’Amazon ECS Service Connect](service-connect-concepts-deploy.md)
+ [Vue d’ensemble de la configuration d’Amazon ECS Service Connect](service-connect-concepts.md)
+ [Amazon ECS Service Connect avec espaces de AWS Cloud Map noms partagés](service-connect-shared-namespaces.md)
+ [Journaux d'accès Amazon ECS Service Connect](service-connect-envoy-access-logs.md)
+ [Chiffrement du trafic Amazon ECS Service Connect](service-connect-tls.md)
+ [Configuration d'Amazon ECS Service Connect avec AWS CLI](create-service-connect.md)

## Tarification
<a name="service-connect-pricing"></a>
+ La tarification d'Amazon ECS Service Connect varie selon que vous utilisez AWS Fargate ou non l'infrastructure Amazon EC2 pour héberger vos charges de travail conteneurisées. Lorsque vous utilisez Amazon ECS sur AWS Outposts, la tarification suit le même modèle que lorsque vous utilisez directement Amazon EC2. Pour plus d'informations, consultez [Tarification Amazon ECS](https://aws.amazon.com/ecs/pricing).
+ L’utilisation d’Amazon ECS Service Connect n’entraîne pas de frais supplémentaires.
+ Il n'y a aucun frais d' AWS Cloud Map utilisation supplémentaire lorsqu'il est utilisé par Service Connect.
+ Les clients paient pour les ressources de calcul utilisées par Amazon ECS Service Connect, notamment le vCPU et la mémoire. Étant donné que l’agent Amazon ECS Service Connect s’exécute dans une tâche client, son utilisation n’entraîne pas de frais supplémentaires. Les ressources de tâche sont partagées entre la charge de travail du client et l’agent Amazon ECS Service Connect.
+ Lorsqu'ils utilisent la fonctionnalité de chiffrement du trafic Amazon ECS Service Connect avec AWS CA privée, les clients paient pour l'autorité de certification privée qu'ils créent et pour chaque certificat TLS émis. Pour plus d’informations, consultez la section [Tarification AWS Autorité de certification privée](https://aws.amazon.com/private-ca/pricing/). Pour estimer le coût mensuel des certificats TLS, les clients doivent connaître le nombre de services Amazon ECS sur lesquels le protocole TLS est activé, le multiplier par le coût du certificat, puis le multiplier par six. Amazon ECS Service Connect faisant automatiquement alterner les certificats TLS tous les cinq jours, six certificats sont émis par service Amazon ECS, par mois, en moyenne.

# Composants d’Amazon ECS Service Connect
<a name="service-connect-concepts-deploy"></a>

Lorsque vous utilisez Amazon ECS Service Connect, vous configurez chaque service Amazon ECS pour exécuter une application serveur qui reçoit des requêtes réseau (service client-serveur) ou pour exécuter une application cliente qui fait les requêtes (service client).

Lorsque vous vous préparez à utiliser Service Connect, commencez par un service client-serveur. Vous pouvez ajouter une configuration Service Connect à un nouveau service ou à un service existant. Amazon ECS crée un point de terminaison Service Connect dans l’espace de noms. En outre, Amazon ECS crée un nouveau déploiement dans le service pour remplacer les tâches en cours d'exécution.

Les tâches existantes et les autres applications peuvent continuer à se connecter aux points de terminaison existants et aux applications externes. Si un service client-serveur ajoute des tâches par augmentation horizontale, les nouvelles connexions provenant des clients seront réparties de manière équilibrée entre toutes les tâches. Si un service client-serveur est mis à jour, les nouvelles connexions provenant des clients seront réparties de manière équilibrée entre les tâches de la nouvelle version.

Les tâches existantes ne peuvent pas être résolues et se connecter au nouveau point de terminaison. Seules les nouvelles tâches disposant d’une configuration Service Connect dans le même espace de noms et qui commencent à s’exécuter après ce déploiement peuvent résoudre et se connecter à ce point de terminaison. 

Cela signifie que l'opérateur de l'application cliente détermine quand la configuration de son application change, même si l'opérateur de l'application serveur peut modifier sa configuration à tout moment. La liste des points de terminaison dans l’espace de noms peut changer à chaque fois qu’un service de cet espace de noms est déployé. Les tâches existantes et les tâches de remplacement continuent de se comporter comme elles le faisaient après le déploiement le plus récent.

Considérez les exemples suivants.

Tout d'abord, supposons que vous créez une application disponible sur Internet public dans un seul AWS CloudFormation modèle et une seule CloudFormation pile. La découverte publique et l'accessibilité doivent être créées en dernier lieu CloudFormation, y compris le service client frontal. Les services doivent être créés dans cet ordre afin d'éviter toute période pendant laquelle le service client frontend fonctionne et est accessible au public, alors que le backend ne l'est pas. Cela permet d'éliminer l'envoi de messages d'erreur au public pendant cette période. Dans AWS CloudFormation, vous devez utiliser le `dependsOn` pour indiquer CloudFormation que plusieurs services Amazon ECS ne peuvent pas être créés en parallèle ou simultanément. Vous devez ajouter la valeur `dependsOn` au service client frontal pour chaque service backend client-serveur auquel les tâches clientes se connectent.

Ensuite, supposons qu'un service frontal existe sans configuration Service Connect. Les tâches se connectent à un service backend existant. Ajoutez d'abord une configuration Service Connect client-serveur au service backend, en utilisant le même nom dans le **DNS** ou `clientAlias` que celui utilisé par le frontend. Cela crée un nouveau déploiement, donc toutes les détections d'annulation du déploiement ou AWS Management Console AWS CLI, AWS SDKs et d'autres méthodes pour annuler et rétablir le service principal au déploiement et à la configuration précédents. Si vous êtes satisfait des performances et du comportement du service backend, ajoutez une configuration Service Connect client ou client-serveur au service frontal. Seules les tâches du nouveau déploiement utilisent le proxy Service Connect qui est ajouté à ces nouvelles tâches. Si vous rencontrez des problèmes avec cette configuration, vous pouvez revenir en arrière et revenir à votre configuration précédente en utilisant la détection de l'annulation du déploiement ou AWS Management Console d'autres méthodes pour restaurer et rétablir le service principal à son déploiement et à sa configuration précédents. AWS CLI AWS SDKs Si vous utilisez un autre système de découverte de services basé sur le DNS au lieu de Service Connect, toutes les applications frontales ou clientes commencent à utiliser de nouveaux points de terminaison et à modifier la configuration des points de terminaison après l'expiration du cache DNS local, ce qui prend généralement plusieurs heures.

## Réseaux
<a name="service-connect-concepts-network"></a>

Par défaut, le proxy Service Connect écoute sur le `containerPort` à partir du mappage de port de la définition de tâche. Les règles de votre groupe de sécurité doivent autoriser le trafic entrant (ingress) vers ce port depuis les sous-réseaux où les clients seront exécutés.

Même si vous définissez un numéro de port dans la configuration du service Service Connect, cela ne modifie pas le port du service client-serveur écouté par le proxy Service Connect. Lorsque vous définissez ce numéro de port, Amazon ECS modifie le port du point de terminaison auquel les services clients se connectent, sur le proxy Service Connect au sein de ces tâches. Le proxy du service client se connecte au proxy du service client-serveur à l'aide du `containerPort`.

Si vous souhaitez modifier le port sur lequel le proxy Service Connect écoute, modifiez le `ingressPortOverride` dans la configuration Service Connect du service client-serveur. Si vous modifiez ce numéro de port, vous devez autoriser le trafic entrant sur ce port utilisé par le trafic vers ce service.

Le trafic que vos applications envoient aux services Amazon ECS configurés pour Service Connect nécessite qu'Amazon VPC et les sous-réseaux disposent de règles de table de routage et de règles d'ACL réseau qui autorisent les numéros de port `containerPort` et `ingressPortOverride` que vous utilisez.

 Vous pouvez utiliser Service Connect pour envoyer du trafic entre deux VPCs. Les mêmes exigences relatives aux règles de table de routage, au réseau ACLs et aux groupes de sécurité s'appliquent aux deux VPCs.

Par exemple, deux clusters créent des tâches différentes VPCs. Un service dans chaque cluster est configuré pour utiliser le même espace de noms. Les applications dans ces deux services peuvent résoudre tous les points de terminaison de l'espace de noms sans aucune configuration DNS VPC. Cependant, les proxys ne peuvent pas se connecter à moins que les tables de routage VPC, le VPC ou les tables de routage de sous-réseau et le réseau ACLs VPC n'autorisent le trafic sur les numéros de port et. `containerPort` `ingressPortOverride`

Pour les tâches utilisant le mode réseau `bridge`, vous devez créer un groupe de sécurité doté d’une règle entrante autorisant le trafic sur la plage de ports dynamiques supérieure. Attribuez ensuite le groupe de sécurité à toutes les instances EC2 du cluster Service Connect.

## Proxy Service Connect
<a name="service-connect-concepts-proxy"></a>

Si vous créez ou mettez à jour un service avec la configuration Service Connect, Amazon ECS ajoute un nouveau conteneur à chaque nouvelle tâche au moment où elle est lancée. Ce modèle d'utilisation d'un conteneur séparé est nommé `sidecar`. Ce conteneur n'est pas présent dans la définition de la tâche et vous ne pouvez pas le configurer. Amazon ECS gère la configuration des conteneurs dans le service. Cela vous permet de réutiliser les mêmes définitions de tâches entre plusieurs services, espaces de noms et tâches sans Service Connect.

**Ressource de proxy**
+ Pour les définitions de tâches, vous devez définir les paramètres d’UC et de mémoire. 

  Nous vous recommandons d’ajouter 256 unités d’UC supplémentaires et au moins 64 Mio de mémoire à votre UC et à votre mémoire de tâche pour le conteneur proxy Service Connect. Dans AWS Fargate, la quantité de mémoire la plus faible que vous pouvez définir est de 512 Mio de mémoire. Sur Amazon EC2, la mémoire de définition des tâches est requise.
+ Pour le service, vous définissez la configuration du journal dans la configuration Service Connect.
+ Si vous prévoyez que les tâches de ce service reçoivent plus de 500 demandes par seconde à leur charge maximale, nous vous recommandons d'ajouter 512 unités de processeur à votre processeur de tâches dans cette définition de tâche pour le conteneur de proxy Service Connect.
+ Si vous prévoyez de créer plus de 100 services Service Connect dans l'espace de noms ou 2 000 tâches au total pour tous les services Amazon ECS dans l'espace de noms, nous vous recommandons d'ajouter 128 Mio de mémoire à votre mémoire de tâche pour le conteneur de proxy Service Connect. Vous devez le faire dans chaque définition de tâche utilisée par tous les services Amazon ECS dans l'espace de noms.

**Configuration du proxy**  
Vos applications se connectent au proxy dans le conteneur sidecar dans le cadre de la même tâche dans laquelle se trouve l'application. Amazon ECS configure la tâche et les conteneurs de telle sorte que les applications ne se connectent au proxy que lorsque l’application est connectée aux noms des points de terminaison dans le même espace de noms. Tout le reste du trafic n'utilise pas le proxy. L'autre trafic inclut les adresses IP du même VPC, les points de terminaison AWS de service et le trafic externe.

**Équilibrage de charge**  
Service Connect configure le proxy pour qu'il utilise la stratégie alternée pour équilibrer la charge entre les tâches d'un point de terminaison Service Connect. Le proxy local présent dans la tâche d'où provient la connexion choisit l'une des tâches du service client-serveur qui fournit le point de terminaison.  
Prenons l'exemple d'une tâche exécutée WordPress dans un service configuré en tant que *service client* dans un espace de noms appelé *local*. Il existe un autre service avec deux tâches qui exécutent la base de données MySQL. Ce service est configuré pour fournir un point de terminaison appelé `mysql` via Service Connect dans le même espace de noms. Dans WordPress cette tâche, l' WordPress application se connecte à la base de données en utilisant le nom du point de terminaison. Les connexions à ce nom sont redirigées vers le proxy qui s’exécute dans un conteneur sidecar dans la même tâche. Le proxy peut ensuite se connecter à l'une ou l'autre des tâches MySQL en utilisant la stratégie alternée.  
Stratégies d'équilibrage de charge : alternance

**Détection des valeurs aberrantes**  
Cette fonctionnalité utilise les données dont dispose le proxy concernant les échecs de connexion précédents pour éviter d'envoyer de nouvelles connexions aux hôtes dont les connexions ont échoué. Service Connect configure la fonctionnalité de détection des valeurs aberrantes du proxy afin de fournir des surveillances de l'état passives.  
En reprenant l’exemple précédent, le proxy peut se connecter à l’une ou l’autre des tâches MySQL. Si le proxy a établi plusieurs connexions à une tâche MySQL spécifique et que 5 connexions ou plus ont échoué au cours des 30 dernières secondes, le proxy évite cette tâche MySQL pendant 30 à 300 secondes.

**Nouvelles tentatives**  
Service Connect configure le proxy pour qu'il tente à nouveau la connexion qui passe par le proxy et échoue, et la deuxième tentative évite d'utiliser l'hôte de la connexion précédente. Cela garantit que chaque connexion via Service Connect n'échoue pas pour des raisons ponctuelles.  
Nombre de nouvelles tentatives : 2

**Timeout**  
Service Connect configure le proxy pour qu'il attende au maximum que vos applications client-serveur répondent. La valeur de délai d’attente par défaut est de 15 secondes, mais elle peut être mise à jour.  
Paramètres facultatifs :  
**idleTimeout** : durée en secondes pendant laquelle une connexion reste active lorsqu’elle est au repos. Une valeur de `0` désactive `idleTimeout`.  
La valeur par défaut de `idleTimeout` pour `HTTP`/`HTTP2`/`GRPC` est de cinq minutes.  
La valeur par défaut de `idleTimeout` pour `TCP` est d’une heure.  
**perRequestTimeout**‐ Le temps d'attente pour que l'amont réponde avec une réponse complète par demande. Une valeur de `0` désactive `perRequestTimeout`. Ce paramètre ne peut être défini que lorsque le protocole `appProtocol` du conteneur d’application est `HTTP`/`HTTP2`/`GRPC`. La valeur par défaut est de 15 secondes.  
Si `idleTimeout` est défini sur une durée inférieure à `perRequestTimeout`, la connexion se ferme lorsque le `idleTimeout` est atteint et non le `perRequestTimeout`.

## Considérations
<a name="service-connect-considerations"></a>

Tenez compte des éléments suivants lorsque vous utilisez Service Connect :
+ Les tâches exécutées dans Fargate doivent utiliser la version de plateforme Linux Fargate `1.4.0` ou supérieure pour pouvoir utiliser Service Connect.
+ La version de l’agent Amazon ECS sur l’instance de conteneur doit être la version `1.67.2` ou supérieure.
+ Les instances de conteneur doivent exécuter la version `20230428` ou une version ultérieure d'AMI Amazon Linux 2023 optimisée pour Amazon ECS, ou la version `2.0.20221115` d'AMI Amazon Linux 2 optimisée pour Amazon ECS pour utiliser Service Connect. Ces versions disposent de l'agent Service Connect en plus de l'agent de conteneur Amazon ECS. Pour plus d'informations sur l'agent Service Connect, consultez [Amazon ECS Service Connect Agent](https://github.com/aws/amazon-ecs-service-connect-agent) sur GitHub.
+ Les instances de conteneur doivent disposer de l'autorisation `ecs:Poll` pour la ressource `arn:aws:ecs:region:0123456789012:task-set/cluster/*`. Si vous utilisez le `ecsInstanceRole`, vous n'avez pas besoin d'ajouter d'autorisations supplémentaires. La stratégie gérée par `AmazonEC2ContainerServiceforEC2Role` dispose de ces autorisations. Pour de plus amples informations, veuillez consulter [Rôle IAM d'instance de conteneur Amazon ECS](instance_IAM_role.md).
+ Les tâches qui utilisent le mode réseau `bridge` et utilisent Service Connect ne prennent pas en charge le paramètre de définition du conteneur `hostname`.
+ Les définitions de tâches doivent définir la limite de mémoire des tâches pour utiliser Service Connect. Pour de plus amples informations, veuillez consulter [Proxy Service Connect](#service-connect-concepts-proxy).
+ Les définitions de tâches qui définissent les limites de mémoire des conteneurs ne sont pas prises en charge.

  Vous pouvez définir des limites de mémoire de conteneur sur vos conteneurs, mais vous devez définir la limite de mémoire des tâches sur un nombre supérieur à la somme des limites de mémoire des conteneurs. Le processeur et la mémoire supplémentaires inclus dans les limites de tâches que vous n'allouez pas dans les limites de conteneur sont utilisés par le conteneur de proxy Service Connect et les autres conteneurs qui ne définissent pas de limites de conteneur. Pour de plus amples informations, veuillez consulter [Proxy Service Connect](#service-connect-concepts-proxy).
+ Vous pouvez configurer Service Connect pour utiliser n'importe quel AWS Cloud Map espace de noms de la même région qui se trouve dans la même région Compte AWS ou qui est partagé avec vous Compte AWS . AWS Resource Access Manager Pour plus d’informations sur l’utilisation d’espaces de nom partagés, consultez la section [Amazon ECS Service Connect avec espaces de AWS Cloud Map noms partagés](service-connect-shared-namespaces.md).
+ Chaque service ne peut appartenir qu’à un seul espace de noms.
+ Seules les tâches créées par les services sont prises en charge. 
+ Tous les points de terminaison doivent être uniques dans un espace de noms.
+ Tous les noms de découverte doivent être uniques dans un espace de noms.
+ Vous devez redéployer les services existants avant que les applications puissent résoudre les nouveaux points de terminaison. Les nouveaux points de terminaison ajoutés à l'espace de noms après le déploiement le plus récent ne seront pas ajoutés à la configuration de la tâche. Pour de plus amples informations, veuillez consulter [Composants d’Amazon ECS Service Connect](#service-connect-concepts-deploy).
+ Service Connect ne supprime pas les espaces de noms lorsque les clusters sont supprimés. Vous devez supprimer les espaces de noms dans. AWS Cloud Map
+ Le trafic de l’Application Load Balancer est acheminé par défaut via l’agent Service Connect en mode réseau `awsvpc`. Si vous souhaitez que le trafic non lié au service contourne l’agent Service Connect, utilisez le paramètre `[ingressPortOverride](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html)` dans la configuration de votre service Service Connect.
+ Service Connect avec TLS ne prend pas en charge le mode réseau `bridge`. Seul le mode réseau `awsvpc` est pris en charge.
+ En `awsvpc` mode, le proxy Service Connect transmet le trafic vers l' IPv4 hôte local `127.0.0.1` pour les services dans des IPv4 configurations à double pile ou uniquement. Pour les services en configuration «  IPv6 -only », le proxy transmet le trafic vers l'hôte IPv6 local`::1`. Nous vous recommandons de configurer vos applications de manière à écouter les deux hôtes locaux pour une expérience fluide lorsqu'un service passe d'une configuration IPv4 -only ou dualstack à -only. IPv6 Pour plus d’informations, consultez [Options de mise en réseau des tâches Amazon ECS pour EC2](task-networking.md) et [Options de mise en réseau des tâches Amazon ECS pour Fargate](fargate-task-networking.md).

**Service Connect ne prend pas en charge les fonctionnalités suivantes :**
+ Conteneurs Windows
+ HTTP 1.0
+ Tâches autonomes
+ Services utilisant les types de déploiement blue/green alimenté par CodeDeploy et externe
+ L'instance de conteneur `External` pour Amazon ECS Anywhere n'est pas prise en charge par Service Connect.
+ PPv2
+ Mode FIPS

# Vue d’ensemble de la configuration d’Amazon ECS Service Connect
<a name="service-connect-concepts"></a>

Lorsque vous utilisez Service Connect, vous devez configurer certains paramètres dans vos ressources. 

Le tableau suivant décrit les paramètres de configuration pour les ressources Amazon ECS.


| Emplacement des paramètres | Type d'application | Description | Obligatoire | 
| --- | --- | --- | --- | 
| Définition de tâche | Client | Aucune modification n'est disponible pour Service Connect dans les définitions des tâches du client. | N/A | 
| Définition de tâche | Client-serveur | Les serveurs doivent ajouter des champs de name aux ports dans les portMappings des conteneurs. Pour de plus amples informations, consultez [portMappings](task_definition_parameters.md#ContainerDefinition-portMappings). | Oui | 
| Définition de tâche | Client-serveur | Les serveurs peuvent éventuellement fournir un protocole d'application (par exemple, HTTP) pour recevoir des métriques spécifiques au protocole pour leurs applications serveur (par exemple, HTTP 5xx). | Non | 
| Définition des services | Client | Les services clients doivent ajouter une serviceConnectConfiguration pour configurer l'espace de noms à rejoindre. Cet espace de noms doit contenir tous les services de serveur que ce service doit découvrir. Pour de plus amples informations, veuillez consulter [serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration). | Oui | 
| Définition des services | Client-serveur | Les services de serveur doivent ajouter une serviceConnectConfiguration pour configurer les noms DNS, les numéros de port et l'espace de noms à partir desquels le service est disponible. Pour de plus amples informations, veuillez consulter [serviceConnectConfiguration](service_definition_parameters.md#Service-serviceConnectConfiguration). | Oui | 
| Cluster | Client | Les clusters peuvent ajouter un espace de noms Service Connect par défaut. Les nouveaux services du cluster héritent de l'espace de noms lorsque Service Connect est configuré dans un service.  | Non | 
| Cluster | Client-serveur | Aucune modification n'est disponible pour Service Connect dans les clusters qui s'appliquent aux services de serveur. Les définitions de tâches de serveur et les services doivent définir la configuration correspondante. | N/A | 

**Vue d'ensemble des étapes de configuration de Service Connect**  
Les étapes suivantes présentent la configuration de Service Connect.

**Important**  
 Service Connect crée AWS Cloud Map des services dans votre compte. La modification manuelle de ces AWS Cloud Map ressources par le biais d' registering/deregistering instances, la modification des attributs d'instance ou la suppression d'un service peuvent entraîner un comportement inattendu pour le trafic de votre application ou pour les déploiements ultérieurs.
 Service Connect ne prend pas en charge les liens dans la définition des tâches.

1. Ajoutez des noms de port aux mappages de port dans vos définitions de tâches. Vous pouvez également identifier le protocole de couche 7 de l'application afin d'obtenir des métriques supplémentaires.

1. Créez un cluster avec un espace de AWS Cloud Map noms, utilisez un espace de noms partagé ou créez l'espace de noms séparément. Pour simplifier l’organisation, créez un cluster avec le nom que vous souhaitez pour l’espace de noms et spécifiez le même nom pour l’espace de noms. Dans ce cas, Amazon ECS crée un nouvel espace de noms HTTP avec la configuration nécessaire. Service Connect n’utilise ni ne crée de zones hébergées DNS dans Amazon Route 53.

1. Configurez les services pour créer des points de terminaison Service Connect dans l'espace de noms.

1. Déployez des services pour créer les points de terminaison. Amazon ECS ajoute un conteneur de proxy Service Connect à chaque tâche et crée les points de terminaison Service Connect dans AWS Cloud Map. Ce conteneur n'est pas configuré dans la définition de tâche, et cette dernière peut être réutilisée sans modification pour créer plusieurs services dans le même espace de noms ou dans plusieurs espaces de noms.

1. Déployez des applications clientes en tant que services pour vous connecter aux points de terminaison. Amazon ECS les connecte aux points de terminaison Service Connect par le proxy Service Connect dans chaque tâche.

   Les applications utilisent le proxy uniquement pour se connecter aux points de terminaison Service Connect. Il n'existe aucune configuration supplémentaire pour utiliser le proxy. Le proxy effectue un équilibrage de charge alterné, une détection des valeurs aberrantes et de nouvelles tentatives. Pour plus d'informations sur le proxy, veuillez consulter [Proxy Service Connect](service-connect-concepts-deploy.md#service-connect-concepts-proxy).

1. Surveillez le trafic via le proxy Service Connect sur Amazon CloudWatch.

## Configuration du cluster
<a name="service-connect-concepts-cluster-defaults"></a>

Vous pouvez définir un espace de noms par défaut pour Service Connect lorsque vous créez ou mettez à jour le cluster. Le nom de l'espace de noms que vous spécifiez par défaut peut se trouver soit dans le même Région AWS compte, soit dans le même Région AWS et partagé par un autre utilisateur Compte AWS . AWS Resource Access Manager

Si vous créez un cluster et que vous spécifiez un espace de noms Service Connect par défaut, le cluster attend dans l'état `PROVISIONING` pendant qu'Amazon ECS crée l'espace de noms. Vous pouvez voir un `attachment` dans l'état du cluster qui indique l'état de l'espace de noms. Les pièces jointes ne sont pas affichées par défaut dans le AWS CLI, vous devez les ajouter `--include ATTACHMENTS` pour les voir.

Si vous souhaitez utiliser un espace de noms partagé avec vos Compte AWS utilisateurs AWS RAM, spécifiez l'Amazon Resource Name (ARN) de l'espace de noms dans la configuration du cluster. Pour plus d'informations sur les AWS Cloud Map espaces de noms partagés, consultez[Amazon ECS Service Connect avec espaces de AWS Cloud Map noms partagés](service-connect-shared-namespaces.md).

## Configuration du service
<a name="service-connect-concepts-config"></a>

Service Connect est conçu pour nécessiter une configuration minimale. Vous devez définir un nom pour chaque mappage de port que vous souhaitez utiliser avec Service Connect dans la définition de tâche. Dans le service, vous devez activer Service Connect et sélectionner un espace de noms dans votre espace de noms Compte AWS ou un espace de noms partagé pour créer un service client. Pour créer un service client-serveur, vous devez ajouter une configuration de service Service Connect unique qui correspond au nom de l'un des mappages de port. Amazon ECS réutilise le numéro de port et le nom de port figurant dans la définition de tâche pour définir le service et le point de terminaison Service Connect. Pour remplacer ces valeurs, vous pouvez utiliser les autres paramètres **Discovery** (Découverte), **DNS** et **Port** dans la console ou `discoveryName` et `clientAliases`, respectivement, dans l'API Amazon ECS.

## Configuration initiale du Health Check
<a name="service-connect-concepts-health-check"></a>

Service Connect garantit l'intégrité des tâches avant d'acheminer le trafic vers celles-ci. Lorsqu'une tâche est lancée (lors des déploiements, du dimensionnement ou des remplacements), Service Connect surveille l'état de votre tâche pour s'assurer qu'elle est prête à accepter du trafic. Vous devez définir des contrôles de santé pour le conteneur essentiel dans votre définition de tâche pour activer ce comportement.

Le comportement du bilan de santé initial tient compte des retards potentiels avant d'atteindre l'état où une tâche est prête à accepter du trafic :
+ Si une tâche l'est`HEALTHY`, elle est immédiatement disponible pour le trafic.
+ Si l'état d'une tâche est bon`UNKNOWN`, Service Connect suit la configuration de vérification de l'état des conteneurs (voir[Surveillance de l'état](task_definition_parameters.md#container_definition_healthcheck)) des conteneurs essentiels de la tâche afin de calculer un délai d'attente, jusqu'à`8 minutes`, avant de le mettre à la disposition du trafic, même s'il persiste`UNKNOWN`.
+ Si c'est le cas`UNHEALTHY`, Amazon ECS peut lancer des tâches de remplacement. Si aucune tâche saine n'est disponible, votre déploiement peut être annulé en fonction de la configuration de votre service.

Pour l'ensemble du trafic en cours, Service Connect utilise des contrôles de santé passifs basés sur la détection des valeurs aberrantes afin d'acheminer le trafic de manière efficace.

# Amazon ECS Service Connect avec espaces de AWS Cloud Map noms partagés
<a name="service-connect-shared-namespaces"></a>

Amazon ECS Service Connect prend en charge l'utilisation d' AWS Cloud Map espaces de noms partagés sur plusieurs sites Comptes AWS au sein d'un même Région AWS site. Cette fonctionnalité vous permet de créer des applications distribuées dans lesquelles des services exécutés dans différents environnements Comptes AWS peuvent se découvrir et communiquer entre eux via Service Connect. Les espaces de noms partagés sont gérés à l’aide d’ AWS Resource Access Manager (AWS RAM), qui permet un partage sécurisé des ressources entre comptes. *Pour plus d'informations sur les espaces de noms partagés, consultez la section [Partage d'espaces de AWS Cloud Map noms entre comptes](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) dans le Guide du AWS Cloud Map développeur.*

**Important**  
Vous devez utiliser l’autorisation gérée `AWSRAMPermissionCloudMapECSFullPermission` pour partager l’espace de noms afin que Service Connect fonctionne correctement avec l’espace de noms.

Lorsque vous utilisez des AWS Cloud Map espaces de noms partagés avec Service Connect, les services de plusieurs utilisateurs Comptes AWS peuvent participer au même espace de noms de service. Cela est particulièrement utile pour les organisations qui en ont plusieurs et Comptes AWS qui ont besoin de maintenir service-to-service la communication au-delà des limites de leurs comptes tout en préservant la sécurité et l'isolation.

**Note**  
Pour communiquer avec des services situés dans des environnements différents VPCs, vous devez configurer la connectivité inter-VPC. Cela peut être réalisé à l’aide d’une connexion d’appairage de VPC. Pour plus d’informations, consultez la section [Création ou suppression d’une connexion d’appairage de VPC](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html) dans le *Guide d’appairage de VPC Amazon Virtual Private Cloud*.

# Utilisation d' AWS Cloud Map espaces de noms partagés avec Amazon ECS Service Connect
<a name="service-connect-shared-namespaces-setup"></a>

La configuration d' AWS Cloud Map espaces de noms partagés pour Service Connect implique les étapes suivantes : le propriétaire de l'espace de noms crée l'espace de noms, le propriétaire le partage via AWS Resource Access Manager (AWS RAM), le consommateur accepte le partage des ressources et le consommateur configure Service Connect pour utiliser l'espace de noms partagé.

## Étape 1 : Création de l'espace de AWS Cloud Map noms
<a name="service-connect-shared-namespaces-create"></a>

Le propriétaire de l'espace de noms crée un AWS Cloud Map espace de noms qui sera partagé avec d'autres comptes.

**Pour créer un espace de noms à partager à l'aide du AWS Management Console**

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

1. Choisissez **Create namespace (Créer un espace de noms)**.

1. Saisissez un **Nom d’espace de noms**. Ce nom sera utilisé par les services sur tous les comptes participants.

1. Pour **Type d’espace de noms**, choisissez le type adapté à votre cas d’utilisation :
   + **Appels d’API** : espaces de noms HTTP pour la découverte de service sans fonctionnalité DNS.
   + **Appels d'API et requêtes DNS dans VPCs** des espaces de noms DNS privés pour la découverte de services avec des requêtes DNS privées dans un VPC.
   + **Appels d’API et requêtes DNS publiques** : espaces de noms DNS publics pour la découverte de service avec des requêtes DNS publiques.

1.  Choisissez **Create namespace (Créer un espace de noms)**.

## Étape 2 : partager l'espace de noms en utilisant AWS RAM
<a name="service-connect-shared-namespaces-share"></a>

Le propriétaire de l'espace de noms utilise AWS RAM pour partager l'espace de noms avec d'autres. Comptes AWS

**Pour partager un espace de noms à l'aide de la console AWS RAM**

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

1. Choisissez **Créer une ressource**.

1. Sous **Nom**, saisissez un nom descriptif pour le partage de ressources.

1. Dans la section **Ressources** :

   1. Pour **Type de ressource**, choisissez **Espaces de noms Cloud Map**.

   1. Sélectionnez l’espace de noms que vous avez créé à l’étape précédente.

1. Dans la section **Autorisations gérées**, spécifiez **AWSRAMPermissionCloudMapECSFullAutorisation**.
**Important**  
Vous devez utiliser l’autorisation gérée `AWSRAMPermissionCloudMapECSFullPermission` pour partager l’espace de noms afin que Service Connect fonctionne correctement avec l’espace de noms.

1. Dans la section **Principaux**, spécifiez l’ Comptes AWS avec lequel vous souhaitez partager l’espace de noms. Vous pouvez saisir un compte IDs ou une unité organisationnelle IDs.

1. Choisissez **Créer une ressource**.

## Étape 3 : accepter le partage de ressources
<a name="service-connect-shared-namespaces-accept"></a>

Les comptes consommateurs d’espaces de noms doivent accepter l’invitation de partage de ressources pour utiliser l’espace de noms partagé.

**Pour accepter une invitation de partage de ressources à l'aide de la AWS RAM console**

1. Dans le compte client, ouvrez la AWS RAM console à l'adresse [https://console.aws.amazon.com/ram/](https://console.aws.amazon.com/ram/).

1. Dans le volet de navigation, choisissez **Partagé avec moi**, puis **Partages de ressources**.

1. Sélectionnez l’invitation au partage de ressources, puis choisissez **Accepter le partage de ressources**.

1. Après avoir accepté, notez l’ARN de l’espace de noms partagé dans les détails de la ressource. Vous utiliserez cet ARN lors de la configuration des services Service Connect.

## Étape 4 : configurer un service Amazon ECS avec un espace de noms partagé
<a name="service-connect-shared-namespaces-configure"></a>

Après avoir accepté l’espace de noms partagé, le consommateur de l’espace de noms peut configurer les services Amazon ECS pour utiliser l’espace de noms partagé. La configuration est similaire à l’utilisation d’un espace de noms normal, mais vous devez spécifier l’ARN de l’espace de noms au lieu du nom. Pour une procédure détaillée de création de service, consultez la section [Création d’un déploiement de mise à jour propagée Amazon ECS](create-service-console-v2.md).

**Pour créer un service avec un espace de noms partagé à l'aide du AWS Management Console**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, sélectionnez le cluster dans lequel créer le service.

1. Sous **Services**, choisissez **Créer**.

1. Après avoir renseigné d’autres informations en fonction de votre charge de travail, dans la section **Service Connect**, sélectionnez **Utiliser Service Connect**.

1. Pour **Espace de noms**, saisissez l’ARN complet de l’espace de noms partagé.

   Le format ARN est le suivant : `arn:aws:servicediscovery:region:account-id:namespace/namespace-id`

1. Configurez les autres paramètres Service Connect selon les besoins de votre type de service (client ou client-serveur).

1. Terminez le processus de création de service.

Vous pouvez également configurer les services à l'aide du AWS CLI ou AWS SDKs en spécifiant l'ARN de l'espace de noms partagé dans le `namespace` paramètre du`serviceConnectConfiguration`.

```
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-task-def \
    --service-connect-configuration '{
        "enabled": true,
        "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-abcdef1234567890",
        "services": [{
            "portName": "web",
            "discoveryName": "my-service",
            "clientAliases": [{
                "port": 80,
                "dnsName": "my-service"
            }]
        }]
    }'
```

## Considérations
<a name="service-connect-shared-namespaces-considerations"></a>

Tenez compte des points suivants lorsque vous utilisez des AWS Cloud Map espaces de noms partagés avec Service Connect :
+ AWS RAM doit être disponible dans l' Région AWS endroit où vous souhaitez utiliser l'espace de noms partagé.
+ L'espace de noms partagé doit être Région AWS identique à celui de vos services et clusters Amazon ECS.
+ Vous devez utiliser l’ARN de l’espace de noms, et non l’ID, lorsque vous configurez Service Connect avec un espace de noms partagé.
+ Tous les types d’espaces de noms sont pris en charge : espaces de noms HTTP, DNS privé et DNS public.
+ Si l’accès à un espace de noms partagé est révoqué, les opérations Amazon ECS qui nécessitent une interaction avec l’espace de noms (telles que `CreateService`, `UpdateService` et `ListServicesByNamespace`) échoueront. Pour plus d’informations sur la résolution des problèmes d’autorisation liés aux espaces de noms partagés, consultez la section [Résolution des problèmes liés à Amazon ECS Service Connect avec des espaces de AWS Cloud Map noms partagés](service-connect-shared-namespaces-troubleshooting.md).
+ Pour la découverte de service à l’aide de requêtes DNS dans un espace de noms DNS privé partagé :
  + Le propriétaire de l’espace de noms devra appeler `create-vpc-association-authorization` avec l’ID de la zone hébergée privée associée à l’espace de noms et le VPC du consommateur.

    ```
    aws route53 create-vpc-association-authorization --hosted-zone-id Z1234567890ABC --vpc VPCRegion=us-east-1,VPCId=vpc-12345678
    ```
  + Le consommateur de l’espace de noms devra appeler `associate-vpc-with-hosted-zone` avec l’ID de la zone hébergée privée.

    ```
    aws route53 associate-vpc-with-hosted-zone --hosted-zone-id Z1234567890ABC --vpc VPCRegion=us-east-1,VPCId=vpc-12345678
    ```
+ Seul le propriétaire de l’espace de noms peut gérer le partage des ressources.
+ Les consommateurs de l’espace de noms peuvent créer et gérer des services au sein de l’espace de noms partagé, mais ne peuvent pas modifier l’espace de noms lui-même.
+ Les noms de découverte doivent être uniques dans l’espace de noms partagé, quel que soit le compte qui crée le service.
+ Les services de l'espace de noms partagé peuvent découvrir les services d'autres AWS comptes ayant accès à l'espace de noms et s'y connecter.
+ Lorsque vous activez TLS pour Service Connect et utilisez un espace de noms partagé, l’autorité de certification (CA) AWS CA privée est limitée à l’espace de noms. Lorsque l’accès à l’espace de noms partagé est révoqué, l’accès à l’autorité de certification est interrompu.
+ Lorsqu'ils travaillent avec un espace de noms partagé, les propriétaires et les consommateurs d'espaces de noms n'ont pas accès par défaut aux métriques CloudWatch Amazon entre comptes. Les métriques cibles sont publiées uniquement pour les comptes qui possèdent des services clients. Un compte propriétaire de services client n'a pas accès aux statistiques reçues par un compte propriétaire de services client-serveur, et inversement. Pour permettre l'accès aux métriques entre comptes, configurez l'observabilité CloudWatch entre comptes. *Pour plus d'informations sur la configuration de l'observabilité entre comptes, consultez la section Observabilité [CloudWatch entre comptes dans le guide](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html) de l'utilisateur Amazon. CloudWatch * Pour plus d'informations sur les CloudWatch métriques de Service Connect, consultez[CloudWatch Métriques Amazon ECS](available-metrics.md).

# Résolution des problèmes liés à Amazon ECS Service Connect avec des espaces de AWS Cloud Map noms partagés
<a name="service-connect-shared-namespaces-troubleshooting"></a>

Utilisez les informations suivantes pour résoudre les problèmes liés aux AWS Cloud Map espaces de noms partagés et à Service Connect. Pour plus d’informations sur la localisation des messages d’erreur, consultez la section [Résolution des problèmes liés à Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshooting.html).

Des messages d’erreur liés à des problèmes d’autorisations apparaissent en raison d’autorisations manquantes ou si l’accès à l’espace de noms est révoqué. 

**Important**  
Vous devez utiliser l’autorisation gérée `AWSRAMPermissionCloudMapECSFullPermission` pour partager l’espace de noms afin que Service Connect fonctionne correctement avec l’espace de noms.

Le message d’erreur apparaît dans l’un des formats suivants :

Une erreur s'est produite (ClientException) lors de l'appel de l'opération < OperationName > : L'utilisateur : arn:aws:iam : ::user/ n'est pas autorisé à effectuer : < > sur la ressource : < > ResourceArn car aucune politique basée ActionName sur les ressources n'autorise l'action < > ActionName <account-id><user-name>

Les scénarios suivants peuvent générer un message d’erreur dans ce format :

**Échec de création ou de mise à jour du cluster**  
Ces problèmes se produisent lorsque des opérations Amazon ECS telles que l'`UpdateCluster`échec `CreateCluster` ou l'échec sont dues à AWS Cloud Map des autorisations manquantes. Les opérations nécessitent des autorisations pour les AWS Cloud Map actions suivantes :  
+ `servicediscovery:GetNamespace`
Assurez-vous que l’invitation à partager la ressource a été acceptée dans le compte consommateur et que l’ARN correct de l’espace de noms est utilisé dans la configuration Service Connect.

**Échec de création ou de mise à jour du service**  
Ces problèmes se produisent lorsque des opérations Amazon ECS telles que l'`UpdateService`échec `CreateService` ou l'échec sont dues à AWS Cloud Map des autorisations manquantes. Les opérations nécessitent des autorisations pour les AWS Cloud Map actions suivantes :  
+ `servicediscovery:CreateService`
+ `servicediscovery:GetNamespace`
+ `servicediscovery:GetOperation` (pour créer un nouveau service AWS Cloud Map )
+ `servicediscovery:GetService` (lorsqu’un service AWS Cloud Map existe déjà)
Assurez-vous que l’invitation à partager la ressource a été acceptée dans le compte consommateur et que l’ARN correct de l’espace de noms est utilisé dans la configuration Service Connect.

**Échec de l’opération `ListServicesByNamespace`**  
Ce problème se produit lorsque l’opération Amazon ECS `ListServicesByNamespace` échoue. L’opération nécessite des autorisations pour les actions AWS Cloud Map suivantes :  
+ `servicediscovery:GetNamespace`
Pour résoudre ce problème :  
+ Vérifiez que le compte consommateur dispose de l’autorisation `servicediscovery:GetNamespace`.
+ Utilisez l’ARN de l’espace de noms lorsque vous appelez l’API, et pas le nom.
+ Assurez-vous que le partage de ressources est actif et que l’invitation a été acceptée.

Utilisateur : n'est pas autorisé à effectuer : < ActionName > sur la ressource : < ResourceArn > avec un refus explicite dans une politique basée sur l'identité. <iam-user>

Les scénarios suivants peuvent générer un message d’erreur dans ce format :

**La suppression du service échoue et reste bloquée dans l’état `DRAINING`**  
Ce problème se produit lorsque les opérations Amazon ECS `DeleteService` échouent en raison d’une autorisation `servicediscovery:DeleteService` manquante lorsque l’accès à l’espace de noms est révoqué. Le service peut sembler avoir été supprimé avec succès au départ, mais il restera bloqué dans l’état `DRAINING`. Le message d’erreur apparaît sous la forme d’un événement de service Amazon ECS.  
Pour résoudre ce problème, le propriétaire de l’espace de noms doit partager l’espace de noms avec le compte consommateur afin de permettre la suppression du service.

**Les tâches en service ne s’exécutent pas**  
Ce problème se produit lorsque les tâches ne démarrent pas en raison d’autorisations manquantes. Le message d’erreur apparaît sous la forme d’une erreur de tâche arrêtée. Pour de plus amples informations, veuillez consulter [Résolution des erreurs liées aux tâches Amazon ECS arrêtées](resolve-stopped-errors.md).  
Les AWS Cloud Map actions suivantes sont requises pour exécuter une tâche :  
+ `servicediscovery:GetOperation`
+ `servicediscovery:RegisterInstance`
Assurez-vous que le compte consommateur dispose des autorisations requises et que l’espace de noms partagé est accessible.

**Les tâches ne s’arrêtent pas correctement ou restent bloquées dans l’état `DEACTIVATING` ou `DEPROVISIONING`**  
Ce problème se produit lorsque les tâches ne parviennent pas à se désenregistrer du AWS Cloud Map service pendant l'arrêt en raison d'autorisations manquantes. L’erreur apparaît sous la forme d’un `statusReason` dans la pièce jointe de la tâche, qui peut être récupérée à l’aide de l’API `DescribeTasks`. Pour plus d'informations, consultez le [DescribeTasks](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)manuel *Amazon Elastic Container Service API Reference*.  
Les AWS Cloud Map actions suivantes sont requises pour arrêter une tâche :  
+ `servicediscovery:DeregisterInstance`
+ `servicediscovery:GetOperation`
Si l’accès à l’espace de noms partagé est révoqué, les tâches peuvent rester dans l’état `DEACTIVATING` ou `DEPROVISIONING` jusqu’à ce que l’accès à l’espace de noms soit rétabli. Demandez au propriétaire de l’espace de noms de rétablir l’accès à l’espace de noms.

# Journaux d'accès Amazon ECS Service Connect
<a name="service-connect-envoy-access-logs"></a>

Amazon ECS Service Connect prend en charge les journaux d'accès afin de fournir une télémétrie détaillée sur les demandes individuelles traitées par le proxy Service Connect. Les journaux d'accès complètent les journaux d'applications existants en capturant les métadonnées du trafic par demande, telles que les méthodes HTTP, les chemins, les codes de réponse, les indicateurs et les informations temporelles. Cela permet une meilleure observabilité des modèles de trafic au niveau des demandes et des interactions entre les services pour un dépannage et une surveillance efficaces.

Pour activer les journaux d'accès, spécifiez à la fois `accessLogConfiguration` les objets `logConfiguration` et dans l'`serviceConnectConfiguration`objet. Vous pouvez configurer le format des journaux et indiquer si les journaux doivent inclure des paramètres de requête dans le`accessLogConfiguration`. Les journaux sont envoyés au groupe de journaux de destination par le pilote de journal spécifié dans le`logConfiguration`.

```
{
    "serviceConnectConfiguration": {
        "enabled": true,
        "namespace": "myapp.namespace",
        "services": [
            ...
        ],
        "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
                "awslogs-group": "my-envoy-log-group",
                "awslogs-region": "us-west-2",
                "awslogs-stream-prefix": "myapp-envoy-logs"
            }
        },
         "accessLogConfiguration": {
            "format": "TEXT",
            "includeQueryParameters": "ENABLED" 
        }
    }
}
```

## Considérations
<a name="service-connect-envoy-access-logs-considerations"></a>

Tenez compte des points suivants lorsque vous activez l'accès aux journaux d'accès
+ Les journaux d'accès et les journaux des applications sont tous deux écrits dans`/dev/stdout`. Pour séparer les journaux d'accès des journaux d'applications, nous vous recommandons d'utiliser le pilote de `awsfirelens` journal avec une Fluentd configuration personnaliséeFluent Bit.
+  Nous vous recommandons d'utiliser le pilote de `awslogs` journal pour envoyer les journaux d'applications et d'accès vers la même CloudWatch destination.
+ les journaux d'accès sont pris en charge sur les services Fargate qui utilisent la version de la plateforme `1.4.0` et les versions supérieures.
+ Les paramètres de requête tels que les identifiants de demande et les jetons sont exclus des journaux d'accès par défaut. Pour inclure les paramètres de requête dans les journaux d'accès, définissez `includeQueryParameters` sur`"ENABLED"`.

## Formats des journaux d'accès
<a name="service-connect-envoy-access-logs-formats"></a>

les journaux d'accès peuvent être formatés dans des dictionnaires au format JSON ou dans des chaînes de format texte, avec des différences dans les opérateurs de commande pris en charge pour les différents types de journaux d'accès.

### Journaux d'accès HTTP
<a name="service-connect-envoy-access-logs-formats-http"></a>

Les opérateurs de commande suivants sont inclus par défaut pour les journaux HTTP :

------
#### [ Text ]

```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%"\n
```

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

```
{
  "start_time": "%START_TIME%",
  "method": "%REQ(:METHOD)%",
  "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
  "protocol": "%PROTOCOL%",
  "response_code": "%RESPONSE_CODE%",
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration_ms": "%DURATION%",
  "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
  "forwarded_for": "%REQ(X-FORWARDED-FOR)%",
  "user_agent": "%REQ(USER-AGENT)%",
  "request_id": "%REQ(X-REQUEST-ID)%",
  "authority": "%REQ(:AUTHORITY)%",
  "upstream_host": "%UPSTREAM_HOST%"
}
```

------

### HTTP2 journaux d'accès
<a name="service-connect-envoy-access-logs-formats-http2"></a>

Outre les opérateurs de commande inclus pour les journaux HTTP, HTTP2 les journaux incluent l'`%STREAM_ID%`opérateur par défaut.

------
#### [ Text ]

```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%STREAM_ID%"\n
```

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

```
{
  "start_time": "%START_TIME%",
  "method": "%REQ(:METHOD)%",
  "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
  "protocol": "%PROTOCOL%",
  "response_code": "%RESPONSE_CODE%",
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration": "%DURATION%",
  "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
  "forwarded_for": "%REQ(X-FORWARDED-FOR)%",
  "user_agent": "%REQ(USER-AGENT)%",
  "request_id": "%REQ(X-REQUEST-ID)%",
  "authority": "%REQ(:AUTHORITY)%",
  "upstream_host": "%UPSTREAM_HOST%",
  "stream_id": "%STREAM_ID%"
}
```

------

### Journaux d'accès au gRPC
<a name="service-connect-envoy-access-logs-formats-grpc"></a>

Outre les opérateurs de commande inclus pour les journaux HTTP, les journaux d'accès gRPC incluent l'`%GRPC_STATUS()%`opérateur `%STREAM_ID%` and par défaut.

------
#### [ Text ]

```
[%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
%RESPONSE_CODE% %GRPC_STATUS()% %BYTES_RECEIVED% %BYTES_SENT% %DURATION%
%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
"%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%" "%UPSTREAM_HOST%" "%STREAM_ID%"\n
```

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

```
{
  "start_time": "%START_TIME%",
  "method": "%REQ(:METHOD)%",
  "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%",
  "protocol": "%PROTOCOL%",
  "response_code": "%RESPONSE_CODE%",
  "grpc_status": "%GRPC_STATUS()%",
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration": "%DURATION%",
  "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%",
  "forwarded_for": "%REQ(X-FORWARDED-FOR)%",
  "user_agent": "%REQ(USER-AGENT)%",
  "request_id": "%REQ(X-REQUEST-ID)%",
  "authority": "%REQ(:AUTHORITY)%",
  "upstream_host": "%UPSTREAM_HOST%",
  "stream_id": "%STREAM_ID%"
}
```

------

### Journaux d'accès TCP
<a name="service-connect-envoy-access-logs-formats-tcp"></a>

Les opérateurs de commande suivants sont inclus par défaut dans les journaux d'accès TCP :

------
#### [ Text ]

```
[%START_TIME%] %DOWNSTREAM_REMOTE_ADDRESS% %DOWNSTREAM_REMOTE_PORT% 
%BYTES_RECEIVED% %BYTES_SENT% %DURATION%  
%CONNECTION_TERMINATION_DETAILS% %CONNECTION_ID%\n
```

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

```
{
  "start_time": "%START_TIME%",
  "downstream_remote_address": "%DOWNSTREAM_REMOTE_ADDRESS%",
  "downstream_remote_port": "%DOWNSTREAM_REMOTE_PORT%",s
  "bytes_received": "%BYTES_RECEIVED%",
  "bytes_sent": "%BYTES_SENT%",
  "duration": "%DURATION%",
  "connection_termination_details": "%CONNECTION_TERMINATION_DETAILS%",
  "connection_id": %CONNECTION_ID%
}
```

------

Pour plus d'informations sur ces opérateurs de commande, consultez la section [Opérateurs de commande](https://www.envoyproxy.io/docs/envoy/latest/configuration/observability/access_log/usage#command-operators) dans la documentation d'Envoy.

# Activation des journaux d'accès pour Amazon ECS Service Connect
<a name="service-connect-access-logs-configuration"></a>

Les journaux d'accès ne sont pas activés par défaut pour les services Amazon ECS qui utilisent Service Connect. Vous pouvez activer les journaux d'accès de différentes manières.

## Activez les journaux d'accès à l'aide du AWS CLI
<a name="service-connect-access-logs-configure-cli"></a>

La commande suivante montre comment activer les journaux d'accès pour un service Amazon ECS à l'aide du en AWS CLI spécifiant un `accessLogConfiguration` lors de la création du service :

```
aws ecs create-service \
    --cluster my-cluster \
    --service-name my-service \
    --task-definition my-task-def \
    --service-connect-configuration '{
        "enabled": true,
        "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-abcdef1234567890",
        "services": [{
            "portName": "web",
            "discoveryName": "my-service",
            "clientAliases": [{
                "port": 80,
                "dnsName": "my-service"
            }]
        }],
        "logConfiguration": {
            "logDriver": "awslogs",
            "options": {
                "awslogs-group": "my-envoy-log-group",
                "awslogs-region": "us-west-2",
                "awslogs-stream-prefix": "myapp-envoy-logs"
            }
        },
         "accessLogConfiguration": {
            "format": "TEXT",
            "includeQueryParameters": "ENABLED" 
        }
    }'
```

## Activer les journaux d'accès à l'aide de la console
<a name="service-connect-access-logs-configure-console"></a>

Pour une procédure détaillée de création de service, consultez la section [Création d’un déploiement de mise à jour propagée Amazon ECS](create-service-console-v2.md).

**Pour créer un service avec un espace de noms partagé à l'aide du AWS Management Console**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, sélectionnez le cluster dans lequel créer le service.

1. Sous **Services**, choisissez **Créer**.

1. Après avoir renseigné d’autres informations en fonction de votre charge de travail, dans la section **Service Connect**, sélectionnez **Utiliser Service Connect**.

1. Configurez les paramètres Service Connect selon les besoins de votre type de service (client ou client-serveur).

1. Développez la **configuration du journal d'accès**. Pour **Format**, choisissez **JSON** ou`TEXT`.

1. Pour inclure les paramètres de requête dans les journaux d'accès, sélectionnez **Inclure les paramètres de requête**.

1. Terminez le processus de création de service.

# Chiffrement du trafic Amazon ECS Service Connect
<a name="service-connect-tls"></a>

Amazon ECS Service Connect prend en charge le chiffrement automatique du trafic avec des certificats du protocole TLS (Transport Layer Security) pour les services Amazon ECS. Lorsque vous pointez vos services Amazon ECS vers un [AWS Autorité de certification privée (AWS CA privée)](https://docs.aws.amazon.com/privateca/latest/userguide/PcaWelcome.html), Amazon ECS fournit automatiquement des certificats TLS pour chiffrer le trafic entre vos services Amazon ECS Service Connect. Amazon ECS génère, fait pivoter et distribue les certificats TLS utilisés pour le chiffrement du trafic.

Le chiffrement automatique du trafic avec Service Connect utilise des fonctionnalités de chiffrement de pointe pour sécuriser vos communications entre services afin de répondre à vos exigences en matière de sécurité. Il prend en charge AWS Autorité de certification privée les certificats TLS avec `256-bit ECDSA` `2048-bit RSA` chiffrement. Vous avez également un contrôle total sur les certificats privés et les clés de signature pour vous aider à respecter les exigences de conformité. Par défaut, TLS 1.3 est pris en charge, mais pas TLS 1.0 à 1.2. Service Connect prend en charge TLS 1.3 avec les chiffrements suivants :
+ `TLS_AES_128_GCM_SHA256`
+ `TLS_AES_256_GCM_SHA384`
+ `TLS_CHACHA20_POLY1305_SHA256`

**Note**  
Pour utiliser TLS 1.3, vous devez l’activer sur l’écouteur de la cible.  
Seul le trafic entrant et sortant passant par l’agent Amazon ECS est chiffré.

## Service Connect et surveillances de l’état de l’Application Load Balancer
<a name="service-connect-tls-alb-healthchecks"></a>

Vous pouvez utiliser Service Connect avec les surveillances de l’état de l’Application Load Balancer et le chiffrement TLS 1.3. 

### Configuration de l’Application Load Balancer
<a name="service-connect-tls-alb-config"></a>

Configurez l’Application Load Balancer avec les paramètres suivants :
+ Configurez un écouteur TLS avec une politique de sécurité TLS 1.3 (telle que `ELBSecurityPolicy- TLS13 -1-2-2021-06`). Pour plus d’informations, consultez la section [Politiques de sécurité pour votre Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/describe-ssl-policies.html). 
+ Créez un groupe cible avec les paramètres suivants :
  + Définissez le protocole sur HTTPS.
  + Attachez le groupe cible à l’écouteur TLS.
  + Configurez le port de surveillance de l’état pour qu’il corresponde au port de conteneur de votre service Service Connect.

### Configuration de Service Connect
<a name="service-connect-tls-sc-config"></a>

Configurez un service avec les paramètres suivants :
+ Configurez le service pour utiliser le mode réseau `awsvpc`, car le mode réseau `bridge` n’est pas pris en charge.
+ Activez Service Connect pour le service.
+ Configurez l’équilibreur de charge avec les paramètres suivants :
  + Spécifiez le groupe cible que vous avez configuré pour votre Application Load Balancer.
  + Définissez le port de conteneur pour qu’il corresponde au port de conteneur du service Service Connect TLS.
+ Évitez de configurer `ingressPortOverride` pour le service. Pour plus d'informations, consultez le [ServiceConnectService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceConnectService.html)manuel *Amazon Elastic Container Service API Reference*.

### Considérations
<a name="service-connect-tls-alb-considerations"></a>

Tenez compte des points suivants lorsque vous utilisez Application Load Balancer, le protocole TLS et Service Connect :
+ Utilisez le mode réseau `awsvpc` plutôt que le mode réseau `bridge` pour les surveillances de l’état HTTPS lorsque vous utilisez Service Connect avec le chiffrement TLS. Les surveillances de l’état HTTP continueront de fonctionner avec le mode `bridge`.
+ Configurez le port de surveillance de l’état du groupe cible pour qu’il corresponde au port de conteneur du service Service Connect, et non au port HTTPS par défaut (443).

## AWS Autorité de certification privée certificats et Service Connect
<a name="service-connect-tls-certificates"></a>

Vous devez disposer du rôle IAM d’infrastructure. Pour plus d’informations sur ce rôle, consultez la section [Rôle IAM d’infrastructure Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html                     ).

**AWS Autorité de certification privée modes pour Service Connect**

AWS Autorité de certification privée peut fonctionner selon deux modes : usage général et de courte durée.
+ Usage général : certificats configurables avec n’importe quelle date d’expiration.
+ De courte durée : certificats d’une durée de validité maximale de sept jours.

Amazon ECS prend en charge les deux modes, mais nous vous recommandons d’utiliser des certificats de courte durée. Par défaut, les certificats sont renouvelés tous les cinq jours, et leur utilisation en mode éphémère permet de réaliser des économies importantes par rapport aux certificats à usage général.

Service Connect ne prend pas en charge la révocation des certificats et utilise plutôt des certificats de courte durée avec une rotation fréquente des certificats. Vous avez le droit de modifier la fréquence de rotation, de désactiver ou de supprimer les secrets à l’aide de la [rotation gérée](https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_managed.html) dans [Secrets Manager](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html), mais cela peut avoir les conséquences suivantes.
+ Fréquence de rotation plus courte ‐ Une fréquence de rotation plus courte entraîne des coûts plus élevés en raison AWS CA privée de l'augmentation de la charge de travail liée à la rotation entre Secrets Manager et Auto Scaling. AWS KMS 
+ Fréquence de rotation plus longue : les communications de vos applications échouent si la fréquence de rotation dépasse **sept** jours.
+ Suppression du secret : la suppression du secret entraîne l’échec de la rotation et a un impact sur les communications des applications clientes.

En cas d’échec de votre rotation de secret, un événement `RotationFailed` est publié dans [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html). Vous pouvez également configurer une [CloudWatchalarme](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html) pour`RotationFailed`.

**Important**  
N’ajoutez pas de réplicas de régions aux secrets. Cela empêche Amazon ECS de supprimer le secret, car Amazon ECS n’est pas autorisé à supprimer des régions de la réplication. Si vous avez déjà ajouté la réplication, exécutez la commande suivante.  

```
aws secretsmanager remove-regions-from-replication \
 --secret-id SecretId \
 --remove-replica-regions region-name
```

**Autorités de certification subordonnées**  
Vous pouvez importer n'importe quel certificat AWS CA privée, root ou subordonné, dans Service Connect TLS afin de délivrer des certificats d'entité finale pour les services. L’émetteur spécifié est considéré comme le signataire et la source de confiance dans tous les cas. Vous pouvez émettre des certificats d'entité finale pour différentes parties de votre application auprès de différents subordonnés CAs. Lorsque vous utilisez le AWS CLI, fournissez l'Amazon Resource Name (ARN) de l'autorité de certification pour établir la chaîne de confiance.

**Autorités de certification sur site**  
Pour utiliser votre autorité de certification sur site, vous devez créer et configurer une autorité de certification subordonnée dans AWS Autorité de certification privée. Cela garantit que tous les certificats TLS émis pour vos charges de travail Amazon ECS partagent la chaîne de confiance avec les charges de travail que vous exécutez sur site et sont en mesure de se connecter en toute sécurité.

**Important**  
Ajoutez le tag **requis** `AmazonECSManaged : true` dans votre AWS CA privée. 

**Infrastructure en tant que code**  
Lorsque vous utilisez Service Connect TLS avec des outils d’infrastructure en tant que code (IaC), il est important de configurer correctement vos dépendances afin d’éviter des problèmes tels que le blocage des services. Votre AWS KMS clé, si elle est fournie, votre rôle IAM et vos AWS CA privée dépendances doivent être supprimés après votre service Amazon ECS.

Si l'espace de noms utilisé pour Service Connect est un espace de noms partagé, vous pouvez choisir d'utiliser une ressource partagée AWS CA privée . Pour plus d’informations, consultez la section [Joindre une politique d’accès intercompte](https://docs.aws.amazon.com/privateca/latest/userguide/pca-ram.html) dans le *Guide de l’utilisateur AWS Autorité de certification privée *.

## Service Connect et Secrets Manager
<a name="service-connect-asm"></a>

**Lorsque vous utilisez Amazon ECS Service Connect avec le chiffrement TLS, le service interagit avec Secrets Manager de la manière suivante :**  
Service Connect utilise le rôle d’infrastructure fourni pour créer des secrets dans Secrets Manager. Ces secrets sont utilisés pour stocker les clés privées associées à vos certificats TLS afin de chiffrer le trafic entre vos services Service Connect.

**Avertissement**  
La création et la gestion automatiques de ces secrets par Service Connect rationalisent le processus de mise en œuvre du chiffrement TLS pour vos services. Toutefois, il est important de connaître les implications potentielles en matière de sécurité. Les autres rôles IAM disposant d’un accès en lecture à Secrets Manager peuvent accéder à ces secrets créés automatiquement. Cela pourrait exposer du matériel cryptographique sensible à des parties non autorisées, si les contrôles d’accès ne sont pas correctement configurés.  
Pour atténuer ce risque, appliquez les pratiques exemplaires suivantes :  
Gérez et limitez soigneusement l’accès à Secrets Manager, en particulier pour les secrets créés par Service Connect.
Auditez régulièrement les rôles IAM et leurs autorisations afin de garantir le respect du principe du moindre privilège.

Lorsque vous accordez un accès en lecture à Secrets Manager, pensez à exclure les clés privées TLS créées par Service Connect. Vous pouvez le faire en utilisant une condition dans vos politiques IAM pour exclure les secrets ARNs qui correspondent au modèle :

```
"arn:aws:secretsmanager:::secret:ecs-sc!"
```

Exemple de politique IAM qui refuse l’action `GetSecretValue` à tous les secrets ayant le préfixe `ecs-sc!` :

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Deny",
            "Action": "secretsmanager:GetSecretValue",
            "Resource": "arn:aws:secretsmanager:*:*:secret:ecs-sc!*"
        }
    ]
}
```

------

**Note**  
Il s'agit d'un exemple général qui devra peut-être être ajusté en fonction de votre cas d'utilisation spécifique et de la configuration de votre AWS compte. Testez toujours vos politiques IAM de manière approfondie pour vous assurer qu’elles fournissent l’accès prévu tout en préservant la sécurité.

La compréhension du fonctionnement de Service Connect avec Secrets Manager vous permet de renforcer la sécurité de vos services Amazon ECS tout en tirant parti des avantages du chiffrement TLS automatique.

## Service Connect et AWS Key Management Service
<a name="service-connect-kms"></a>

Vous pouvez l'utiliser [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html)pour chiffrer et déchiffrer vos ressources Service Connect. AWS KMS est un service géré par AWS lequel vous pouvez créer et gérer des clés cryptographiques qui protègent vos données.

Lorsque vous utilisez AWS KMS Service Connect, vous pouvez choisir d'utiliser une clé AWS détenue qui AWS gère pour vous ou de choisir une AWS KMS clé existante. Vous pouvez également [créer une nouvelle AWS KMS clé](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) à utiliser.

**Utilisation de votre propre clé de chiffrement**  
Vous pouvez fournir vos propres éléments clés ou utiliser un magasin de clés externe via AWS Key Management Service Importer votre propre clé dans AWS KMS, puis spécifier le nom de ressource Amazon (ARN) de cette clé dans Amazon ECS Service Connect.

Voici un exemple de AWS KMS politique. Remplacez les *user input* valeurs par les vôtres.

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

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "id",
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::111122223333:role/role-name"
      },
      "Action": [
        "kms:Encrypt",
        "kms:Decrypt",
        "kms:GenerateDataKey",
        "kms:GenerateDataKeyPair"
      ],
      "Resource": "*"
    }
  ]
}
```

------

Pour de plus amples informations sur les stratégies de clé, consultez la section [Création de stratégies de clé](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-overview.html) dans le *Guide du développeur AWS Key Management Service *.

**Note**  
Service Connect prend uniquement en charge les AWS KMS clés de chiffrement symétriques. Vous ne pouvez utiliser aucun autre type de AWS KMS clé pour chiffrer vos ressources Service Connect. Pour savoir si une AWS KMS clé est une clé de chiffrement symétrique, voir [Identifier les clés KMS asymétriques](https://docs.aws.amazon.com/kms/latest/developerguide/identify-key-types.html#identify-asymm-keys).

Pour plus d'informations sur les clés de chiffrement AWS Key Management Service symétriques, consultez la section [AWS KMS Clés de chiffrement symétriques](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#symmetric-cmks) dans le manuel du *AWS Key Management Service développeur*.

# Activation du protocole TLS pour Amazon ECS Service Connect
<a name="enable-service-connect-tls"></a>

Vous activez le chiffrement du trafic lorsque vous créez ou mettez à jour un service Service Connect.

**Pour activer le chiffrement du trafic pour un service dans un espace de noms existant à l'aide du AWS Management Console**

1. Vous devez disposer du rôle IAM d’infrastructure. Pour plus d’informations sur ce rôle, consultez la section [Rôle IAM d’infrastructure Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/infrastructure_IAM_role.html                     ).

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans le panneau de navigation, choisissez **Namespaces (Espaces de noms)**.

1. Choisissez l’**espace de noms** du **service** pour lequel vous souhaitez activer le chiffrement du trafic.

1. Choisissez le **service** pour lequel vous souhaitez activer le chiffrement du trafic.

1. Choisissez **Mettre à jour le service** dans le coin supérieur droit et faites défiler la page vers le bas jusqu’à la section Service Connect.

1. Choisissez **Activer le chiffrement du trafic** sous les informations de service pour activer le protocole TLS.

1. Pour **Rôle Service Connect TLS**, choisissez un rôle IAM d’infrastructure existant ou créez-en un.

1. Pour **Signataire de l’autorité de certification**, choisissez une autorité de certification existante ou créez-en une nouvelle.

   Pour plus d’informations, consultez [AWS Autorité de certification privée certificats et Service Connect](service-connect-tls.md#service-connect-tls-certificates).

1. Pour **Choisir une AWS KMS key**, choisissez une clé AWS détenue et gérée ou vous pouvez choisir une autre clé. Vous pouvez également choisir d’en créer une.

Pour un exemple d'utilisation du AWS CLI pour configurer le protocole TLS pour votre service,[Configuration d'Amazon ECS Service Connect avec AWS CLI](create-service-connect.md).

# Vérification de l’activation du protocole TLS pour Amazon ECS Service Connect
<a name="verify-tls-enabled"></a>

Service Connect initie le protocole TLS au niveau de l’agent Service Connect et le résilie au niveau de l’agent de destination. Par conséquent, le code de l’application ne détecte jamais les interactions TLS. Procédez comme suit pour vérifier que TLS est activé.

1. Incluez la CLI `openssl` dans l’image de votre application.

1. Activez [ECS Exec](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html) sur vos services pour vous connecter à vos tâches via SSM. Vous pouvez également lancer une instance Amazon EC2 dans le même Amazon VPC que le service.

1. Récupérez l’adresse IP et le port d’une tâche auprès d’un service que vous souhaitez vérifier. Vous pouvez récupérer l'adresse IP de la tâche dans la AWS Cloud Map console. Les informations se trouvent sur la page des détails du service correspondant à l’espace de noms. 

1. Connectez-vous à l’une de vos tâches en utilisant `execute-command` comme dans l’exemple suivant. Vous pouvez également vous connecter à l’instance Amazon EC2 créée à l’**étape 2**.

   ```
   $ aws ecs execute-command --cluster cluster-name \
       --task task-id  \
       --container container-name \
       --interactive \
       --command "/bin/sh"
   ```
**Note**  
L’appel direct du nom DNS ne révèle pas le certificat.

1. Dans le shell connecté, utilisez la CLI `openssl` pour vérifier et afficher le certificat associé à la tâche.

   Exemple :

   ```
   openssl s_client -connect 10.0.147.43:6379 < /dev/null 2> /dev/null \ 
   | openssl x509 -noout -text
   ```

   Exemple de réponse :

   ```
   Certificate:
       Data:
           Version: 3 (0x2)
           Serial Number:
               <serial-number>
           Signature Algorithm: ecdsa-with-SHA256
           Issuer: <issuer>
           Validity
               Not Before: Jan 23 21:38:12 2024 GMT
               Not After : Jan 30 22:38:12 2024 GMT
           Subject: <subject>
           Subject Public Key Info:
               Public Key Algorithm: id-ecPublicKey
                   Public-Key: (256 bit)
                   pub:
                       <pub>
                   ASN1 OID: prime256v1
                   NIST CURVE: P-256
           X509v3 extensions:
               X509v3 Subject Alternative Name:
                   DNS:redis.yelb-cftc
               X509v3 Basic Constraints:
                   CA:FALSE
               X509v3 Authority Key Identifier:
                   keyid:<key-id>
   
               X509v3 Subject Key Identifier:
                   1D:<id>
               X509v3 Key Usage: critical
                   Digital Signature, Key Encipherment
               X509v3 Extended Key Usage:
                   TLS Web Server Authentication, TLS Web Client Authentication
       Signature Algorithm: ecdsa-with-SHA256
           <hash>
   ```

# Configuration d'Amazon ECS Service Connect avec AWS CLI
<a name="create-service-connect"></a>

Vous pouvez créer un service Amazon ECS pour une tâche Fargate qui utilise Service Connect avec l’ AWS CLI.

**Note**  
Vous pouvez utiliser des points de terminaison de service à double pile pour interagir avec Amazon ECS à partir de AWS CLI SDKs, et de l'API Amazon ECS via les deux IPv4 et. IPv6 Pour de plus amples informations, veuillez consulter [Utilisation des points de terminaison à double pile Amazon ECS](dual-stack-endpoint.md).

## Conditions préalables
<a name="create-service-connect-prereqs"></a>

Les prérequis Service Connect sont les suivants :
+ Vérifiez que la dernière version de AWS CLI est installée et configurée. Pour plus d’informations, consultez la section [Installation ou mise à jour de la version la plus récente de l’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Votre utilisateur IAM dispose des autorisations requises spécifiées dans l’exemple de politique IAM [Amazon ECS\$1 FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess).
+ Vous avez un VPC, un sous-réseau, une table de routage et un groupe de sécurité prêts à être utilisés. Pour de plus amples informations, veuillez consulter [Créer un Virtual Private Cloud](get-set-up-for-amazon-ecs.md#create-a-vpc).
+ Vous avez un rôle d'exécution de tâches portant le nom `ecsTaskExecutionRole` et la politique gérée par `AmazonECSTaskExecutionRolePolicy` est associée au rôle. Ce rôle permet à Fargate d'écrire les journaux de l'application NGINX et les journaux du proxy Service Connect sur Amazon Logs. CloudWatch Pour de plus amples informations, veuillez consulter [Création du rôle d'exécution de tâche](task_execution_IAM_role.md#create-task-execution-role).

## Étape 1 : créer le cluster
<a name="create-service-connect-cluster"></a>

Pour créer votre espace de noms et votre cluster Amazon ECS, effectuez les étapes suivantes.

**Pour créer le cluster et l'espace de AWS Cloud Map noms Amazon ECS**

1. Créez un cluster Amazon ECS nommé `tutorial` que vous allez utiliser. Le paramètre `--service-connect-defaults` définit l'espace de noms par défaut du cluster. Dans l'exemple de sortie, aucun AWS Cloud Map espace de noms du même nom `service-connect` n'existe dans ce compte. L'espace de noms est donc créé par Amazon ECS. Région AWS L'espace de noms est créé dans AWS Cloud Map dans le compte, et il est visible avec tous les autres espaces de noms. Utilisez donc un nom descriptif.

   ```
   aws ecs create-cluster --cluster-name tutorial --service-connect-defaults namespace=service-connect
   ```

   Sortie :

   ```
   {
       "cluster": {
           "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/tutorial",
           "clusterName": "tutorial",
           "serviceConnectDefaults": {
               "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-EXAMPLE"
           },
           "status": "PROVISIONING",
           "registeredContainerInstancesCount": 0,
           "runningTasksCount": 0,
           "pendingTasksCount": 0,
           "activeServicesCount": 0,
           "statistics": [],
           "tags": [],
           "settings": [
               {
                   "name": "containerInsights",
                   "value": "disabled"
               }
           ],
           "capacityProviders": [],
           "defaultCapacityProviderStrategy": [],
           "attachments": [
               {
                   "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111",
                   "type": "sc",
                   "status": "ATTACHING",
                   "details": []
               }
           ],
           "attachmentsStatus": "UPDATE_IN_PROGRESS"
       }
   }
   }
   ```

1. Vérifiez que le cluster est créé :

   ```
   aws ecs describe-clusters --clusters tutorial
   ```

   Sortie :

   ```
   {
       "clusters": [
           {
               "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/tutorial",
               "clusterName": "tutorial",
               "serviceConnectDefaults": {
                   "namespace": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-EXAMPLE"
               },
               "status": "ACTIVE",
               "registeredContainerInstancesCount": 0,
               "runningTasksCount": 0,
               "pendingTasksCount": 0,
               "activeServicesCount": 0,
               "statistics": [],
               "tags": [],
               "settings": [],
               "capacityProviders": [],
               "defaultCapacityProviderStrategy": []
           }
       ],
       "failures": []
   }
   ```

1. (Facultatif) Vérifiez que l'espace de noms est créé dans AWS Cloud Map. Vous pouvez utiliser la configuration AWS Management Console ou la AWS CLI configuration normale telle qu'elle a été créée dans AWS Cloud Map.

   Par exemple, utilisez l' AWS CLI :

   ```
   aws servicediscovery get-namespace --id ns-EXAMPLE
   ```

   Sortie :

   ```
   {
       "Namespace": {
           "Id": "ns-EXAMPLE",
           "Arn": "arn:aws:servicediscovery:us-west-2:123456789012:namespace/ns-EXAMPLE",
           "Name": "service-connect",
           "Type": "HTTP",
           "Properties": {
               "DnsProperties": {
                   "SOA": {}
               },
               "HttpProperties": {
                   "HttpName": "service-connect"
               }
           },
           "CreateDate": 1661749852.422,
           "CreatorRequestId": "service-connect"
       }
   }
   ```

## Étape 2 : créer le service pour le serveur
<a name="create-service-connect-nginx-server"></a>

La fonctionnalité Service Connect est destinée à interconnecter plusieurs applications sur Amazon ECS. Au moins l'une de ces applications doit fournir un service Web auquel se connecter. Au cours de cette étape, vous allez créer :
+ La définition de tâche qui utilise l'image officielle non modifiée du conteneur NGINX et qui inclut la configuration de Service Connect.
+ La définition du service Amazon ECS qui configure Service Connect pour fournir la découverte de service et la mise en proxy de maillage de services pour le trafic vers ce service. La configuration réutilise l'espace de noms par défaut de la configuration du cluster afin de réduire la quantité de configuration de service que vous effectuez pour chaque service.
+ Le service Amazon ECS. Il exécute une tâche à l'aide de la définition de tâche et insère un conteneur supplémentaire pour le proxy Service Connect. Le proxy écoute sur le port depuis le mappage de ports du conteneur dans la définition de la tâche. Dans une application cliente exécutée dans Amazon ECS, le proxy intégré à la tâche client écoute les connexions sortantes vers le nom du port de définition de la tâche, le nom de découverte du service ou le nom d'alias du client de service, ainsi que le numéro de port provenant de l'alias client.

**Pour créer le service Web avec Service Connect**

1. Enregistrez une définition de tâche compatible avec Fargate et qui utilise le mode réseau `awsvpc`. Procédez comme suit :

   1. Créez un fichier nommé `service-connect-nginx.json` avec le contenu de la définition de tâche suivante.

      Cette définition de tâche configure Service Connect en ajoutant les paramètres de `name` et de `appProtocol` au mappage des ports. Le nom du port permet de mieux identifier ce port dans la configuration du service lorsque plusieurs ports sont utilisés. Le nom du port est également utilisé par défaut comme nom détectable à utiliser par d'autres applications de l'espace de noms.

      La définition de tâche contient le rôle IAM de tâche, car ECS Exec est activé sur le service.
**Important**  
Cette définition de tâche utilise un `logConfiguration` pour envoyer la sortie nginx depuis `stdout` et `stderr` vers Amazon Logs. CloudWatch Ce rôle d'exécution de tâches ne dispose pas des autorisations supplémentaires requises pour créer le groupe de CloudWatch journaux Logs. Créez le groupe de CloudWatch journaux dans Logs à l'aide du AWS Management Console ou AWS CLI. Si vous ne souhaitez pas envoyer les journaux nginx à Logs, vous pouvez CloudWatch supprimer le. `logConfiguration`  
Remplacez l' Compte AWS identifiant dans le rôle d'exécution de la tâche par votre Compte AWS identifiant.

      ```
      {
          "family": "service-connect-nginx",
          "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
          "taskRoleArn": "arn:aws:iam::123456789012:role/ecsTaskRole",
          "networkMode": "awsvpc",
          "containerDefinitions": [
              {
              "name": "webserver",
              "image": "public.ecr.aws/docker/library/nginx:latest",
              "cpu": 100,
              "portMappings": [
                  {
                      "name": "nginx",
                      "containerPort": 80,
                      "protocol": "tcp", 
                      "appProtocol": "http"
                  }
              ],
              "essential": true,
              "logConfiguration": {
                  "logDriver": "awslogs",
                  "options": {
                      "awslogs-group": "/ecs/service-connect-nginx",
                      "awslogs-region": "region", 
                      "awslogs-stream-prefix": "nginx"
                  }
              }
              }
          ],
          "cpu": "256",
          "memory": "512"
      }
      ```

   1. Enregistrez la définition de tâche à l'aide du fichier `service-connect-nginx.json` :

      ```
      aws ecs register-task-definition --cli-input-json file://service-connect-nginx.json
      ```

1. Créez un service :

   1. Créez un fichier nommé `service-connect-nginx-service.json` avec le contenu du service Amazon ECS que vous créez. Cet exemple utilise la définition de tâche créée à l'étape précédente. Le paramètre `awsvpcConfiguration` est obligatoire, car l'exemple de définition de tâche utilise le mode réseau `awsvpc`.

      Lorsque vous créez le service ECS, spécifiez Fargate et la version de plateforme `LATEST` qui prend en charge Service Connect. Les `securityGroups` et les `subnets` doivent appartenir à un VPC répondant aux exigences requises pour utiliser Amazon ECS. Vous pouvez obtenir le groupe de sécurité et le sous-réseau IDs depuis la console Amazon VPC. 

      Ce service configure Service Connect en ajoutant le paramètre `serviceConnectConfiguration`. L'espace de noms n'est pas obligatoire car un espace de noms par défaut est configuré pour le cluster. Les applications clientes exécutées dans ECS dans l'espace de noms se connectent à ce service en utilisant le `portName` et le port dans les `clientAliases`. Par exemple, ce service est accessible via `http://nginx:80/`, car nginx fournit une page de bienvenue à l'emplacement racine `/`. Les applications externes qui ne s'exécutent pas dans Amazon ECS ou qui ne se trouvent pas dans le même espace de noms peuvent accéder à cette application via le proxy Service Connect en utilisant l'adresse IP de la tâche et le numéro de port figurant dans la définition de la tâche. Pour votre configuration `tls`, ajoutez l’`arn` du certificat pour votre `awsPcaAuthorityArn`, votre `kmsKey` et `roleArn` de votre rôle IAM.

      Ce service utilise un `logConfiguration` pour envoyer la sortie du proxy Service Connect depuis `stdout` et `stderr` vers Amazon CloudWatch Logs. Ce rôle d'exécution de tâches ne dispose pas des autorisations supplémentaires requises pour créer le groupe de CloudWatch journaux Logs. Créez le groupe de CloudWatch journaux dans Logs à l'aide du AWS Management Console ou AWS CLI. Nous vous recommandons de créer ce groupe de journaux et de stocker les journaux du proxy dans CloudWatch Logs. Si vous ne souhaitez pas envoyer les journaux du proxy à CloudWatch Logs, vous pouvez supprimer le`logConfiguration`.

      ```
      {
          "cluster": "tutorial",
          "deploymentConfiguration": {
              "maximumPercent": 200,
              "minimumHealthyPercent": 0
          },
          "deploymentController": {
              "type": "ECS"
          },
          "desiredCount": 1,
          "enableECSManagedTags": true,
          "enableExecuteCommand": true,
          "launchType": "FARGATE",
          "networkConfiguration": {
              "awsvpcConfiguration": {
                  "assignPublicIp": "ENABLED",
                  "securityGroups": [
                      "sg-EXAMPLE"
                  ],
                  "subnets": [
                      "subnet-EXAMPLE",
                      "subnet-EXAMPLE",
                      "subnet-EXAMPLE"
                  ]
                 }
          },
          "platformVersion": "LATEST",
          "propagateTags": "SERVICE",
          "serviceName": "service-connect-nginx-service",
          "serviceConnectConfiguration": {
              "enabled": true,
              "services": [
                  {
                      "portName": "nginx",
                      "clientAliases": [
                          {
                              "port": 80
                          }
                      ],
                      "tls": {
                         "issuerCertificateAuthority": {
                            "awsPcaAuthorityArn": "certificateArn"
                         }, 
                         "kmsKey": "kmsKey", 
                         "roleArn": "iamRoleArn"
                      }
                  }
              ],
              "logConfiguration": {
                  "logDriver": "awslogs",
                  "options": {
                      "awslogs-group": "/ecs/service-connect-proxy",
                      "awslogs-region": "region",
                      "awslogs-stream-prefix": "service-connect-proxy"
                  }
              }
          },
          "taskDefinition": "service-connect-nginx"
      }
      ```

   1. Créez un service à l’aide du fichier `service-connect-nginx-service.json` :

      ```
      aws ecs create-service --cluster tutorial --cli-input-json file://service-connect-nginx-service.json
      ```

      Sortie :

      ```
      {
          "service": {
              "serviceArn": "arn:aws:ecs:us-west-2:123456789012:service/tutorial/service-connect-nginx-service",
              "serviceName": "service-connect-nginx-service",
              "clusterArn": "arn:aws:ecs:us-west-2:123456789012:cluster/tutorial",
              "loadBalancers": [],
              "serviceRegistries": [],
              "status": "ACTIVE",
              "desiredCount": 1,
              "runningCount": 0,
              "pendingCount": 0,
              "launchType": "FARGATE",
              "platformVersion": "LATEST",
              "platformFamily": "Linux",
              "taskDefinition": "arn:aws:ecs:us-west-2:123456789012:task-definition/service-connect-nginx:1",
              "deploymentConfiguration": {
                  "deploymentCircuitBreaker": {
                      "enable": false,
                      "rollback": false
                  },
                  "maximumPercent": 200,
                  "minimumHealthyPercent": 0
              },
              "deployments": [
                  {
                      "id": "ecs-svc/3763308422771520962",
                      "status": "PRIMARY",
                      "taskDefinition": "arn:aws:ecs:us-west-2:123456789012:task-definition/service-connect-nginx:1",
                      "desiredCount": 1,
                      "pendingCount": 0,
                      "runningCount": 0,
                      "failedTasks": 0,
                      "createdAt": 1661210032.602,
                      "updatedAt": 1661210032.602,
                      "launchType": "FARGATE",
                      "platformVersion": "1.4.0",
                      "platformFamily": "Linux",
                      "networkConfiguration": {
                          "awsvpcConfiguration": {
                              "assignPublicIp": "ENABLED",
                              "securityGroups": [
                                  "sg-EXAMPLE"
                              ],
                              "subnets": [
                                  "subnet-EXAMPLEf",
                                  "subnet-EXAMPLE",
                                  "subnet-EXAMPLE"
                              ]
                          }
                      },
                      "rolloutState": "IN_PROGRESS",
                      "rolloutStateReason": "ECS deployment ecs-svc/3763308422771520962 in progress.",
                      "failedLaunchTaskCount": 0,
                      "replacedTaskCount": 0,
                      "serviceConnectConfiguration": {
                          "enabled": true,
                          "namespace": "service-connect",
                          "services": [
                              {
                                  "portName": "nginx",
                                  "clientAliases": [
                                      {
                                          "port": 80
                                      }
                                  ]
                              }
                          ],
                          "logConfiguration": {
                              "logDriver": "awslogs",
                              "options": {
                                  "awslogs-group": "/ecs/service-connect-proxy",
                                  "awslogs-region": "us-west-2",
                                  "awslogs-stream-prefix": "service-connect-proxy"
                              },
                              "secretOptions": []
                          }
                      },
                      "serviceConnectResources": [
                          {
                              "discoveryName": "nginx",
                              "discoveryArn": "arn:aws:servicediscovery:us-west-2:123456789012:service/srv-EXAMPLE"
                          }
                      ]
                  }
              ],
              "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS",
              "version": 0,
              "events": [],
              "createdAt": 1661210032.602,
              "placementConstraints": [],
              "placementStrategy": [],
              "networkConfiguration": {
                  "awsvpcConfiguration": {
                      "assignPublicIp": "ENABLED",
                      "securityGroups": [
                          "sg-EXAMPLE"
                      ],
                      "subnets": [
                          "subnet-EXAMPLE",
                          "subnet-EXAMPLE",
                          "subnet-EXAMPLE"
                      ]
                  }
              },
              "schedulingStrategy": "REPLICA",
              "enableECSManagedTags": true,
              "propagateTags": "SERVICE",
              "enableExecuteCommand": true
          }
      }
      ```

      La `serviceConnectConfiguration` que vous avez fournie apparaît dans le premier *déploiement* de la sortie. Lorsque vous apportez des modifications au service ECS de manière à modifier des tâches, un nouveau déploiement est créé par Amazon ECS.

## Étape 3 : Vérifier que vous pouvez vous connecter
<a name="create-service-connect-verify"></a>

Pour vérifier que Service Connect est configuré et fonctionne, procédez comme suit pour vous connecter au service Web à partir d'une application externe. Consultez ensuite les mesures supplémentaires dans CloudWatch le proxy Service Connect créé.

**Pour vous connecter au service Web à partir d'une application externe**
+ Connectez-vous à l'adresse IP de la tâche et au port du conteneur à l'aide de l'adresse IP de la tâche

  Utilisez le AWS CLI pour obtenir l'ID de la tâche, en utilisant le`aws ecs list-tasks --cluster tutorial`.

  Si vos sous-réseaux et votre groupe de sécurité autorisent le trafic depuis l'Internet public sur le port défini par la tâche, vous pouvez vous connecter à l'adresse IP publique depuis votre ordinateur. L'adresse IP publique n'étant pas disponible dans `describe-tasks`, les étapes consistent à se rendre sur Amazon EC2 AWS Management Console ou AWS CLI à obtenir les détails de l'interface Elastic Network.

  Dans cet exemple, une instance Amazon EC2 dans le même VPC utilise l'adresse IP privée de la tâche. L'application est nginx, mais l'en-tête `server: envoy` indique que le proxy Service Connect est utilisé. Le proxy Service Connect écoute sur le port du conteneur depuis la définition de la tâche.

  ```
  $ curl -v 10.0.19.50:80/
  *   Trying 10.0.19.50:80...
  * Connected to 10.0.19.50 (10.0.19.50) port 80 (#0)
  > GET / HTTP/1.1
  > Host: 10.0.19.50
  > User-Agent: curl/7.79.1
  > Accept: */*
  >
  * Mark bundle as not supporting multiuse
  < HTTP/1.1 200 OK
  < server: envoy
  < date: Tue, 23 Aug 2022 03:53:06 GMT
  < content-type: text/html
  < content-length: 612
  < last-modified: Tue, 16 Apr 2019 13:08:19 GMT
  < etag: "5cb5d3c3-264"
  < accept-ranges: bytes
  < x-envoy-upstream-service-time: 0
  <
  <!DOCTYPE html>
  <html>
  <head>
  <title>Welcome to nginx!</title>
  <style>
      body {
          width: 35em;
          margin: 0 auto;
          font-family: Tahoma, Verdana, Arial, sans-serif;
      }
  </style>
  </head>
  <body>
  <h1>Welcome to nginx!</h1>
  <p>If you see this page, the nginx web server is successfully installed and
  working. Further configuration is required.</p>
  
  <p>For online documentation and support please refer to
  <a href="http://nginx.org/">nginx.org</a>.<br/>
  Commercial support is available at
  <a href="http://nginx.com/">nginx.com</a>.</p>
  
  <p><em>Thank you for using nginx.</em></p>
  </body>
  </html>
  ```

**Pour consulter les métriques de Service Connect**  
Le proxy Service Connect crée des métriques d'application (connexion HTTP HTTP2, gRPC ou TCP) dans des métriques. CloudWatch Lorsque vous utilisez la CloudWatch console, consultez les dimensions métriques supplémentaires de **DiscoveryName**, (**DiscoveryName, ServiceName, ClusterName**) et (**TargetDiscoveryName**, **TargetDiscoveryName ServiceName, ClusterName**) dans l'espace de noms Amazon ECS. Pour plus d'informations sur ces statistiques et les dimensions, consultez la section [Afficher les mesures disponibles](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html) dans le guide de l'utilisateur Amazon CloudWatch Logs.

# Utilisation de la découverte de service pour connecter les services Amazon ECS avec des noms DNS
<a name="service-discovery"></a>

Vous pouvez éventuellement configurer votre Amazon ECS service afin d'utiliser la découverte de service Amazon ECS. La découverte de services utilise des actions d' AWS Cloud Map API pour gérer les espaces de noms HTTP et DNS pour vos services Amazon ECS. Pour plus d'informations, consultez [Présentation de AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/latest/dg/Welcome.html) dans le *Manuel du développeur AWS Cloud Map *.

La découverte de services est disponible dans les AWS régions suivantes :


| Nom de la région | Région | 
| --- | --- | 
|  USA Est (Virginie du Nord)  |  us-east-1  | 
|  USA Est (Ohio)  |  us-east-2  | 
|  USA Ouest (Californie du Nord)  |  us-west-1  | 
|  US West (Oregon)  |  us-west-2  | 
|  Afrique (Le Cap)  |  af-south-1  | 
|  Asie-Pacifique (Hong Kong)  |  ap-east-1  | 
|  Asie-Pacifique (Taipei)  |  ap-east-2  | 
|  Asie-Pacifique (Mumbai)  |  ap-south-1  | 
|  Asie-Pacifique (Hyderabad)  |  ap-south-2  | 
|  Asie-Pacifique (Tokyo)  |  ap-northeast-1  | 
|  Asie-Pacifique (Séoul)  |  ap-northeast-2  | 
|  Asie-Pacifique (Osaka)  |  ap-northeast-3  | 
|  Asie-Pacifique (Singapour)  |  ap-southeast-1  | 
|  Asie-Pacifique (Sydney)  |  ap-southeast-2  | 
|  Asie-Pacifique (Jakarta)  |  ap-southeast-3  | 
|  Asie-Pacifique (Melbourne)  |  ap-southeast-4  | 
|  Asie-Pacifique (Malaisie)  |  ap-southeast-5  | 
|  Asie-Pacifique (Nouvelle-Zélande)  |  ap-southeast-6  | 
|  Asie-Pacifique (Thaïlande)  |  ap-southeast-7  | 
|  Canada (Centre)  |  ca-central-1  | 
|  Canada-Ouest (Calgary)  |  ca-west-1  | 
|  Chine (Beijing)  |  cn-north-1  | 
|  China (Ningxia)  |  cn-northwest-1  | 
|  Europe (Francfort)  |  eu-central-1  | 
|  Europe (Zurich)  |  eu-central-2  | 
|  Europe (Irlande)  |  eu-west-1  | 
|  Europe (Londres)  |  eu-west-2  | 
|  Europe (Paris)  |  eu-west-3  | 
|  Europe (Milan)  |  eu-south-1  | 
|  Europe (Stockholm)  |  eu-north-1  | 
|  Israël (Tel Aviv)  |  il-central-1  | 
|  Europe (Espagne)  |  eu-south-2  | 
|  Moyen-Orient (EAU)  |  me-central-1  | 
|  Mexique (Centre)  |  mx-central-1  | 
|  Moyen-Orient (Bahreïn)  |  me-south-1  | 
|  Amérique du Sud (São Paulo)  |  sa-east-1  | 
|  AWS GovCloud (USA Est)  |  us-gov-east-1  | 
|  AWS GovCloud (US-Ouest)  |  us-gov-west-1  | 

## Concepts associés à la découverte de service
<a name="service-discovery-concepts"></a>

La découverte de service se compose des éléments suivants :
+ **Espace de noms de découverte de services** : groupe logique de services de découverte de services qui partagent le même nom de domaine, tel que `example.com`, vers lequel vous souhaitez acheminer le trafic. Vous pouvez créer un espace de noms avec un appel à la commande `aws servicediscovery create-private-dns-namespace` ou dans la console Amazon ECS. Vous pouvez utiliser la commande `aws servicediscovery list-namespaces` pour afficher les informations récapitulatives concernant les espaces de noms créés par le compte actuel. Pour plus d'informations sur les commandes de découverte de services, consultez `[create-private-dns-namespace](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/create-private-dns-namespace.html)` et consultez `[list-namespaces](https://docs.aws.amazon.com/cli/latest/reference/servicediscovery/list-namespaces.html)` le *Guide de AWS CLI référence AWS Cloud Map (de découverte de services)*.
+ **Service de découverte de service** : présent dans l'espace de noms de la découverte de service, il se compose du nom du service et de la configuration DNS correspondant à l'espace de noms. Il fournit les principaux composants suivants :
  + **Registre des services** : vous permet de rechercher un service via des actions DNS ou AWS Cloud Map API et de récupérer un ou plusieurs points de terminaison disponibles pouvant être utilisés pour vous connecter au service.
+ **Instance de découverte de service** : existe dans le service de découverte de service et comprend les attributs associés à chaque service Amazon ECS service dans le répertoire de services.
  + **Attributs de l'instance** : les métadonnées suivantes sont ajoutées en tant qu'attributs personnalisés pour chaque service Amazon ECS service qui est configuré pour utiliser la découverte de service :
    + **`AWS_INSTANCE_IPV4`**— Pour `A` mémoire, l' IPv4 adresse renvoyée par Route 53 en réponse aux requêtes DNS et AWS Cloud Map lorsqu'elle découvre les détails de l'instance, par exemple,`192.0.2.44`.
    + **`AWS_INSTANCE_IPV6`**— Pour `AAAA` mémoire, l' IPv6 adresse renvoyée par Route 53 en réponse aux requêtes DNS et AWS Cloud Map lorsqu'elle découvre les détails de l'instance, par exemple,` 2001:0db8:85a3:0000:0000:abcd:0001:2345`. `AWS_INSTANCE_IPv4` et `AWS_INSTANCE_IPv6` sont ajoutés pour les services Amazon ECS à double pile. Seul `AWS_INSTANCE_IPv6` est ajouté pour les services Amazon ECS IPv6 uniquement.
    + **`AWS_INSTANCE_PORT`** – La valeur de port associées au service de découverte de service.
    + **`AVAILABILITY_ZONE`** – La zone de disponibilité dans laquelle la tâche a été lancée. Pour les tâches qui utilisent EC2, il s’agit de la zone de disponibilité dans laquelle l’instance de conteneur existe. Pour les tâches qui utilisent Fargate, il s’agit de la zone de disponibilité dans laquelle l’interface réseau Elastic existe.
    + **`REGION`** – La région dans laquelle la tâche existe.
    + **`ECS_SERVICE_NAME`** – Le nom du service Amazon ECS service auquel la tâche appartient.
    + **`ECS_CLUSTER_NAME`** – Le nom du cluster Amazon ECS auquel la tâche appartient.
    + **`EC2_INSTANCE_ID`** – L'ID de l'instance de conteneur sur laquelle la tâche a été placée. Cet attribut personnalisé n’est pas ajouté si la tâche utilise Fargate.
    + **`ECS_TASK_DEFINITION_FAMILY`** – La famille de définition de tâche que la tâche utilise.
    + **`ECS_TASK_SET_EXTERNAL_ID`** – Si un ensemble de tâches est créé pour un déploiement externe et est associé à un registre de découverte de service, alors l'attribut `ECS_TASK_SET_EXTERNAL_ID` contiendra l'ID externe de l'ensemble de tâches.
+ **Surveillances de l'état Amazon ECS** : Amazon ECS permet d'effectuer des surveillances d'état régulières au niveau du conteneur. Si un point de terminaison échoue à la surveillance de l'état, il est supprimé du routage DNS et marqué comme défectueux.

## Remarques relatives à la découverte de service
<a name="service-discovery-considerations"></a>

Les informations suivantes doivent être prises en compte lors de l'utilisation de la découverte de service :
+ La découverte de service est prise en charge pour les tâches sur Fargate qui utilisent la version de plateforme 1.1.0 ou supérieure. Pour de plus amples informations, veuillez consulter [Versions de plateforme Fargate pour Amazon ECS](platform-fargate.md).
+ Les services configurés pour utiliser la découverte de service sont limités à 1 000 tâches par service. Cela est dû à un quota de service Route 53.
+ Le flux de travail créer un service dans la console Amazon ECS prend uniquement en charge l'enregistrement des services dans des espaces de noms DNS privés. Lorsqu'un espace de noms DNS AWS Cloud Map privé est créé, une zone hébergée privée Route 53 est créée automatiquement.
+ Les attributs DNS du VPC doivent être configurés pour une résolution DNS réussie. Pour plus d'informations sur la configuration des attributs, consultez [Attributs DNS dans votre VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-support) dans le *Guide de l'utilisateur Amazon VPC*.
+ Amazon ECS ne prend pas en charge l'enregistrement de services dans des AWS Cloud Map espaces de noms partagés.
+ Les registres DNS créés pour un service de découverte de service sont toujours enregistrés avec l'adresse IP privée de la tâche et non pas l'adresse IP publique, même lorsque des espaces de noms publics sont utilisés.
+ La découverte de service exige que les tâches spécifient le mode réseau `awsvpc`, `bridge` ou `host` (`none` n'est pas pris en charge).
+ Si la définition de tâche du service utilise le mode réseau `awsvpc`, vous pouvez créer n’importe quelle combinaison d’enregistrements `A` ou `SRV` pour chaque tâche de service. Si vous utilisez des enregistrements `SRV`, un port est requis. Vous pouvez également créer des enregistrements `AAAA` si le service utilise des sous-réseaux à double pile. Si le service utilise IPv6 uniquement des sous-réseaux, vous ne pouvez pas créer `A` d'enregistrements.
+ Si la définition de tâche du service utilise le mode réseau `bridge` ou `host`, un registre SRV est le seul type de registre DNS pris en charge. Créez un registre SRV pour chaque tâche de service. Le registre SRV doit spécifier une combinaison de nom de conteneur et de port de conteneur à partir de la définition de tâche.
+ Vous pouvez interroger les registres DNS pour un service de découverte de service au sein de votre VPC. Ces enregistrements utilisent le format suivant : `<service-discovery-service-name>.<service-discovery-namespace>`.
+ Lors de l’exécution d’une requête DNS sur le nom du service, les enregistrements `A` et `AAAA` renvoient un ensemble d’adresses IP correspondant à vos tâches. Les enregistrements `SRV` renvoient un ensemble d’adresses IP et de ports pour chaque tâche.
+ Si vous disposez de huit registres sains ou moins, Route 53 répond à toutes les requêtes DNS par tous les registres sains.
+ Lorsque tous les registres sont non sains, Route 53 répond à toutes les requêtes DNS par jusqu'à huit registres non sains.
+ Vous pouvez configurer la découverte de service pour un service situé derrière un équilibreur de charge, mais le trafic de découverte de service est toujours acheminé vers la tâche et non pas vers l'équilibreur de charge.
+ La découverte de service ne prend pas en charge l'utilisation des équilibreurs de charge Classic Load Balancer.
+ Nous vous recommandons d'utiliser les surveillances de l'état au niveau des conteneurs gérés par Amazon ECS pour votre service de découverte de service.
  + **HealthCheckCustomConfig**—Amazon ECS gère les bilans de santé en votre nom. Amazon ECS utilise les informations obtenues par le conteneur et les surveillances de l'état, et l'état de votre tâche, afin de mettre à jour l'état avec AWS Cloud Map. Cette configuration est spécifiée à l'aide du paramètre `--health-check-custom-config` au moment de la création de votre service de découverte de service. Pour plus d’informations, consultez [HealthCheckCustomConfig](https://docs.aws.amazon.com/cloud-map/latest/api/API_HealthCheckCustomConfig.html) dans la *Référence d’API AWS Cloud Map *.
+ Les AWS Cloud Map ressources créées lors de l'utilisation de la découverte de services doivent être nettoyées manuellement.
+ Les tâches et les instances sont enregistrées comme `UNHEALTHY` jusqu’à ce que la surveillance de l’état du conteneur renvoie une valeur. Si les surveillances de l’état réussissent, le statut est mis à jour à `HEALTHY`. Si la surveillance de l’état du conteneur échoue, l’enregistrement de l’instance de découverte de service est annulé.

## Tarification de la découverte de service
<a name="service-discovery-pricing"></a>

Les clients utilisant la découverte de service Amazon ECS service sont facturés pour les ressources Route 53 et les opérations d'API de découverte AWS Cloud Map . Le montant facturé englobe les coûts associés à la création des zones hébergées Route 53 et des requêtes sur le registre de services. Pour plus d'informations, consultez [Tarification AWS Cloud Map](https://docs.aws.amazon.com/cloud-map/latest/dg/cloud-map-pricing.html) dans le *Guide du développeur AWS Cloud Map *.

Amazon ECS effectue des contrôles de santé au niveau des conteneurs et les expose à des opérations d'API de vérification d'état AWS Cloud Map personnalisées. Ceci est actuellement mis à la disposition des clients sans frais supplémentaires. Si vous configurez des surveillances de l'état du réseau supplémentaires pour les tâches exposées publiquement, vous êtes facturé pour ces surveillances de l'état.

# Création d’un service Amazon ECS qui utilise la découverte de service
<a name="create-service-discovery"></a>

Découvrez comment créer un service contenant une tâche Fargate qui utilise la découverte de service avec l’ AWS CLI.

Pour obtenir la liste de Régions AWS ces services d'assistance découverts, consultez[Utilisation de la découverte de service pour connecter les services Amazon ECS avec des noms DNS](service-discovery.md).

Pour de plus amples informations sur les Régions qui prennent en charge Fargate, veuillez consulter [Régions prises en charge pour Amazon ECS sur AWS Fargate](AWS_Fargate-Regions.md).

**Note**  
Vous pouvez utiliser des points de terminaison de service à double pile pour interagir avec Amazon ECS à partir de AWS CLI SDKs, et de l'API Amazon ECS via les deux IPv4 et. IPv6 Pour de plus amples informations, veuillez consulter [Utilisation des points de terminaison à double pile Amazon ECS](dual-stack-endpoint.md).

## Conditions préalables
<a name="create-service-discovery-prereqs"></a>

Avant de commencer ce didacticiel, vérifiez que vous respectez les conditions requises suivantes :
+ La dernière version du AWS CLI est installée et configurée. Pour plus d’informations, consultez la section [Installation ou mise à jour de la version la plus récente de l’ AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
+ Les étapes décrites dans [Configurer l'utilisation d'Amazon ECS](get-set-up-for-amazon-ecs.md) sont terminées.
+ Votre utilisateur IAM dispose des autorisations requises spécifiées dans l’exemple de politique IAM [Amazon ECS\$1 FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess).
+ Vous avez créé au moins un VPC et un groupe de sécurité. Pour de plus amples informations, veuillez consulter [Créer un Virtual Private Cloud](get-set-up-for-amazon-ecs.md#create-a-vpc).

## Étape 1 : créer les ressources Service Discovery dans AWS Cloud Map
<a name="create-service-discovery-namespace"></a>

Suivez ces étapes suivantes pour créer votre espace de noms de découverte de service et votre service de découverte de service :

1. Créez un espace de noms de découverte de service Cloud Map privé. Cet exemple crée un espace de noms appelé `tutorial`. *vpc-abcd1234*Remplacez-le par l'identifiant de l'un de vos identifiants existants VPCs. 

   ```
   aws servicediscovery create-private-dns-namespace \
         --name tutorial \
         --vpc vpc-abcd1234
   ```

   La sortie de cette commande est la suivante.

   ```
   {
       "OperationId": "h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e"
   }
   ```

1. À l'aide du paramètre `OperationId` obtenu à partir de la sortie de l'étape précédente, vérifiez que l'espace de noms privés a bien été créé. Notez l'ID de l'espace de noms car vous l'utiliserez dans les commandes suivantes.

   ```
   aws servicediscovery get-operation \
         --operation-id h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e
   ```

   La sortie est la suivante.

   ```
   {
       "Operation": {
           "Id": "h2qe3s6dxftvvt7riu6lfy2f6c3jlhf4-je6chs2e",
           "Type": "CREATE_NAMESPACE",
           "Status": "SUCCESS",
           "CreateDate": 1519777852.502,
           "UpdateDate": 1519777856.086,
           "Targets": {
              "NAMESPACE": "ns-uejictsjen2i4eeg"
           }
       }
   }
   ```

1. En utilisant l'ID `NAMESPACE` indiqué dans la sortie de l'étape précédente, créez un service de découverte de service. Cet exemple crée un service nommé `myapplication`. Notez l'ID du service et l'ARN car vous les utiliserez dans les commandes suivantes.

   ```
   aws servicediscovery create-service \
         --name myapplication \
         --dns-config "NamespaceId="ns-uejictsjen2i4eeg",DnsRecords=[{Type="A",TTL="300"}]" \
         --health-check-custom-config FailureThreshold=1
   ```

   La sortie est la suivante.

   ```
   {
       "Service": {
          "Id": "srv-utcrh6wavdkggqtk",
           "Arn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk",
           "Name": "myapplication",
           "DnsConfig": {
               "NamespaceId": "ns-uejictsjen2i4eeg",
               "DnsRecords": [
                   {
                       "Type": "A",
                       "TTL": 300
                   }
               ]
           },
           "HealthCheckCustomConfig": {
               "FailureThreshold": 1
           },
           "CreatorRequestId": "e49a8797-b735-481b-a657-b74d1d6734eb"
       }
   }
   ```

## Étape 2 : Créer les ressources Amazon ECS
<a name="create-service-discovery-cluster"></a>

Suivez ces étapes pour créer votre cluster, votre définition de tâche et votre service Amazon ECS service :

1. Créez un nouveau cluster Amazon ECS. Cet exemple crée un cluster appelé `tutorial`. 

   ```
   aws ecs create-cluster \
         --cluster-name tutorial
   ```

1. Enregistrez une définition de tâche compatible avec Fargate et qui utilise le mode réseau `awsvpc`. Procédez comme suit :

   1. Créez un fichier nommé `fargate-task.json` avec le contenu de la définition de tâche suivante.

      ```
      {
          "family": "tutorial-task-def",
              "networkMode": "awsvpc",
              "containerDefinitions": [
                  {
                      "name": "sample-app",
                      "image": "public.ecr.aws/docker/library/httpd:2.4",
                      "portMappings": [
                          {
                              "containerPort": 80,
                              "hostPort": 80,
                              "protocol": "tcp"
                          }
                      ],
                      "essential": true,
                      "entryPoint": [
                          "sh",
                          "-c"
                      ],
                      "command": [
                          "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' >  /usr/local/apache2/htdocs/index.html && httpd-foreground\""
                      ]
                  }
              ],
              "requiresCompatibilities": [
                  "FARGATE"
              ],
              "cpu": "256",
              "memory": "512"
      }
      ```

   1. Enregistrez la définition de tâche en utilisant `fargate-task.json`.

      ```
      aws ecs register-task-definition \
            --cli-input-json file://fargate-task.json
      ```

1. Créez un service ECS en procédant comme suit :

   1. Créez un fichier nommé `ecs-service-discovery.json` avec le contenu du service ECS que vous créez. Cet exemple utilise la définition de tâche créée à l'étape précédente. Le paramètre `awsvpcConfiguration` est obligatoire, car l'exemple de définition de tâche utilise le mode réseau `awsvpc`. 

      Lorsque vous créez le service ECS, spécifiez le type de lancement Fargate et la version de plateforme `LATEST`, qui prend en charge la fonction de découverte de service. Lorsque le service de découverte de service est créé dans AWS Cloud Map , `registryArn` est l'ARN renvoyé. Les `securityGroups` et les `subnets` doivent appartenir au VPC utilisé pour créer l'espace de noms Cloud Map. Vous pouvez obtenir le groupe de sécurité et le sous-réseau IDs depuis la console Amazon VPC.

      ```
      {
          "cluster": "tutorial",
          "serviceName": "ecs-service-discovery",
          "taskDefinition": "tutorial-task-def",
          "serviceRegistries": [
             {
                "registryArn": "arn:aws:servicediscovery:region:aws_account_id:service/srv-utcrh6wavdkggqtk"
             }
          ],
          "launchType": "FARGATE",
          "platformVersion": "LATEST",
          "networkConfiguration": {
             "awsvpcConfiguration": {
                "assignPublicIp": "ENABLED",
                "securityGroups": [ "sg-abcd1234" ],
                "subnets": [ "subnet-abcd1234" ]
             }
          },
          "desiredCount": 1
      }
      ```

   1. Créez votre service ECS à l'aide du `ecs-service-discovery.json`.

      ```
      aws ecs create-service \
            --cli-input-json file://ecs-service-discovery.json
      ```

## Étape 3 : vérifier la découverte du service dans AWS Cloud Map
<a name="create-service-discovery-verify"></a>

Vous pouvez vérifier que tout est bien créé en interrogeant les informations associées à la fonction de découverte de service. Une fois la découverte des services configurée, vous pouvez soit utiliser des opérations d' AWS Cloud Map API, soit effectuer un appel `dig` depuis une instance au sein de votre VPC. Procédez comme suit :

1. À l'aide de l'ID de service de découverte de service, répertoriez les instances de découverte de service. Notez l'ID de l'instance (en gras) pour le nettoyage des ressources. 

   ```
    aws servicediscovery list-instances \
          --service-id srv-utcrh6wavdkggqtk
   ```

   La sortie est la suivante.

   ```
   {
       "Instances": [
           {
               "Id": "16becc26-8558-4af1-9fbd-f81be062a266",
               "Attributes": {
                   "AWS_INSTANCE_IPV4": "172.31.87.2"
                   "AWS_INSTANCE_PORT": "80", 
                   "AVAILABILITY_ZONE": "us-east-1a", 
                   "REGION": "us-east-1", 
                   "ECS_SERVICE_NAME": "ecs-service-discovery", 
                   "ECS_CLUSTER_NAME": "tutorial", 
                   "ECS_TASK_DEFINITION_FAMILY": "tutorial-task-def"
               }
           }
       ]
   }
   ```

1. Utilisez l'espace de noms, le service et les paramètres supplémentaires tels que le nom du cluster ECS pour demander des informations détaillées sur les instances de la fonction de découverte de service.

   ```
   aws servicediscovery discover-instances \
         --namespace-name tutorial \
         --service-name myapplication \
         --query-parameters ECS_CLUSTER_NAME=tutorial
   ```

1. Vous pouvez interroger les registres DNS créés dans la zone hébergée Route 53 de votre service de découverte de service à l'aide des commandes AWS CLI suivantes :

   1. À l'aide de l'ID de l'espace de noms, obtenez les informations relatives à l'espace de noms, lesquelles incluent l'ID de la zone hébergée Route 53.

      ```
      aws servicediscovery \
            get-namespace --id ns-uejictsjen2i4eeg
      ```

      La sortie est la suivante.

      ```
      {
          "Namespace": {
              "Id": "ns-uejictsjen2i4eeg",
              "Arn": "arn:aws:servicediscovery:region:aws_account_id:namespace/ns-uejictsjen2i4eeg",
              "Name": "tutorial",
              "Type": "DNS_PRIVATE",
              "Properties": {
                   "DnsProperties": {
                      "HostedZoneId": "Z35JQ4ZFDRYPLV"
                  }
              },
              "CreateDate": 1519777852.502,
              "CreatorRequestId": "9049a1d5-25e4-4115-8625-96dbda9a6093"
          }
      }
      ```

   1. À l'aide de l'ID de zone hébergée Route 53 de l'étape précédente (voir le texte en gras), obtenez l'enregistrement de ressource défini pour la zone hébergée. 

      ```
      aws route53 list-resource-record-sets \
            --hosted-zone-id Z35JQ4ZFDRYPLV
      ```

1. Vous pouvez également interroger le DNS à partir d'une instance de votre VPC à l'aide de `dig`.

   ```
   dig +short myapplication.tutorial
   ```

## Étape 4 : nettoyer
<a name="create-service-discovery-cleanup"></a>

Une fois que vous avez terminé ce didacticiel, nettoyez les ressources qui lui sont associées afin d'éviter la facturation de frais pour des ressources inutilisées. Procédez comme suit :

1. Annulez l'enregistrement des instances de service de découverte de service à l'aide de l'ID de service et de l'ID de l'instance que vous avez notés précédemment.

   ```
   aws servicediscovery deregister-instance \
         --service-id srv-utcrh6wavdkggqtk \
         --instance-id 16becc26-8558-4af1-9fbd-f81be062a266
   ```

   La sortie est la suivante.

   ```
   {
       "OperationId": "xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv"
   }
   ```

1. À l'aide du `OperationId` indiqué dans la sortie de l'étape précédente, vérifiez que l'inscription des instances du service de découverte de service ont été correctement annulées.

   ```
   aws servicediscovery get-operation \ 
         --operation-id xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv
   ```

   ```
   {
     "Operation": {
           "Id": "xhu73bsertlyffhm3faqi7kumsmx274n-jh0zimzv",
           "Type": "DEREGISTER_INSTANCE",
           "Status": "SUCCESS",
           "CreateDate": 1525984073.707,
           "UpdateDate": 1525984076.426,
           "Targets": {
               "INSTANCE": "16becc26-8558-4af1-9fbd-f81be062a266",
               "ROUTE_53_CHANGE_ID": "C5NSRG1J4I1FH",
               "SERVICE": "srv-utcrh6wavdkggqtk"
           }
       }
   }
   ```

1. Supprimez le service de découverte de service en utilisant l'ID du service.

   ```
   aws servicediscovery delete-service \ 
         --id srv-utcrh6wavdkggqtk
   ```

1. Supprimer l'espace de noms de découverte de service en utilisant l'ID de l'espace de noms.

   ```
   aws servicediscovery delete-namespace \ 
         --id ns-uejictsjen2i4eeg
   ```

   La sortie est la suivante.

   ```
   {
       "OperationId": "c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj"
   }
   ```

1. À l'aide du `OperationId` indiqué dans la sortie de l'étape précédente, vérifiez que l'espace de noms de la découverte de service a été correctement supprimé.

   ```
   aws servicediscovery get-operation \ 
         --operation-id c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj
   ```

   La sortie est la suivante.

   ```
   {
       "Operation": {
           "Id": "c3ncqglftesw4ibgj5baz6ktaoh6cg4t-jh0ztysj",
           "Type": "DELETE_NAMESPACE",
           "Status": "SUCCESS",
           "CreateDate": 1525984602.211,
           "UpdateDate": 1525984602.558,
           "Targets": {
               "NAMESPACE": "ns-rymlehshst7hhukh",
               "ROUTE_53_CHANGE_ID": "CJP2A2M86XW3O"
           }
       }
   }
   ```

1. Définissez le nombre souhaité pour le service Amazon ECS sur `0`. Vous devez effectuer cette étape pour supprimer le service à l'étape suivante.

   ```
   aws ecs update-service \
         --cluster tutorial \
         --service ecs-service-discovery \
         --desired-count 0
   ```

1. Supprimez l'Amazon ECS service.

   ```
   aws ecs delete-service \
         --cluster tutorial \
         --service ecs-service-discovery
   ```

1. Supprimez le cluster Amazon ECS.

   ```
   aws ecs delete-cluster \
         --cluster tutorial
   ```

# Utilisez Amazon VPC Lattice pour connecter, observer et sécuriser vos services Amazon ECS
<a name="ecs-vpc-lattice"></a>

Amazon VPC Lattice est un service de mise en réseau d'applications entièrement géré qui permet aux clients d'Amazon ECS d'observer, de sécuriser et de surveiller les applications basées sur des services AWS informatiques et des comptes VPCs, sans avoir à modifier le code.

VPC Lattice utilise des groupes cibles, qui sont un ensemble de ressources de calcul. Ces cibles exécutent votre application ou votre service et peuvent être des instances Amazon EC2, des adresses IP, des fonctions Lambda et des équilibreurs de charge d'application. En associant leurs services Amazon ECS à un groupe cible VPC Lattice, les clients peuvent désormais activer les tâches Amazon ECS en tant que cibles IP dans VPC Lattice. Amazon ECS enregistre automatiquement les tâches auprès du groupe cible VPC Lattice lorsque les tâches du service enregistré sont lancées.

**Note**  
Lorsque vous utilisez cinq configurations VPC Lattice, votre temps de déploiement peut être légèrement plus long que lorsque vous utilisez moins de configurations.

Une règle d’écoute est utilisée pour transférer le trafic vers un groupe cible spécifié lorsque les conditions sont remplies. Un écouteur vérifie les requêtes de connexion à l’aide du protocole sur le port que vous avez configuré. Un service achemine les requêtes vers ses cibles enregistrées en fonction des règles que vous définissez lors de la configuration de votre écouteur.

Amazon ECS remplace également automatiquement une tâche si elle devient défectueuse selon les surveillances de l’état de VPC Lattice. Une fois associés à VPC Lattice, les clients d'Amazon ECS peuvent également tirer parti des nombreuses autres fonctionnalités de connectivité, de sécurité et d'observabilité entre ordinateurs de VPC Lattice, telles que la connexion aux services entre clusters et comptes AWS Resource Access Manager avec VPCs, l'intégration IAM pour l'autorisation et l'authentification, et les fonctionnalités avancées de gestion du trafic.

Les avantages de VPC Lattice pour les clients Amazon ECS sont les suivants.
+ Productivité accrue des développeurs : VPC Lattice améliore la productivité des développeurs en vous permettant de vous concentrer sur la création de fonctionnalités, tandis que VPC Lattice gère les défis liés au réseau, à la sécurité et à l’observabilité de manière uniforme sur toutes les plateformes de calcul.
+ Meilleure posture de sécurité : VPC Lattice permet à vos développeurs d’authentifier et de sécuriser facilement les communications entre les applications et les plateformes informatiques, d’appliquer le chiffrement en transit et de mettre en place des contrôles d’accès granulaires grâce aux politiques d’authentification VPC Lattice. Cela vous permet d’adopter une posture de sécurité renforcée qui répond aux principales exigences réglementaires et de conformité du secteur.
+ Capacité de mise à l’échelle et résilience améliorées des applications : VPC Lattice vous permet de créer un réseau d’applications déployées avec des fonctionnalités telles que le routage, l’authentification, l’autorisation et la surveillance basés sur les chemins, les en-têtes et les méthodes. Ces avantages sont fournis sans frais supplémentaires en termes de ressources sur les charges de travail et peuvent prendre en charge des déploiements multiclusters générant des millions de requêtes par seconde sans ajouter de latence significative.
+ Flexibilité de déploiement grâce à une infrastructure hétérogène : VPC Lattice fournit des fonctionnalités cohérentes sur tous les services de calcul tels qu’Amazon ECS, Fargate, Amazon EC2, Amazon EKS et Lambda. permettant à votre organisation de choisir l’infrastructure adaptée à chaque application.

## Comment VPC Lattice fonctionne avec les autres services Amazon ECS
<a name="ecs-lattice-compatibility"></a>

L’utilisation de VPC Lattice avec Amazon ECS peut modifier la façon dont vous utilisez d’autres services Amazon ECS, tandis que d’autres restent inchangés.

**Application Load Balancers**  
Vous n’avez plus besoin de créer un Application Load Balancer spécifique devant être utilisé avec le type de groupe cible Application Load Balancer dans VPC Lattice, qui est ensuite lié au service Amazon ECS. Au lieu de cela, il vous suffit de configurer votre service Amazon ECS avec un groupe cible VPC Lattice. Vous pouvez également choisir d’utiliser Application Load Balancer avec Amazon ECS en même temps.

**Déploiements propagés Amazon ECS**  
Seuls les déploiements propagés Amazon ECS fonctionnent avec VPC Lattice, et Amazon ECS introduit des tâches dans les services et les supprime en toute sécurité pendant le déploiement. Le déploiement du code et les Blue/Green déploiements ne sont pas pris en charge.

Pour en savoir plus sur VPC Lattice, consultez le [Guide de l’utilisateur Amazon VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/what-is-vpc-lattice.html).

# Création d'un service utilisant VPC Lattice
<a name="ecs-vpc-lattice-create-service"></a>

Vous pouvez utiliser le AWS Management Console ou le AWS CLI pour créer un service avec VPC Lattice.

## Conditions préalables
<a name="create-ecs-vpc-lattice-prereqs"></a>

Avant de commencer ce didacticiel, vérifiez que vous respectez les conditions requises suivantes :
+ La dernière version du AWS CLI est installée et configurée. Pour plus d’informations, consultez [Installing the AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html) (Installation de).
**Note**  
Vous pouvez utiliser des points de terminaison de service à double pile pour interagir avec Amazon ECS à partir de AWS CLI SDKs, et de l'API Amazon ECS via les deux IPv4 et. IPv6 Pour de plus amples informations, veuillez consulter [Utilisation des points de terminaison à double pile Amazon ECS](dual-stack-endpoint.md).
+ Les étapes décrites dans [Configurer l'utilisation d'Amazon ECS](get-set-up-for-amazon-ecs.md) sont terminées.
+ Votre utilisateur IAM dispose des autorisations requises spécifiées dans l’exemple de politique IAM [Amazon ECS\$1 FullAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonECS_FullAccess).

## Créez un service qui utilise VPC Lattice avec AWS Management Console
<a name="ecs-lattice-create-console"></a>

Procédez comme suit pour créer un service avec VPC Lattice à l’aide de l’ AWS Management Console.

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Dans la page de navigation, choisissez **Clusters**.

1. Sur la page **Clusters**, choisissez le cluster dans lequel créer le service.

1. Sous l'onglet **Services** choisissez **Create** (Créer).

   Si vous n’avez jamais créé de service auparavant, suivez les étapes décrites dans [Création d’un service Amazon ECS à l’aide de la console](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-service-console-v2.html), puis poursuivez ces étapes lorsque vous atteignez la section VPC Lattice.

1. Choisissez **Activer le réseau VPC** en cochant le bouton.

1. Pour utiliser un rôle existant, pour **Rôle d’infrastructure ECS pour Amazon ECS**, choisissez-en un que vous avez déjà créé pour l’utiliser lors de la création du groupe cible VPC Lattice. Pour créer un rôle, **Créer un rôle d’infrastructure ECS**.

1. Choisissez le **VPC**.

   Le **VPC** dépend du mode réseau que vous avez sélectionné lors de l’enregistrement de votre définition de tâche. Si vous utilisez le mode `host` ou `network` avec EC2, choisissez votre VPC. 

   Pour le mode `awsvpc`, le VPC est automatiquement sélectionné en fonction du VPC que vous avez choisi sous **Mise en réseau** et ne peut pas être modifié.

1. Sous **Groupes cibles**, sélectionnez le ou les groupes cibles. Vous devez choisir au moins un groupe cible et pouvez en avoir jusqu’à cinq. Sélectionnez **Ajouter un groupe cible** pour ajouter d’autres groupes cibles. Choisissez le **Nom du port**, le **Protocole** et le **Port** pour chaque groupe cible que vous avez choisi. Pour supprimer un groupe cible, sélectionnez **Supprimer**.
**Note**  
Si vous souhaitez ajouter un groupe cible existant, vous devez utiliser l’ AWS CLI. *Pour obtenir des instructions sur la façon d'ajouter des groupes cibles à l'aide de AWS CLI, voir [register-targets](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/register-targets.html) dans la AWS Command Line Interface référence.*
Bien qu’un service VPC Lattice puisse avoir plusieurs groupes cibles, chaque groupe cible ne peut être ajouté qu’à un seul service.
Pour créer un service dans une configuration IPv6 uniquement, choisissez des groupes cibles avec un type d'adresse IP de`IPv6`.

1. À ce stade, vous accédez à la console VPC Lattice pour poursuivre la configuration. C’est ici que vous incluez vos nouveaux groupes cibles dans l’action par défaut de l’écouteur ou dans les règles d’un service VPC Lattice existant. 

   Pour plus d’informations, consultez la section [Règles d’écoute pour votre service VPC Lattice](https://docs.aws.amazon.com/vpc-lattice/latest/ug/listener-rules.html).

**Important**  
Vous devez autoriser le préfixe de règle de trafic entrant `vpc-lattice` à accéder à votre groupe de sécurité, sinon les tâches et la surveillance de l’état échoueront. 

## Créez un service qui utilise VPC Lattice avec AWS CLI
<a name="ecs-lattice-create-cli"></a>

Utilisez le AWS CLI pour créer un service avec VPC Lattice. Remplacez chaque *user input placeholder* par vos propres informations.

1. Créez un fichier de configuration de groupe cible. L’exemple suivant est nommé `tg-config.json`

   ```
   {
       "ipAddressType": "IPV4",
       "port": 443,
       "protocol": "HTTPS",
       "protocolVersion": "HTTP1",
       "vpcIdentifier": "vpc-f1663d9868EXAMPLE"
   }
   ```

1. Utilisez la commande suivante pour créer un groupe cible VPC Lattice.

   ```
   aws vpc-lattice create-target-group \
       --name my-lattice-target-group-ip \
       --type IP \
       --config file://tg-config.json
   ```
**Note**  
Pour créer un service dans une configuration IPv6 uniquement, créez des groupes cibles avec un type d'adresse IP de`IPv6`. Pour plus d’informations, consultez [create-target-group](https://docs.aws.amazon.com/cli/latest/reference/vpc-lattice/create-target-group.html) dans la *Référence des commandes de l’AWS CLI *.

   Exemple de sortie :

   ```
   {
       "arn": "arn:aws:vpc-lattice:us-east-2:123456789012:targetgroup/tg-0eaa4b9ab4EXAMPLE",
       "config": {
           "healthCheck": {
               "enabled": true,
               "healthCheckIntervalSeconds": 30,
               "healthCheckTimeoutSeconds": 5,
               "healthyThresholdCount": 5,
               "matcher": {
                   "httpCode": "200"
               },
               "path": "/",
               "protocol": "HTTPS",
               "protocolVersion": "HTTP1",
               "unhealthyThresholdCount": 2
           },
           "ipAddressType": "IPV4",
           "port": 443,
           "protocol": "HTTPS",
           "protocolVersion": "HTTP1",
           "vpcIdentifier": "vpc-f1663d9868EXAMPLE"
       },
       "id": "tg-0eaa4b9ab4EXAMPLE",
       "name": "my-lattice-target-group-ip",
       "status": "CREATE_IN_PROGRESS",
       "type": "IP"
   }
   ```

1. Le fichier JSON suivant *ecs-service-vpc-lattice.json* est un exemple utilisé pour associer un service Amazon ECS à un groupe cible VPC Lattice. Le `portName` dans l’exemple ci-dessous est le même que celui que vous avez défini dans le champ `name` de la propriété `portMappings` de votre définition de tâche.

   ```
   {
       "serviceName": "ecs-service-vpc-lattice",
       "taskDefinition": "ecs-task-def",
           "vpcLatticeConfigurations": [
           {
               "targetGroupArn": "arn:aws:vpc-lattice:us-west-2:123456789012:targetgroup/tg-0eaa4b9ab4EXAMPLE",
               "portName": "testvpclattice",
               "roleArn": "arn:aws:iam::123456789012:role/ecsInfrastructureRoleVpcLattice"
           }
       ],
       "desiredCount": 5,
       "role": "ecsServiceRole"
   }
   ```

   Utilisez la commande suivante pour créer un service Amazon ECS et l’associer au groupe cible VPC Lattice à l’aide de l’exemple json ci-dessus.

   ```
   aws ecs create-service \
       --cluster clusterName \
       --serviceName ecs-service-vpc-lattice \
       --cli-input-json file://ecs-service-vpc-lattice.json
   ```

**Note**  
VPC Lattice n’est pas pris en charge sur Amazon ECS Anywhere.

# Protection de vos tâches Amazon ECS pour éviter qu’elles ne soient interrompues par des événements de réduction horizontale
<a name="task-scale-in-protection"></a>

Vous pouvez utiliser la protection évolutive des tâches Amazon ECS pour protéger vos tâches contre l’interruption d’événements de mise à l’échelle horizontale provenant du service autoscaling ou de déploiements.

Certaines applications nécessitent un mécanisme permettant de protéger les tâches critiques contre toute interruption due à des événements de mise à l'échelle horizontale en période de faible utilisation ou lors de déploiements de services. Par exemple :
+ Vous disposez d'une application asynchrone de traitement des files d'attente, telle qu'une tâche de transcodage vidéo, dans laquelle certaines tâches doivent s'exécuter pendant des heures, même lorsque l'utilisation cumulée des services est faible.
+ Vous exploitez une application de jeu qui exécute des serveurs de jeu sous forme de tâches Amazon ECS, lesquelles doivent continuer de fonctionner même si tous les utilisateurs se sont déconnectés, afin de réduire la latence de démarrage lors du redémarrage du serveur.
+ Lorsque vous déployez une nouvelle version de code, vous avez besoin que des tâches continuent à s'exécuter, car leur retraitement serait coûteux.

Pour empêcher les tâches appartenant à votre service de se terminer lors d'un événement de mise à l'échelle horizontale, définissez l'attribut `ProtectionEnabled` sur `true`. Lorsque vous définissez `ProtectionEnabled` sur true, les tâches sont protégées pendant deux heures par défaut. Vous pouvez ensuite personnaliser la période de protection à l’aide de l’attribut `ExpiresInMinutes`. Vous pouvez protéger vos tâches pendant au moins une minute et jusqu'à un maximum de 2 880 minutes (48 heures). Si vous utilisez le AWS CLI, vous pouvez spécifier l'`--protection-enabled`option.

Une fois qu'une tâche a terminé son travail requis, vous pouvez définir l'attribut `ProtectionEnabled` sur `false`, ce qui permet à la tâche d'être interrompue par des événements ultérieurs de mise à l'échelle horizontale. Si vous utilisez le AWS CLI, vous pouvez spécifier l'`--no-protection-enabled`option.

## Mécanismes de protection évolutive des tâches
<a name="task-scale-in-protection-mechanisms"></a>

Vous pouvez définir et obtenir une protection évolutive des tâches à l'aide du point de terminaison de l'agent de conteneur Amazon ECS ou de l'API Amazon ECS.
+ **Point de terminaison de l'agent de conteneur Amazon ECS**

  Nous vous recommandons d'utiliser le point de terminaison de l'agent de conteneur Amazon ECS pour les tâches qui peuvent déterminer automatiquement le besoin de protection. Utilisez cette approche pour les charges de travail basées sur les files d'attente ou le traitement des tâches.

  Lorsqu'un conteneur commence à traiter un travail, par exemple en consommant un message SQS, vous pouvez définir l'attribut `ProtectionEnabled` via le chemin `$ECS_AGENT_URI/task-protection/v1/state` du point de terminaison de protection évolutive des tâches depuis le conteneur. Amazon ECS n'interrompra pas cette tâche lors d'événements de mise à l'échelle horizontale. Une fois que votre tâche a terminé son travail, vous pouvez effacer l’attribut `ProtectionEnabled` en utilisant le même point de terminaison, ce qui rend la tâche susceptible d’être interrompue lors d’événements ultérieurs de mise à l’échelle horizontale.

  Pour de plus amples informations sur l’utilisation de point de terminaison de l’agent de conteneur Amazon ECS, consultez la section [Point de terminaison de protection évolutive des tâches Amazon ECS](task-scale-in-protection-endpoint.md).
+ **API Amazon ECS**

  Vous pouvez utiliser l’API Amazon ECS pour définir et récupérer la protection évolutive des tâches si votre application dispose d’un composant qui suit l’état des tâches actives. Utilisez `UpdateTaskProtection` pour marquer une ou plusieurs tâches comme protégées. Utilisez `GetTaskProtection` pour récupérer l’état de protection.

  Un exemple de cette approche serait si votre application héberge des sessions de serveur de jeu comme tâches Amazon ECS. Lorsqu'un utilisateur se connecte à une session sur le serveur (tâche), vous pouvez marquer la tâche comme protégée. Une fois que l'utilisateur se déconnecte, vous pouvez soit retirer la protection spécifique à cette tâche, soit retirer périodiquement la protection pour des tâches similaires qui ne comportent plus de sessions actives, en fonction de vos besoins en termes de serveurs inactifs.

  Pour plus d'informations, consultez [UpdateTaskProtection](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateTaskProtection.html)et consultez le [GetTaskProtection](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_GetTaskProtection.html)manuel *Amazon Elastic Container Service API Reference*.

Vous pouvez combiner les deux approches. Par exemple, utilisez le point de terminaison de l'agent Amazon ECS pour définir la protection des tâches depuis un conteneur et utilisez l'API Amazon ECS pour retirer la protection des tâches depuis votre service de contrôleur externe.

## Considérations
<a name="task-scale-in-protection-considerations"></a>

Prenez en compte les points suivants avant d'utiliser la protection évolutive des tâches :
+ La protection évolutive des tâches n’est prise en charge que pour les tâches déployées à partir d’un service.
+ La protection évolutive des tâches est prise en charge par les tâches déployées à partir d’un service exécuté sur les instances gérées Amazon ECS.
+ Nous vous recommandons d'utiliser le point de terminaison de l'agent de conteneur Amazon ECS, car l'agent Amazon ECS possède des mécanismes de nouvelle tentative intégrés et une interface plus simple.
+ Vous pouvez réinitialiser la période d'expiration de la protection contre la mise à l'échelle horizontale des tâches en appelant `UpdateTaskProtection` pour une tâche pour laquelle la protection est déjà activée.
+ Déterminez le temps nécessaire à une tâche pour effectuer le travail requis et définissez la propriété `expiresInMinutes` en conséquence. Si vous fixez une période d'expiration de la protection plus longue que nécessaire, vous devrez supporter des coûts et serez confronté à des retards dans le déploiement de nouvelles tâches.
+ La protection contre la mise à l'échelle horizontale des tâches est prise en charge sur l'agent de conteneur Amazon ECS version `1.65.0` ou version ultérieure. Vous pouvez ajouter la prise en charge de cette fonctionnalité sur les instances Amazon EC2 utilisant des versions plus anciennes de l'agent de conteneur Amazon ECS en mettant à jour l'agent à la dernière version. Pour de plus amples informations, veuillez consulter [Mise à jour de l'agent de conteneur Amazon ECS](ecs-agent-update.md).
+ Considérations relatives au déploiement :
  + Si le service utilise une mise à jour propagée, de nouvelles tâches seront créées, mais les tâches exécutant une ancienne version ne seront pas terminées avant la désactivation ou l'expiration de `protectionEnabled`. Vous pouvez ajuster le paramètre `maximumPercentage` dans la configuration du déploiement sur une valeur qui permet de créer de nouvelles tâches lorsque les anciennes tâches sont protégées.
  + Si une blue/green mise à jour est appliquée, le déploiement bleu avec des tâches protégées ne sera pas supprimé si des tâches l'ont été`protectionEnabled`. Le trafic sera redirigé vers les nouvelles tâches qui apparaissent, et les anciennes tâches ne seront pas supprimées que lorsque `protectionEnabled` sera désactivée ou expirera. En fonction du délai d'expiration des CodeDeploy CloudFormation mises à jour, le déploiement peut expirer et les anciennes tâches Blue peuvent toujours être présentes.
  + Si vous l'utilisez CloudFormation, le délai d'expiration de la pile de mises à jour est de 3 heures. Par conséquent, si vous définissez la protection des tâches pour une durée supérieure à 3 heures, votre CloudFormation déploiement peut entraîner un échec et une annulation.

    Pendant le temps que vos anciennes tâches sont protégées, la CloudFormation pile apparaît`UPDATE_IN_PROGRESS`. Si la protection contre la mise à l'échelle horizontale des tâches est supprimée ou expire dans un délai de trois heures, votre déploiement réussira et passera au statut `UPDATE_COMPLETE`. Si le déploiement est bloqué dans l'état `UPDATE_IN_PROGRESS` pendant plus de 3 heures, il échouera et affichera un état `UPDATE_FAILED`, puis reviendra au dernier ensemble de tâches.
  + Amazon ECS envoie des événements de service lorsque des tâches protégées empêchent un déploiement (propagé ou bleu/vert) d'atteindre l'état stable, afin que vous puissiez prendre des mesures correctives. Lorsque vous essayez de mettre à jour l'état de protection d'une tâche et que vous recevez un message d'erreur `DEPLOYMENT_BLOCKED`, cela signifie que le service possède un nombre de tâches protégées supérieur au nombre de tâches souhaité pour le service. Pour résoudre cette erreur, effectuez l'une des opérations suivantes :
    + Attendez que la protection des tâches en cours expire. Définissez ensuite la protection des tâches.
    + Déterminez quelles tâches peuvent être interrompues. Utilisez ensuite `UpdateTaskProtection` avec l'option `protectionEnabled` définie sur `false` pour ces tâches.
    + Augmentez le nombre de tâches souhaité pour le service à un nombre supérieur au nombre de tâches protégées.

## Autorisations IAM requises pour la protection évolutive des tâches
<a name="task-scale-in-protection-iam"></a>

La tâche doit avoir le rôle de tâche Amazon ECS avec les autorisations suivantes :
+ `ecs:GetTaskProtection` : permet à l'agent de conteneur Amazon ECS d'appeler `GetTaskProtection`.
+ `ecs:UpdateTaskProtection` : permet à l'agent de conteneur Amazon ECS d'appeler `UpdateTaskProtection`.

# Point de terminaison de protection évolutive des tâches Amazon ECS
<a name="task-scale-in-protection-endpoint"></a>

L'agent de conteneur Amazon ECS injecte automatiquement la variable d'environnement `ECS_AGENT_URI` dans les conteneurs des tâches Amazon ECS afin de fournir une méthode permettant d'interagir avec le point de terminaison de l'API de l'agent de conteneur.

Nous vous recommandons d'utiliser le point de terminaison de l'agent de conteneur Amazon ECS pour les tâches qui peuvent déterminer automatiquement le besoin de protection. 

Lorsqu’un conteneur commence à traiter une tâche, vous pouvez définir l’attribut `protectionEnabled` à l’aide du chemin d’accès `$ECS_AGENT_URI/task-protection/v1/state` du point de terminaison de protection évolutive des tâches à partir du conteneur. 

Utilisez une requête PUT vers cette URI à partir d’un conteneur pour définir la protection évolutive des tâches. Une requête GET vers cette URI renvoie le statut de protection actuel d’une tâche.

## Paramètres de requête de protection évolutive des tâches
<a name="task-scale-in-protection-request"></a>

Vous pouvez définir la protection évolutive des tâches à l'aide du point de terminaison `${ECS_AGENT_URI}/task-protection/v1/state` avec les paramètres de demande suivants.

`ProtectionEnabled`  
Spécifiez `true` pour marquer une tâche à protéger. Spécifiez `false` si vous souhaitez supprimer la protection et rendre la tâche éligible à l’arrêt.  
Type : Boolean  
Obligatoire : oui

`ExpiresInMinutes`  
Le nombre de minutes pendant lesquelles la tâche est protégée. Vous pouvez spécifier un minimum de 1 minute et aller jusqu'à 2 880 minutes (48 heures). Pendant cette période, votre tâche ne sera pas interrompue par des événements de mise à l'échelle horizontale provenant de l'autoscaling du service ou de déploiements. Une fois cette période écoulée, le paramètre `protectionEnabled` est défini sur `false`.  
Si vous ne spécifiez pas l'heure, la tâche est automatiquement protégée pendant 120 minutes (2 heures).  
Type : Integer  
Obligatoire : non

Les exemples suivants montrent comment définir la protection des tâches avec des durées différentes.

**Exemple de protection d’une tâche avec la durée par défaut**

Cet exemple montre comment protéger une tâche dont la durée par défaut est de 2 heures.

```
curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true}'
```

**Exemple de protection d’une tâche pendant 60 minutes**

Cet exemple montre comment protéger une tâche pendant 60 minutes à l'aide du paramètre `expiresInMinutes`.

```
curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true,"ExpiresInMinutes":60}'      
```

**Exemple de protection d’une tâche pendant 24 heures**

Cet exemple montre comment protéger une tâche pendant 24 heures à l'aide du paramètre `expiresInMinutes`.

```
curl --request PUT --header 'Content-Type: application/json' ${ECS_AGENT_URI}/task-protection/v1/state --data '{"ProtectionEnabled":true,"ExpiresInMinutes":1440}'      
```

**Exemples pour des conteneurs Windows**

Pour les conteneurs Windows, vous pouvez utiliser l'`Invoke-RestMethod`applet PowerShell de commande au lieu de curl. Les exemples suivants montrent les PowerShell équivalents des commandes curl précédentes.

**Exemple de protection d’une tâche de conteneur Windows avec la durée par défaut**

Cet exemple montre comment protéger une tâche dont la durée par défaut est de 2 heures en utilisant PowerShell.

```
Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Put -Body '{"ProtectionEnabled":true}' -ContentType 'application/json'
```

**Exemple de protection d’une tâche de conteneur Windows pendant 60 minutes**

Cet exemple montre comment protéger une tâche pendant 60 minutes à l'aide du `expiresInMinutes` paramètre with PowerShell.

```
Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Put -Body '{"ProtectionEnabled":true,"ExpiresInMinutes":60}' -ContentType 'application/json'
```

**Exemple de protection d’une tâche de conteneur Windows pendant 24 heures**

Cet exemple montre comment protéger une tâche pendant 24 heures à l'aide du `expiresInMinutes` paramètre with PowerShell.

```
Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Put -Body '{"ProtectionEnabled":true,"ExpiresInMinutes":1440}' -ContentType 'application/json'
```

La requête PUT renvoie la réponse suivante.

```
{
  "protection": {
    "ExpirationDate": "2023-12-20T21:57:44.837Z",
    "ProtectionEnabled": true,
    "TaskArn": "arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0"
  }
}
```

## Paramètres de réponse de protection évolutive des tâches
<a name="task-scale-in-protection-response"></a>

Les informations suivantes sont renvoyées à partir de la réponse JSON du point de terminaison de protection contre la mise à l'échelle horizontale des tâches `${ECS_AGENT_URI}/task-protection/v1/state`.

`ExpirationDate`  
Période pendant laquelle la protection de la tâche expirera. Si la tâche n’est pas protégée, cette valeur est nulle.

`ProtectionEnabled`  
État de protection de la tâche. Si la protection évolutive est activée pour une tâche, la valeur est `true`. Sinon, la valeur est `false`.

`TaskArn`  
Amazon Resource Name (ARN) de la tâche à laquelle le conteneur appartient.

L'exemple suivant affiche les détails renvoyés pour une tâche protégée.

```
curl --request GET ${ECS_AGENT_URI}/task-protection/v1/state
```

Pour les conteneurs Windows, utilisez la PowerShell commande suivante pour obtenir l'état de protection :

```
Invoke-RestMethod -Uri $env:ECS_AGENT_URI/task-protection/v1/state -Method Get
```

```
{
    "protection":{
        "ExpirationDate":"2023-12-20T21:57:44Z",
        "ProtectionEnabled":true,
        "TaskArn":"arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0"
    }
}
```

Les informations suivantes sont renvoyées en cas d'échec.

`Arn`  
Amazon Resource Name (ARN) complet de la tâche.

`Detail`  
Détails relatifs à l'échec.

`Reason`  
Raison de l'échec.

L'exemple suivant affiche les détails renvoyés pour une tâche qui n'est pas protégée.

```
{
    "failure":{
        "Arn":"arn:aws:ecs:us-west-2:111122223333:task/1234567890abcdef0",
        "Detail":null,
        "Reason":"TASK_NOT_VALID"
    }
}
```

Les informations suivantes sont renvoyées en cas d'exception.

`requestID`  
L'ID de AWS demande pour l'appel d'API Amazon ECS qui entraîne une exception.

`Arn`  
Amazon Resource Name (ARN) complet de la tâche ou du service.

`Code`  
Code de l’erreur.

`Message`  
Message d’erreur.  
Si une erreur `RequestError` ou `RequestTimeout` apparaît, il s'agit probablement d'un problème de mise en réseau. Essayez d'utiliser les points de terminaison d'un VPC pour Amazon ECS.

L'exemple suivant affiche les détails renvoyés en cas d'erreur.

```
{
    "requestID":"12345-abc-6789-0123-abc",
    "error":{
        "Arn":"arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0",
        "Code":"AccessDeniedException",
        "Message":"User: arn:aws:sts::444455556666:assumed-role/my-ecs-task-role/1234567890abcdef0 is not authorized to perform: ecs:GetTaskProtection on resource: arn:aws:ecs:us-west-2:555555555555:task/test/1234567890abcdef0 because no identity-based policy allows the ecs:GetTaskProtection action"
    }    
}
```

L'erreur suivante s'affiche si l'agent Amazon ECS ne parvient pas à obtenir de réponse du point de terminaison Amazon ECS pour des raisons telles que des problèmes de réseau ou si le plan de contrôle Amazon ECS est en panne.

```
{
  "error": {
    "Arn": "arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0",
    "Code": "RequestCanceled",
    "Message": "Timed out calling Amazon ECS Task Protection API"
  }
}
```

L'erreur suivante apparaît lorsque l'agent Amazon ECS reçoit une exception de limitation de la part d'Amazon ECS.

```
{
  "requestID": "12345-abc-6789-0123-abc",
  "error": {
    "Arn": "arn:aws:ecs:us-west-2:555555555555:task/my-cluster-name/1234567890abcdef0",
    "Code": "ThrottlingException",
    "Message": "Rate exceeded"
  }
}
```

# Utilisation de l’injection de pannes avec vos charges de travail Amazon ECS et Fargate
<a name="fault-injection"></a>

Les clients peuvent utiliser l’injection de pannes avec Amazon ECS sur Amazon EC2 et Fargate pour tester la manière dont leur application répond à certains scénarios de défaillance. Ces tests fournissent des informations que vous pouvez utiliser pour optimiser les performances et la résilience de votre application.

Lorsque l’injection de pannes est activée, l’agent de conteneur Amazon ECS permet aux tâches d’accéder à de nouveaux points de terminaison d’injection de pannes. Vous devez vous inscrire pour utiliser l’injection de pannes en définissant la valeur du paramètre de définition de la tâche `enableFaultInjection` sur `true`. La valeur par défaut est `false`. 

```
{
    ...
   "enableFaultInjection": true
}
```

**Note**  
L’injection de pannes ne fonctionne qu’avec les tâches utilisant le mode réseau `awsvpc` ou `host`.  
L’injection de pannes n’est pas disponible sous Windows.

Pour plus d'informations sur la façon d'activer l'injection de défauts dans le AWS Management Console, consultez [Création d'une définition de tâche Amazon ECS à l'aide de la console](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html).

Vous devez activer la fonctionnalité pour la tester dans AWS Fault Injection Service. Pour plus d'informations, voir [Utiliser les actions AWS FIS aws:ecs:task](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html).

**Note**  
Si vous n'utilisez pas le nouvel Amazon ECS optimisé AMIs ou si vous ne disposez pas d'une AMI personnalisée, installez les dépendances suivantes :  
`tc`
Module noyau `sch_netem`

# Points de terminaison d’injection de pannes Amazon ECS
<a name="fault-injection-endpoints"></a>

L'agent de conteneur Amazon ECS injecte automatiquement la variable d'environnement `ECS_AGENT_URI` dans les conteneurs des tâches Amazon ECS afin de fournir une méthode permettant d'interagir avec le point de terminaison de l'API de l'agent de conteneur. Chaque point de terminaison inclut un point de terminaison `/start`, `/stop`, et `/status`. Les points de terminaison n’acceptent que les requêtes provenant de tâches qui ont activé l’injection de pannes, et chaque point de terminaison est limité à **une** requête toutes les **cinq** secondes par conteneur. Le dépassement de cette limite entraîne une erreur.

**Note**  
La `version 1.88.0+` de l’agent Amazon ECS est requise pour utiliser les points de terminaison d’injection de pannes.

Les trois points de terminaison à utiliser avec l’injection de pannes sont les suivants :
+ [Point de terminaison du port réseau blackhole](#fis-endpoint-blackhole-ports)
+ [Point de terminaison de perte de paquets réseau](#fis-endpoint-packet-loss)
+ [Point de terminaison de latence du réseau](#fis-endpoint-latency)

Une requête réussie génère un code de réponse `200` avec un message `running` lorsque vous appelez le point de terminaison `/start`, `stopped` pour le point de terminaison `/stop` et `running` ou `not-running` pour le point de terminaison `/status`.

```
{
    "Status": <string>
}
```

Une requête infructueuse renvoie l’un des codes d’erreur suivants :
+ `400` : requête erronée
+ `409` : la requête d’injection de pannes est en conflit avec une autre injection panne en cours
+ `429` : la requête a été limitée
+ `500` : une erreur inattendue s’est produite sur le serveur

```
{
	"Error":  <string message> 
}
```

**Note**  
Une seule erreur de latence réseau ou une seule erreur de perte de paquets réseau peut être injectée à la fois. Toute tentative d’injection multiple entraîne le rejet de la requête.

## Point de terminaison du port réseau blackhole
<a name="fis-endpoint-blackhole-ports"></a>

Le point de terminaison `{ECS_AGENT_URI}/fault/v1/network-blackhole-port` élimine le trafic entrant ou sortant pour un port et un protocole spécifiques dans l’espace de noms réseau d’une tâche et est compatible avec deux modes :
+ **awsvpc** : les modifications sont appliquées à l’espace de noms du réseau de tâches
+ **hôte** : les modifications sont appliquées à l’instance de conteneur d’espace de noms réseau par défaut

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/start
<a name="fis-endpoint-blackhole-ports-start"></a>

Ce point de terminaison démarre les injections de pannes du port réseau blackhole et possède les paramètres suivants :

**Port**  
Le port spécifié à utiliser pour l’injection de pannes du port blackhole.

Type : Integer

Obligatoire : oui

**Protocole**  
Le port à utiliser pour l’injection de pannes du port blackhole.

Type : Chaîne

Valeurs valides : `tcp | udp`

Obligatoire : oui

**TrafficType**  
Le type de trafic utilisé par l’injection de pannes.

Type : Chaîne

Valeurs valides : `ingress | egress`

Obligatoire : oui

**SourcesToFilter**  
Un tableau JSON contenant des IPv6 adresses IPv4 ou des blocs CIDR protégés contre le défaut.

Type : tableau de chaînes

Obligatoire : non

Voici un exemple de demande d'utilisation du `start` point de terminaison (remplacez les *red* valeurs par les vôtres) :

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/start

Http method:POST

Request payload: 
{
    "Port": 1234,
    "Protocol": "tcp|udp",
    "TrafficType": "ingress|egress"
    "SourcesToFilter": ["${IP1}", "${IP2}", ...],
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/stop
<a name="fis-endpoint-blackhole-ports-stop"></a>

Ce point de terminaison arrête la panne spécifiée dans la requête. Ce point de terminaison a les paramètres suivants :

**Port**  
Le port concerné par la panne qui doit être arrêtée.

Type : Integer

Obligatoire : oui

**Protocole**  
Le protocole à utiliser pour arrêter la panne.

Type : Chaîne

Valeurs valides : `tcp | udp`

Obligatoire : oui

**TrafficType**  
Le type de trafic utilisé par l’injection de pannes.

Type : Chaîne

Valeurs valides : `ingress | egress`

Obligatoire : oui

Voici un exemple de demande d'utilisation du `stop` point de terminaison (remplacez les *red* valeurs par les vôtres) :

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/stop

Http method: POST

Request payload: 
{
    "Port": 1234,
    "Protocol": "tcp|udp",
    "TrafficType": "ingress|egress", 
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/status
<a name="fis-endpoint-blackhole-ports-status"></a>

Ce point de terminaison est utilisé pour vérifier l’état de l’injection de pannes. Ce point de terminaison a les paramètres suivants :

**Port**  
Le port concerné pour vérifier l’état de la panne.

Type : Integer

Obligatoire : oui

**Protocole**  
Le protocole à utiliser pour vérifier l’état de la panne.

Type : Chaîne

Valeurs valides : `tcp | udp`

Obligatoire : oui

**TrafficType**  
Le type de trafic utilisé par l’injection de pannes.

Type : Chaîne

Valeurs valides : `ingress | egress`

Obligatoire : oui

Voici un exemple de demande d'utilisation du `status` point de terminaison (remplacez les *red* valeurs par les vôtres) :

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/status

Http method: POST

Request payload: 
{
   "Port": 1234,
   "Protocol": "tcp|udp",
   "TrafficType": "ingress|egress",
}
```

## Point de terminaison de latence du réseau
<a name="fis-endpoint-latency"></a>

Le point de terminaison `{ECS_AGENT_URI}/fault/v1/network-latency` ajoute du retard et de l’instabilité à l’interface réseau de la tâche pour le trafic vers une source spécifique. Le point de terminaison est compatible avec deux modes :
+ **awsvpc** : les modifications sont appliquées à l’interface réseau de la tâche
+ **hôte** : les modifications sont appliquées à l’interface réseau par défaut

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-latency/start
<a name="fis-endpoint-latency-start"></a>

Ce point de terminaison `/start` commence l’injection de pannes de latence du réseau et possède les paramètres suivants :

**DelayMilliseconds**  
Le nombre de millisecondes de délai à ajouter à l’interface réseau à utiliser pour l’injection de pannes.

Type : Integer

Obligatoire : oui

**JitterMilliseconds**  
Le nombre de millisecondes d’instabilité à ajouter à l’interface réseau à utiliser pour l’injection de pannes.

Type : Integer

Obligatoire : oui

**Sources**  
Un tableau JSON d' IPv6 adresses IPv4 ou de blocs CIDR destinés à être utilisés pour l'injection d'erreurs.

Type : tableau de chaînes

Obligatoire : oui

**SourcesToFilter**  
Un tableau JSON contenant des IPv6 adresses IPv4 ou des blocs CIDR protégés contre le défaut. `SourcesToFilter`a la priorité sur`Sources`.

Type : tableau de chaînes

Obligatoire : non

Voici un exemple de demande d'utilisation du `/start` point de terminaison (remplacez les *red* valeurs par les vôtres) :

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/start

Http method: POST

Request payload: 
{
    "DelayMilliseconds": 123,
    "JitterMilliseconds": 123,
    "Sources": ["${IP1}", "${IP2}", ...],
    "SourcesToFilter": ["${IP1}", "${IP2}", ...],
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-latency/stop and /status
<a name="fis-endpoint-latency-stop-status"></a>

Le point de terminaison `{ECS_AGENT_URI}/fault/v1/network-latency/stop` arrête le défaut et `{ECS_AGENT_URI}/fault/v1/network-latency/status` vérifie l’état du défaut.

Voici deux exemples de requêtes d’utilisation des points de terminaison `/stop` et `/status`. Les deux utilisent la méthode `POST HTTP`.

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/stop
```

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/status
```

## Point de terminaison de perte de paquets réseau
<a name="fis-endpoint-packet-loss"></a>

Le point de terminaison `{ECS_AGENT_URI}/fault/v1/network-packet-loss` ajoute la perte de paquets à l’interface réseau donnée. Ce point de terminaison est compatible avec deux modes :
+ **awsvpc** : les modifications sont appliquées à l’interface réseau de la tâche
+ **hôte** : les modifications sont appliquées à l’interface réseau par défaut

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-packet-loss/start
<a name="fis-endpoint-packet-loss-start"></a>

Ce point de terminaison `/start` démarre l’injection de pannes de perte de paquets réseau et possède les paramètres suivants :

**LossPercent**  
Le pourcentage de perte de paquets

Type : Integer

Obligatoire : oui

**Sources**  
Un tableau JSON d' IPv6 adresses IPv4 ou de blocs CIDR à utiliser pour les tests d'injection de défauts.

Type : tableau de chaînes

Obligatoire : oui

**SourcesToFilter**  
Un tableau JSON contenant des IPv6 adresses IPv4 ou des blocs CIDR protégés contre le défaut. `SourcesToFilter`a la priorité sur`Sources`.

Type : tableau de chaînes

Obligatoire : non

Voici un exemple de demande d'utilisation du `start` point de terminaison (remplacez les *red* valeurs par les vôtres) :

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/start

Http method: POST

{
    "LossPercent": 6,  
    "Sources": ["${IP1}", "${IP2}", ...],
    "SourcesToFilter": ["${IP1}", "${IP2}", ...],
}
```

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-packet-loss/stop and /status
<a name="fis-endpoint-packet-loss-stop-status"></a>

Le point de terminaison `{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop` arrête le défaut et `{ECS_AGENT_URI}/fault/v1/network-packet-loss/status` vérifie l’état du défaut. Un seul type de défaut est pris en charge à la fois.

Voici deux exemples de requêtes d’utilisation des points de terminaison `/stop` et `/status`. Les deux utilisent la méthode `POST HTTP`.

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
```

```
Endpoint: ${{ECS_AGENT_URI}/fault/v1/network-packet-loss/status
```

# Mise à jour des paramètres d’un service Amazon ECS
<a name="update-service-parameters"></a>

Après avoir créé un service, il peut arriver que vous deviez mettre à jour les paramètres du service, par exemple le nombre de tâches.

Lorsque le planificateur de service lance de nouvelles tâches, il détermine le placement des tâches dans votre cluster selon la logique suivante.
+ Déterminer quelles instances de conteneur de votre cluster peuvent prendre en charge la définition de tâche de votre service. Par exemple, ils disposent des attributs requis en matière de UC, de mémoire, de ports et d’instance de conteneur.
+ Par défaut, le planificateur de service tente d’équilibrer les tâches entre les zones de disponibilité de cette manière, même si vous pouvez choisir une autre stratégie de placement.
  + Trier les instances de conteneur valides en fonction du nombre le plus faible de tâches en cours d’exécution pour ce service dans la même zone de disponibilité que l’instance. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C n'en ont pas, les instances de conteneur valides des zones B ou C sont considérées comme optimales pour le placement.
  + Placer la nouvelle tâche de service sur une instance de conteneur valide dans une zone de disponibilité optimale (sur la base des étapes précédentes), en préférant les instances de conteneur avec le plus petit nombre de tâches en cours d'exécution pour ce service.

Lorsque le planificateur de service cesse d’exécuter des tâches, il tente de maintenir l’équilibre entre les zones de disponibilité de votre cluster en utilisant la logique suivante : 
+ Trier les instances de conteneur en fonction du plus grand nombre de tâches en cours d’exécution pour ce service dans la même zone de disponibilité que l’instance. Par exemple, si la zone A comporte une tâche de service en cours d'exécution tandis que les zones B et C en ont chacune deux, les instances de conteneur des zones B ou C sont considérées comme optimales pour la mise hors service.
+ Arrêter la nouvelle tâche de service sur une instance de conteneur valide dans une zone de disponibilité optimale (sur la base des étapes précédentes), en préférant les instances de conteneur avec le plus grand nombre de tâches en cours d'exécution pour ce service.

Utilisez la liste pour déterminer si vous pouvez modifier le paramètre de service.

**Rééquilibrage des zones de disponibilité**  
Indique s’il faut utiliser le rééquilibrage des zones de disponibilité pour le service.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Stratégie de fournisseur de capacité**  
Détails d'une stratégie de fournisseur de capacité. Vous pouvez définir un fournisseur de capacité lorsque vous créez un cluster, exécutez une tâche ou mettez à jour un service.  
Lorsque vous utilisez Fargate, les fournisseurs de capacité sont `FARGATE` ou `FARGATE_SPOT`.  
Lorsque vous utilisez Amazon EC2, les fournisseurs de capacité sont des groupes Auto Scaling.  
Vous pouvez changer de fournisseur de capacité pour les déploiements propagés et les déploiements bleu/vert.  
La liste suivante fournit les transitions valides :  
+ Mise à jour de Fargate vers un fournisseur de capacité d’un groupe Auto Scaling.
+ Mise à jour d’EC2 vers un fournisseur de capacité Fargate.
+ Mise à jour d’un fournisseur de capacité Fargate vers un fournisseur de capacité de groupe Auto Scaling.
+ Mise à jour du fournisseur de capacité Amazon EC2 vers un fournisseur de capacité Fargate. 
+ Mise à jour du groupe Auto Scaling ou du fournisseur de capacité Fargate pour revenir au type de lancement. Lorsque vous utilisez la CLI ou l’API, vous transmettez une liste vide dans le paramètre `capacityProviderStrategy`.

**Cluster**  
Vous ne pouvez pas changer le nom du cluster.

**Configuration de déploiement**  
La configuration de déploiement inclut les CloudWatch alarmes, le disjoncteur utilisé pour détecter les défaillances et la configuration requise.  
La disjoncteur de circuit de déploiement détermine si un déploiement de service échoue dans le cas où le service ne parvient pas à atteindre un état stable. Si vous utilisez le disjoncteur de déploiement, le déploiement d’un service passera à un état d’échec et cessera de lancer de nouvelles tâches. Si vous utilisez l’option de restauration, lorsqu’un déploiement de service échoue, le service est restauré à la dernière version qui a été déployée avec succès.  
Lorsque vous mettez à jour un service qui utilise le disjoncteur Amazon ECS, Amazon ECS crée un déploiement de service et une révision de service. Ces ressources vous permettent de consulter des informations détaillées sur l’historique des services. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).  
Le planificateur de service utilise les paramètres de pourcentage minimum d'instances saines et de pourcentage maximal (dans la configuration de déploiement pour le service) afin de déterminer la stratégie de déploiement.  
Si un service utilise le type de déploiement de mise à jour propagée (`ECS`), le **pourcentage minimum sain** représente la limite inférieure du nombre de tâches d’un service qui doivent rester dans l’état `RUNNING` pendant un déploiement, exprimé en pourcentage du nombre de tâches souhaité (arrondi à l’entier supérieur). Le paramètre s’applique également lorsque des instances de conteneur sont dans l’état `DRAINING` si le service contient des tâches utilisant EC2. Utilisez ce paramètre pour procéder au déploiement sans avoir recours à une capacité de cluster supplémentaire. Par exemple, si votre service comporte un nombre souhaité de tâches égal à quatre et un pourcentage minimum d'instances saines de 50 pour cent, le planificateur pourra arrêter deux tâches existantes afin de libérer de la capacité de cluster avant de lancer deux nouvelles tâches. Le service considère les tâches comme saines pour les services qui n’utilisent pas d’équilibreur de charge si elles sont dans l’état `RUNNING`. Le service considère que les tâches sont saines pour les services qui utilisent un équilibreur de charge si elles sont dans l’état `RUNNING` et si elles sont signalées comme saines par l’équilibreur de charge. La valeur par défaut pour le pourcentage minimum d'instances saines est 100 pour cent.  
Si un service utilise le type de déploiement de mise à jour propagée (`ECS`), le paramètre **pourcentage maximal** représente une limite supérieure du nombre de tâches dans un service autorisées à avoir l’état `PENDING`, `RUNNING` ou `STOPPING` pendant un déploiement, en tant que pourcentage du nombre de tâches souhaité (arrondi à l’entier le plus proche). Le paramètre s’applique également lorsque des instances de conteneur sont dans l’état `DRAINING` si le service contient des tâches utilisant EC2. Utilisez ce paramètre pour définir la taille des lots de déploiement. Par exemple, si votre service a un nombre souhaité de quatre tâches et une valeur de pourcentage maximum de 200 pour cent, le planificateur peut lancer quatre nouvelles tâches avant d'arrêter les quatre tâches plus anciennes. Cela s'applique à condition que les ressources de cluster nécessaires à cette opération soient disponibles. La valeur par défaut pour le pourcentage maximal est 200 pour cent.  
Lorsque le planificateur de service remplace une tâche pendant une mise à jour, si un équilibreur de charge est utilisé par le service, ce dernier supprime tout d'abord la tâche de l'équilibreur de charge (le cas échéant) et attend que les connexions s'épuisent. Ensuite, l'équivalent de **docker stop** est émis pour les conteneurs en cours d'exécution dans la tâche. Cela se traduit par un signal `SIGTERM` et un délai de 30 secondes, après quoi `SIGKILL` est envoyé et les conteneurs sont arrêtés de force. Si le conteneur gère le signal `SIGTERM` normalement et s'arrête dans les 30 secondes suivant sa réception, aucun signal `SIGKILL` n'est envoyé. Le planificateur de service lance et arrête les tâches selon les modalités définies dans vos paramètres de pourcentage minimum d'instances saines et de pourcentage maximal.  
Le planificateur de services remplace également les tâches jugées défectueuses après l'échec d'une surveillance de l'état du conteneur ou du groupe cible de l'équilibreur de charge. Ce remplacement dépend des paramètres de définition du service `maximumPercent` et `desiredCount`. Si une tâche est marquée comme défectueuse, le planificateur de services lance d'abord une tâche de remplacement. Ensuite, voici ce qui se passe.  
+ Si l’état de la tâche de remplacement est `HEALTHY`, le planificateur de service arrête la tâche défectueuse.
+ Si l'état de santé de la tâche de remplacement est `UNHEALTHY`, le planificateur arrête soit la tâche de remplacement défectueuse, soit la tâche défectueuse existante pour que le nombre total de tâches soit égal à `desiredCount`.
Si le paramètre `maximumPercent` empêche le planificateur de démarrer d'abord une tâche de remplacement, le planificateur arrête une par une les tâches défectueuses au hasard pour libérer de la capacité, puis lance une tâche de remplacement. Le processus de démarrage et d'arrêt se poursuit jusqu'à ce que toutes les tâches défectueuses soient remplacées par des tâches saines. Une fois que toutes les tâches défectueuses ont été remplacées et que seules les tâches saines sont en cours d'exécution, si le nombre total de tâches dépasse le `desiredCount`, les tâches saines sont arrêtées au hasard jusqu'à ce que le nombre total de tâches soit égal à `desiredCount`. Pour plus d'informations sur `maximumPercent` et `desiredCount`, veuillez consulter [Paramètres de définition de service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html) (langue française non garantie).

**Contrôleur de déploiement**  
Le contrôleur de déploiement à utiliser pour le service. Il existe trois types de contrôleurs de déploiement disponibles :  
+ `ECS`
+ `EXTERNAL`
+ `CODE_DEPLOY`
Lorsque vous mettez à jour un service, vous pouvez mettre à jour le contrôleur de déploiement qu’il utilise. La liste suivante fournit les transitions valides :  
+ Passez des déploiements CodeDeploy bleu/vert (`CODE_DEPLOY`) au déploiement ou aux blue/green déploiements ECS (). `ECS`
+ Passez des déploiements CodeDeploy bleu/vert (`CODE_DEPLOY`) aux déploiements externes (). `EXTERNAL`
+ Mise à jour depuis le déploiement ou les blue/green déploiements d'ECS (`ECS`) vers des déploiements externes (`EXTERNAL`).
+ Mise à jour depuis les déploiements externes (`EXTERNAL`) vers le blue/green déploiement ou les déploiements ECS ()`ECS`.
Tenez compte des informations suivantes lorsque vous faites la mise à jour du contrôleur de déploiement d’un service :  
+ Vous ne pouvez pas mettre à jour le contrôleur de déploiement d’un service depuis le contrôleur de déploiement `ECS` vers un autre contrôleur s’il utilise VPC Lattice ou Amazon ECS Service Connect.
+ Vous ne pouvez pas mettre à jour le contrôleur de déploiement d’un service pendant que le déploiement d’un service est en cours.
+ Vous ne pouvez pas mettre à jour le contrôleur de déploiement d’un service vers `CODE_DEPLOY` s’il n’existe aucun équilibreur de charge sur le service.
+ Vous ne pouvez pas mettre à jour le contrôleur de déploiement d’un service depuis `ECS` vers un autre contrôleur si `deploymentConfiguration` inclut des alarmes, un disjoncteur de déploiement ou une stratégie de déploiement `BLUE_GREEN`. Pour de plus amples informations, veuillez consulter [Contrôleurs et stratégies de déploiement de service Amazon ECS](ecs_service-options.md).
+ La valeur que vous spécifiez pour `versionConsistency` dans la définition du conteneur ne sera pas utilisée par Amazon ECS si vous mettez à jour le contrôleur de déploiement du service depuis `ECS` vers l’un des autres contrôleurs. 
+ Si vous mettez à jour le contrôleur de déploiement d’un service depuis `ECS` vers l’un des autres contrôleurs, les réponses de l’API `UpdateService` et `DescribeService` reverront toujours `deployments` au lieu de `taskSets`. Pour plus d'informations sur `UpdateService` et`CreateService`, consultez [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Service.html)et [CreateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_Service.html)dans le manuel *Amazon ECS API Reference*.
+ Si un service utilise une stratégie de déploiement de mise à jour propagée, la mise à jour du contrôleur de déploiement depuis `ECS` vers l’un des autres contrôleurs modifiera la façon dont la valeur `maximumPercent` de `deploymentConfiguration` est utilisée. Au lieu d’être simplement utilisé pour limiter le nombre total de tâches dans le cadre d’un déploiement de mise à jour propagée, `maximumPercent` il est utilisé pour remplacer les tâches défectueuses. Pour de plus amples informations sur la manière dont le planificateur remplace les tâches défectueuses, consultez la section [Services Amazon ECS](ecs_services.md).
+ Si vous mettez à jour le contrôleur de déploiement d’un service depuis `ECS` vers l’un des autres contrôleurs de déploiement, toute `advancedConfiguration` que vous spécifiez dans la configuration de votre équilibreur de charge sera ignorée. Pour plus d'informations, consultez [LoadBalancer](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LoadBalancer.html)et consultez [AdvancedConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_AdvancedConfiguration.html)la *référence de l'API Amazon ECS*.
Lorsque vous mettez à jour le contrôleur de déploiement pour un service utilisant CloudFormation, tenez compte des points suivants en fonction du type de migration que vous effectuez.  
+ Si vous avez un CloudFormation modèle qui contient les informations du contrôleur de `EXTERNAL` déploiement ainsi que les `PrimaryTaskSet` ressources `TaskSet` et que vous supprimez les ressources de l'ensemble de tâches du modèle lors de la mise à jour de `EXTERNAL` vers`ECS`, les appels d'`DeleteTaskSet`API `DescribeTaskSet` et renverront une erreur 400 une fois le contrôleur de déploiement mis à jour vers`ECS`. Cela entraîne un échec de CloudFormation suppression des ressources de l'ensemble de tâches, même si la CloudFormation pile passe au `UPDATE_COMPLETE` statut. Pour plus d’informations, consultez la section [Ressource retirée de la pile, mais non supprimée](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#troubleshooting-errors-resource-removed-not-deleted) dans le Guide de l’utilisateur AWS CloudFormation . Pour résoudre ce problème, supprimez les jeux de tâches directement à l’aide de l’API Amazon ECS `DeleteTaskSet`. Pour plus d'informations sur la suppression d'un ensemble de tâches, consultez [DeleteTaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteTaskSet.html)le manuel *Amazon Elastic Container Service* *API Reference*.
+ Si vous effectuez une migration de `CODE_DEPLOY` vers `ECS` avec une nouvelle définition de tâche et que vous CloudFormation effectuez une opération de restauration, la `UpdateService` demande Amazon ECS échoue avec l'erreur suivante :

  ```
  Resource handler returned message: "Invalid request provided: Unable to update 
  task definition on services with a CODE_DEPLOY deployment controller. Use AWS 
  CodeDeploy to trigger a new deployment. (Service: Ecs, Status Code: 400, 
  Request ID: 0abda1e2-f7b3-4e96-b6e9-c8bc585181ac) (SDK Attempt Count: 1)" 
  (RequestToken: ba8767eb-c99e-efed-6ec8-25011d9473f0, HandlerErrorCode: InvalidRequest)
  ```
+ Après une migration réussie du contrôleur de déploiement `ECS` vers `EXTERNAL`, vous devez supprimer manuellement le jeu de tâches `ACTIVE`, car Amazon ECS ne gère plus le déploiement. Pour plus d'informations sur la suppression d'un ensemble de tâches, consultez le [DeleteTaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DeleteTaskSet.html)manuel Amazon Elastic Container Service *API Reference*.

**Nombre de tâches souhaité**  
Le nombre d’instanciations de la tâche à placer et à maintenir en cours d’exécution dans votre service.  
Si vous souhaitez arrêter temporairement votre service, définissez cette valeur sur zéro. Ensuite, lorsque vous êtes prêt à démarrer le service, mettez-le à jour avec la valeur d’origine.  
Vous pouvez modifier ce paramètre pour les déploiements propagés et les déploiements bleu/vert.

**Activer les balises gérées**  
Indique s’il convient d’activer les balises gérées par Amazon ECS pour les tâches dans le service.  
Seules les tâches lancées après la mise à jour refléteront la mise à jour. Pour mettre à jour les balises de toutes les tâches, utilisez l’option de déploiement forcé.  
Vous pouvez modifier ce paramètre pour les déploiements propagés et les déploiements bleu/vert.

**Activer ECS Exec**  
Détermine si Amazon ECS Exec est utilisé.  
Si vous ne souhaitez pas remplacer la valeur définie lors de la création du service, vous pouvez la définir sur null lorsque vous effectuez cette action.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Période de grâce de la surveillance de l’état**  
La durée, en secondes, pendant laquelle le planificateur de service Amazon ECS ignore les surveillances de l’état défectueuses d’Elastic Load Balancing, de VPC Lattice et des conteneurs après le premier démarrage d’une tâche. Si vous ne spécifiez pas de valeur pour la période de grâce de la surveillance de l’état, la valeur par défaut `0` est utilisée. Si vous n’utilisez aucune des surveillances de l’état, cela signifie que `healthCheckGracePeriodSeconds` n’est pas utilisé.  
Si les tâches de votre service mettent du temps à démarrer et à répondre, vous pouvez spécifier une période de grâce pour la surveillance de l’état pouvant aller jusqu’à 2 147 483 647 secondes (environ 69 ans). Pendant ce temps, le planificateur du service Amazon ECS ignore le statut de la vérification de l'état. La période de grâce peut empêcher le planificateur de services de marquer les tâches comme non saines et de les arrêter avant qu’elles aient le temps de s’exécuter.  
Vous pouvez modifier ce paramètre pour les déploiements propagés et les déploiements bleu/vert.

**Équilibreurs de charge**  
Vous devez utiliser un rôle lié à un service lorsque vous mettez à jour un équilibreur de charge.  
Une liste des objets d’équilibreur de charge Elastic Load Balancing. Il contient le nom de l’équilibreur de charge, le nom du conteneur et le port du conteneur pour permettre l’accès à partir de l’équilibreur de charge. Le nom du conteneur est tel qu’il apparaît dans une définition de conteneur.  
Amazon ECS ne met pas automatiquement à jour les groupes de sécurité associés aux équilibreurs de charge Elastic Load Balancing ou aux instances de conteneur Amazon ECS.  
Lorsque vous ajoutez, mettez à jour ou supprimez une configuration d’équilibreur de charge, Amazon ECS démarre de nouvelles tâches avec la configuration Elastic Load Balancing mise à jour, puis arrête les anciennes tâches lorsque les nouvelles tâches sont en cours d’exécution.  
Pour les services qui utilisent des mises à jour propagées, vous pouvez ajouter, mettre à jour ou supprimer des groupes cibles Elastic Load Balancing. Vous pouvez passer d’un groupe cible unique à plusieurs groupes cibles et inversement.  
Pour les services qui utilisent blue/green des déploiements, vous pouvez mettre à jour les groupes cibles d'Elastic Load Balancing en utilisant `[CreateDeployment](https://docs.aws.amazon.com/codedeploy/latest/APIReference/API_CreateDeployment.html)` through CodeDeploy. Notez que les groupes cibles multiples ne sont pas pris en charge pour les blue/green déploiements. Pour de plus amples informations, consultez la section [Enregistrement de plusieurs groupes cibles auprès d’un service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html).   
Pour les services qui utilisent le contrôleur de déploiement externe, vous pouvez ajouter, mettre à jour ou supprimer des équilibreurs de charge en utilisant [CreateTaskSet](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateTaskSet.html). Notez que les groupes cibles multiples ne sont pas pris en charge pour les déploiements externes. Pour de plus amples informations, consultez la section [Enregistrement de plusieurs groupes cibles auprès d’un service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/register-multiple-targetgroups.html).   
Passez une liste vide pour supprimer les équilibreurs de charge.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Configuration réseau**  
La configuration réseau du service.   
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Contraintes de placement**  
Un tableau d’objets de contrainte de placement des tâches permettant de mettre à jour le service à utiliser. Si aucune valeur n’est spécifiée, les contraintes de placement existantes pour le service resteront inchangées. Si cette valeur est spécifiée, elle remplace toutes les contraintes de placement existantes définies pour le service. Pour supprimer toutes les contraintes de placement existantes, spécifiez un tableau vide.  
Vous pouvez spécifier un maximum de 10 contraintes par tâche. Cette limite inclut les contraintes de la définition de tâche et celles spécifiées lors de l'exécution.  
Vous pouvez modifier ce paramètre pour les déploiements propagés et les déploiements bleu/vert.

**Stratégie de placement**  
Les objets de stratégie de placement permettant de mettre à jour le service à utiliser. Si aucune valeur n’est spécifiée, la stratégie de placement existante pour le service restera inchangée. Si cette valeur est spécifiée, elle remplace la stratégie de placement existante définie pour le service. Pour supprimer une stratégie de placement existante, spécifiez un objet vide.  
Vous pouvez modifier ce paramètre pour les déploiements propagés et les déploiements bleu/vert.

**Version de la plateforme**  
La version de plateforme Fargate sur laquelle votre service s’exécute.  
Un service utilisant une version de plateforme Linux ne peut pas être mis à jour pour utiliser une version de plateforme Windows et vice versa.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Propager les balises**  
Indique si la propagation des balises à la tâche doit se faire à partir de la définition de tâche ou à partir du service. Si aucune valeur n'est spécifiée, les balises ne sont pas propagées.  
Seules les tâches lancées après la mise à jour refléteront la mise à jour. Pour mettre à jour les balises sur toutes les tâches, définissez `forceNewDeployment` sur `true` afin qu’Amazon ECS démarre de nouvelles tâches avec les balises mises à jour.  
Vous pouvez modifier ce paramètre pour les déploiements propagés et les déploiements bleu/vert.

**Configuration de Service Connect**  
La configuration pour Amazon ECS Service Connect. Ce paramètre détermine la manière dont le service se connecte aux autres services de votre application.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Enregistrements de service**  
Vous devez utiliser un rôle lié à un service lorsque vous mettez à jour les enregistrements de service.  
Les détails des enregistrements de découverte de service à attribuer à ce service. Pour de plus amples informations, veuillez consulter [Découverte de service](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html).  
Lorsque vous ajoutez, mettez à jour ou supprimez la configuration des enregistrements de service, Amazon ECS lance de nouvelles tâches avec la configuration mise à jour des enregistrements de service, puis arrête les anciennes tâches lorsque les nouvelles sont en cours d’exécution.  
Transmettez une liste vide pour supprimer les enregistrements de service.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Définition de tâche**  
La définition et révision de la tâche à utiliser pour le service.  
Si vous modifiez les ports utilisés par les conteneurs d’une définition de tâche, vous devrez mettre à jour vos groupes de sécurité d’instances de conteneur afin de fonctionner avec les ports mis à jour.  
Si vous mettez à jour la définition de tâche pour le service, le nom et le port de conteneur spécifiés dans la configuration de l'équilibreur de charge doivent rester dans la définition de tâche.   
Le comportement d’extraction de l’image du conteneur diffère selon les options de calcul. Pour plus d’informations, consultez :  
+ [Architecture AWS Fargate pour Amazon ECS](AWS_Fargate.md)
+ [Architecte EC2 de capacité pour Amazon ECS](launch-type-ec2.md)
+ [Amazon ECS Anywhere) externe pour Amazon ECS](launch-type-external.md)
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Configuration du volume**  
Les détails du volume qui était `configuredAtLaunch`. Lorsque `configuredAtLaunch` est défini sur `true` dans la définition de la tâche, ce paramètre de service configure un volume Amazon EBS pour chaque tâche du service à créer et à associer lors du déploiement. [Vous pouvez configurer la taille, le type de volume, les IOPS, le débit, le snapshot et le chiffrement dans Configuration. ServiceManaged EBSVolume](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ServiceManagedEBSVolumeConfiguration.html) Le `name` du volume doit correspondre au `name` indiqué dans la définition de la tâche. S’il est défini sur null, aucun nouveau déploiement n’est déclenché. Dans le cas contraire, si cette configuration diffère de celle existante, cela déclenche un nouveau déploiement.  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

**Configuration de VPC Lattice**  
La configuration de VPC Lattice pour votre de service. Cela définit la manière dont votre service s'intègre à VPC Lattice pour la communication. service-to-service  
Vous pouvez modifier ce paramètre pour les déploiements propagés.

## AWS CDK considérations
<a name="cdk-considerations"></a>

Le AWS CDK ne suit pas l'état des ressources. Il ne sait pas si vous créez ou mettez à jour un service. Les clients doivent utiliser la trappe d’évacuation pour accéder directement à la structure ecs `Service` L1. 

Pour plus d'informations sur les trappes d'échappement, voir [Personnaliser les constructions à partir de la bibliothèque de constructions AWS dans le](https://docs.aws.amazon.com/cdk/v2/guide/cfn-layer.html#develop-customize-escape) guide du *développeur de la AWS Cloud Development Kit (AWS CDK) version 2*. 

Pour procéder à la migration de votre service existant vers la structure `ecs.Service`, procédez comme suit :

1. Utilisez la trappe d’évacuation pour accéder à la structure `Service` L1. 

1. Définissez manuellement les propriétés suivantes dans la structure `Service` L1. 

   Si votre service utilise la capacité Amazon EC2 :
   + `daemon?`
   + `placementConstraints?`
   + `placementStrategies?`
   + Si vous utilisez le mode réseau `awsvpc`, vous devez définir les structures `vpcSubnets?` et `securityGroups?`.

   Si votre service utilise Fargate :
   + `FargatePlatformVersion`
   + Les structures `vpcSubnets?` et `securityGroups?`.

1. Définissez le `launchType` comme suit :

   ```
   const cfnEcsService = service.node.findChild('Service') as ecs.CfnService;
   cfnEcsService.launchType = "FARGATE";
   ```

Pour passer d’un type de lancement à un fournisseur de capacité, procédez comme suit :

1. Utilisez la trappe d’évacuation pour accéder à la structure `Service` L1. 

1. Ajoutez la structure `capacityProviderStrategies?`.

1. Déployez le service.

# Mettre à jour un service Amazon ECS
<a name="update-service-console-v2"></a>

Après avoir créé un service, il peut arriver que vous deviez mettre à jour les paramètres du service, par exemple le nombre de tâches.

Lorsque vous mettez à jour un service qui utilise le disjoncteur Amazon ECS, Amazon ECS crée un déploiement de service et une révision de service. Ces ressources vous permettent de consulter des informations détaillées sur l’historique des services. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).

## Conditions préalables
<a name="update-service-prerequisites"></a>

Avant de mettre à jour un service, vérifiez quels paramètres de service peuvent être modifiés pour votre type de déploiement. Pour obtenir une liste complète de paramètres modifiables, consultez la section [Mise à jour des paramètres d’un service Amazon ECS](update-service-parameters.md).

## Procédure
<a name="update-service-procedure"></a>

------
#### [ Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, cochez la case à côté du service, puis choisissez **Mettre à jour**.

1. Pour que votre service démarre un nouveau déploiement, sélectionnez **Force new deployment** (Forcer un nouveau déploiement).

1. Pour **Définition de tâche**, choisissez la famille et la révision de définition de tâche.
**Important**  
La console vérifie que la famille et la révision de définition de tâche sélectionnées sont compatibles avec la configuration de calcul définie. Si vous recevez un avertissement, vérifiez la compatibilité de votre définition de tâche et la configuration de calcul que vous avez sélectionnée.

1. Si vous choisissez **Replica** pour **Desired tasks** (Tâches souhaitées), saisissez le nombre de tâches à lancer et à conserver dans le service.

1. Si vous avez choisi **Replica**, pour qu’Amazon ECS surveille la répartition des tâches entre les zones de disponibilité et les redistribue en cas de déséquilibre, sous **Rééquilibrage des services entre zones de disponibilité**, sélectionnez **Rééquilibrage des services entre zones de disponibilité**.

1. Pour **Min running tasks** (Minimum de tâches en cours d'exécution), saisissez la limite inférieure pour le nombre de tâches du service qui doivent rester à l'état `RUNNING` lors d'un déploiement, en tant que pourcentage de nombre souhaité de tâches (arrondi au nombre entier supérieur le plus proche). Pour plus d'informations, consultez [Deployment configuration](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-deploymentconfiguration) (Configuration de déploiement).

1. Pour **Max running tasks** (Maximum de tâches en cours d'exécution), saisissez la limite supérieure pour le nombre de tâches du service qui peuvent rester à l'état `RUNNING` ou `PENDING` lors d'un déploiement, en tant que pourcentage de nombre souhaité de tâches (arrondi au nombre entier inférieur le plus proche).

1. Pour configurer la manière dont les tâches sont déployées pour votre service, développez **Options de déploiement**, puis configurez vos options.

   1. Pour **Type de contrôleur de déploiement**, spécifiez le contrôleur de déploiement de service. La console Amazon ECS prend en charge les types de contrôleurs suivants :`ECS`.

   1. Pour **Stratégie de déploiement**, choisissez la stratégie utilisée par Amazon ECS pour déployer les nouvelles versions du service.

   1. Selon la **Stratégie de déploiement** choisie, procédez comme suit :    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/update-service-console-v2.html)

   1. Pour exécuter des fonctions Lambda pour une étape du cycle de vie, sous **Hooks de cycle de vie du déploiement**, procédez comme suit pour chaque fonction Lambda unique :

      1. Choisissez **Ajouter**.

         Répétez l’opération pour chaque fonction que vous souhaitez exécuter.

      1. Pour **Fonction Lambda**, saisissez le nom de la fonction.

      1. Pour **Rôle**, choisissez le rôle que vous avez créé dans les prérequis avec les blue/green autorisations.

         Pour de plus amples informations, veuillez consulter [Autorisations requises pour les fonctions Lambda dans les déploiements Amazon ECS blue/green](blue-green-permissions.md).

      1. Pour **Étapes du cycle de vie**, sélectionnez les étapes exécutées par la fonction Lambda.

      1.  (Facultatif) Pour **Détails du hook**, saisissez une paire clé-valeur fournissant des informations sur le hook.

1. Pour configurer la manière dont Amazon ECS détecte et gère les échecs de déploiement, développez **Deployment failure detection** (Détection des échecs de déploiement), puis choisissez vos options. 

   1. Pour arrêter un déploiement lorsque les tâches ne peuvent pas démarrer, sélectionnez **Use the Amazon ECS deployment circuit breaker** (Utiliser le disjoncteur de déploiement Amazon ECS).

      Pour que le logiciel restaure automatiquement le dernier état de déploiement terminé lorsque le disjoncteur de déploiement définit le déploiement comme ayant échoué, sélectionnez **Restauration en cas d’échec**.

   1. Pour arrêter un déploiement en fonction des métriques de l'application, sélectionnez **Utiliser une ou plusieurs CloudWatch alarmes**. Ensuite, à partir du **nom de l'CloudWatch alarme**, choisissez les alarmes. Pour créer une nouvelle alarme, rendez-vous sur la CloudWatch console.

      Pour que le logiciel annule automatiquement le déploiement au dernier état de déploiement terminé lorsqu'une CloudWatch alarme indique que le déploiement a échoué, sélectionnez Annulation en **cas d'échec**.

1. Pour modifier les options de calcul, développez **Configuration du calcul**, puis procédez comme suit : 

   1. Pour les services sur AWS Fargate, pour la **version de la plateforme**, choisissez la nouvelle version.

   1. Pour les services qui utilisent une stratégie de fournisseur de capacité, pour **Stratégie de fournisseur de capacité**, procédez comme suit :
      + Pour ajouter un fournisseur de capacité supplémentaire, choisissez **Ajouter plus**. Ensuite, pour **Fournisseur de capacité**, choisissez le fournisseur de capacité.
      + Pour supprimer un fournisseur de capacité, à droite du fournisseur de capacité, choisissez **Supprimer**.

      Un service qui utilise un fournisseur de capacité de groupe Auto Scaling ne peut pas être mis à jour pour utiliser un fournisseur de capacité Fargate. Un service qui utilise un fournisseur de capacité Fargate ne peut pas être mis à jour pour utiliser un fournisseur de capacité de groupe Auto Scaling.

1. (Facultatif) Pour configurer l’autoscaling du service, développez **Autoscaling du service**, puis spécifiez les paramètres suivants. Pour utiliser l’autoscaling prédictif, qui examine les données de charge passées à partir des flux de trafic, configurez-le après avoir créé le service. Pour de plus amples informations, veuillez consulter [Utilisez des modèles historiques pour faire évoluer les services Amazon ECS grâce à une mise à l'échelle prédictive](predictive-auto-scaling.md).

   1. Pour utiliser la mise à l'échelle automatique du service, sélectionnez **Service Auto Scaling** (mise à l'échelle automatique du service).

   1. Pour **Nombre minimum de tâches**, saisissez la limite inférieure du nombre de tâches à utiliser pour l’autoscaling du service. Le nombre souhaité ne sera pas inférieur à ce nombre.

   1. Pour **Nombre maximal de tâches**, saisissez la limite supérieure du nombre de tâches à utiliser par l’autoscaling du service. Le nombre souhaité ne sera pas supérieur à ce nombre.

   1. Choisissez le type de stratégie. Sous **Type de stratégie de mise à l’échelle**, choisissez l’une des options suivantes.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/update-service-console-v2.html)

1. (Facultatif) Pour utiliser Service Connect, sélectionnez **Turn on Service Connect** (Activer Service Connect), puis spécifiez les informations suivantes :

   1. Sous **Service Connect configuration** (Configuration de Service Connect), spécifiez le mode client.
      + Si votre service exécute une application client réseau qui doit uniquement se connecter à d’autres services de l’espace de noms, sélectionnez **Côté client uniquement**.
      + Si votre service exécute une application réseau ou un service Web et doit fournir des points de terminaison pour ce service, et se connecte à d'autres services dans l'espace de noms, choisissez **Client and server** (Client et serveur).

   1. Pour utiliser un espace de noms qui n'est pas l'espace de noms de cluster par défaut, dans **Namespace** (Espace de noms), choisissez l'espace de noms du service. Il peut s'agir d'un espace de noms créé séparément dans le même espace Région AWS dans votre région Compte AWS ou d'un espace de noms dans la même région qui est partagé avec votre compte en utilisant AWS Resource Access Manager ()AWS RAM. *Pour plus d'informations sur les espaces de AWS Cloud Map noms partagés, voir [Partage d'espaces de AWS Cloud Map noms entre comptes dans le guide](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html) du développeur AWS Cloud Map *

   1. (Facultatif) Spécifiez une configuration de journal. Sélectionnez **Utiliser la collecte de journaux**. L'option par défaut envoie les journaux du conteneur à CloudWatch Logs. Les autres options du pilote de journal sont configurées à l'aide de AWS FireLens. Pour de plus amples informations, veuillez consulter [Envoyer les journaux Amazon ECS à un AWS service ou AWS Partner](using_firelens.md).

      Voici une description plus détaillée de chaque destination de journal de conteneur.
      + **Amazon CloudWatch** — Configurez la tâche pour envoyer les journaux des conteneurs à CloudWatch Logs. Les options du pilote de journal par défaut sont fournies, ce qui permet de créer un groupe de CloudWatch journaux en votre nom. Pour spécifier un autre nom de groupe de journaux, modifiez les valeurs des options de pilote.
      + **Amazon Data Firehose** : configurez la tâche pour envoyer des journaux de conteneur à Firehose. Les options par défaut du pilote de journalisation sont fournies. Elles envoient les journaux vers un flux de livraison Firehose. Pour spécifier un autre nom de flux de diffusion, modifiez les valeurs des options de pilote.
      + **Amazon Kinesis Data Streams** : configurez la tâche pour envoyer des journaux de conteneur à Kinesis Data Streams. Les options par défaut du pilote de journalisation sont fournies. Elles permettent d’envoyer les journaux vers un flux Kinesis Data Streams. Pour spécifier un autre nom de flux, modifiez les valeurs des options de pilote.
      + **Amazon OpenSearch Service** — Configurez la tâche pour envoyer les journaux des conteneurs vers un domaine OpenSearch de service. Les options de pilote de journal doivent être fournies. 
      + **Simple Storage Service (Amazon S3)** : configurez la tâche pour envoyer des journaux de conteneur à un compartiment Simple Storage Service (Amazon S3). Les options de pilote de journal par défaut sont fournies, mais vous devez spécifier un nom de compartiment Simple Storage Service (Amazon S3) valide.

   1. Pour activer les journaux d'accès, procédez comme suit :

      1. Développez la **configuration du journal d'accès**. Pour **Format**, choisissez **JSON** ou`TEXT`.

      1. Pour inclure les paramètres de requête dans les journaux d'accès, sélectionnez **Inclure les paramètres de requête**.
**Note**  
Pour désactiver les journaux d'accès, dans **Format**, sélectionnez **Aucun**.

1. Si votre tâche utilise un volume de données compatible avec la configuration lors du déploiement, vous pouvez configurer le volume en développant **Volume**.

   Le nom et le type de volume sont configurés lorsque vous créez une révision de définition de tâche et ne peuvent pas être modifiés lorsque vous mettez à jour un service. Pour mettre à jour le nom et le type du volume, vous devez créer une révision de définition de tâche et mettre à jour un service à l’aide de la nouvelle révision.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/fr_fr/AmazonECS/latest/developerguide/update-service-console-v2.html)

1. (Facultatif) Pour vous aider à identifier votre service, développez **Tags** (Balises), puis configurez vos balises.
   + [Ajouter une balise] Choisissez **Ajouter une balise** et procédez comme suit :
     + Pour **Clé**, saisissez le nom de la clé.
     + Pour **Valeur**, saisissez la valeur de clé.
   + [Supprimer une balise] En regard de la balise, choisissez **Supprimer la balise**.

1. Choisissez **Mettre à jour**.

------
#### [ AWS CLI ]
+ Exécutez `update-service`. Pour plus d'informations sur l'exécution de la commande, voir [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) dans la AWS Command Line Interface référence. 

  L’exemple `update-service` suivant met à jour le nombre de tâches souhaité du service `my-http-service` sur deux.

  Remplacez le *user-input* par vos valeurs.

  ```
  aws ecs update-service \
      --cluster MyCluster \
      --service my-http-service \
      --desired-count 2
  ```

------

## Étapes suivantes
<a name="update-service-next-steps"></a>

Suivez votre déploiement et consultez l’historique des services pour les services qui utilisent le disjoncteur Amazon ECS. Pour de plus amples informations, veuillez consulter [Affichage de l’historique d’un service à l’aide des déploiements de service Amazon ECS](service-deployment.md).

# Mise à jour d’un service Amazon ECS pour utiliser un fournisseur de capacité
<a name="update-service-managed-instances"></a>

Si vous avez un service existant qui utilise le type de lancement Amazon EC2 ou Fargate et que vous souhaitez utiliser les instances gérées Amazon ECS, vous devez mettre à jour le service pour utiliser votre fournisseur de capacité d’instances gérées Amazon ECS.

## Conditions préalables
<a name="update-service-managed-instances-prerequisites"></a>

Créez un fournisseur de capacité pour vos instances gérées Amazon ECS. Pour de plus amples informations, veuillez consulter [Création d’un fournisseur de capacité pour les instances gérées Amazon ECS](create-capacity-provider-managed-instances.md).

## Procédure
<a name="update-service-managed-instances-procedure"></a>

------
#### [ Console ]

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la page des détails du cluster, dans la section **Services**, cochez la case à côté du service, puis choisissez **Mettre à jour**.

1. Sélectionnez **Forcer un nouveau déploiement**.

1. Sous **Configuration de calcul**, choisissez la stratégie de fournisseur de capacité. Choisissez ensuite l’une des méthodes suivantes :
   + Lorsque votre fournisseur de capacité d’instances gérées Amazon ECS est le fournisseur de capacité par défaut, choisissez **Utiliser le cluster par défaut**.
   + Lorsque votre fournisseur de capacité d’instances gérées Amazon ECS n’est pas le fournisseur de capacité par défaut, choisissez **Utiliser un cluster personnalisé (Avancé)**. Choisissez votre fournisseur de capacité d’instances gérées Amazon ECS, puis pour **Poids**, choisissez 1.

1. Choisissez **Mettre à jour**.

------
#### [ AWS CLI ]
+ Exécutez `update-service`. Pour plus d'informations sur l'exécution de la commande, voir [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) dans la AWS Command Line Interface référence. 

  Remplacez le *user-input* par vos valeurs.

  ```
  aws ecs update-service \
      --cluster my-cluster \
      --service my-service \
      --capacity-provider-strategy capacityProvider=my-managed-instance-capacity-provider,weight=1 \
      --force-new-deployment
  ```

------

# Suppression d’un service Amazon ECS à l’aide de la console
<a name="delete-service-v2"></a>

Voici quelques-unes des raisons pour lesquelles vous voudriez supprimer un service :
+ L’application n’est plus nécessaire
+ Vous procédez à la migration du service vers un nouvel environnement
+ L’application n’est pas utilisée activement
+ L’application utilise plus de ressources que nécessaire et vous essayez d’optimiser vos coûts

La capacité du service est automatiquement réduite à 0. Les ressources de l'équilibreur de charge ou de la découverte de service qui sont associées au service, elles ne sont pas affectées par la suppression de service. Pour supprimer vos ressources Elastic Load Balancing, consultez l'une des rubriques suivantes, en fonction du type de votre équilibreur de charge : [Suppression d'un Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-delete.html) ou [Suppression d'un Network Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-delete.html). 

Lorsque vous supprimez un service, Amazon ECS supprime tous les déploiements de service et toutes les révisions de service pour ce service.

Lorsque vous supprimez un service, s’il reste des tâches en cours d’exécution qui nécessitent un nettoyage, le statut du service passe de `ACTIVE` à `DRAINING`, et le service n’est plus visible dans la console ni dans l’opération d’API `ListServices`. Une fois que toutes les tâches sont passées à l'état `STOPPING` ou `STOPPED`, l'état du service passe de `DRAINING` à `INACTIVE`. Les services ayant le statut `DRAINING` ou `INACTIVE` peuvent toujours être consultés à l’aide de l’opération d’API `DescribeServices`. 

**Important**  
Si vous essayez de créer un nouveau service portant le même nom qu’un service existant dont le statut est `ACTIVE` ou `DRAINING`, vous recevrez un message d’erreur.

**Procédure**

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, sélectionnez le cluster pour le service.

1. Sur la page **Clusters**, choisissez le cluster.

1. Sur la *name* page **Cluster :**, choisissez l'onglet **Services**. 

1. Sélectionnez les services, puis choisissez **Delete** (Supprimer).

1. Pour supprimer un service même s'il n'a pas été réduit à zéro tâche, sélectionnez**Force delete service** (Forcer la suppression du service).

1. À l’invite de confirmation, saisissez **supprimer**, puis choisissez **Supprimer**. 

# Migration d’un ARN court de service Amazon ECS vers un ARN long
<a name="service-arn-migration"></a>

Amazon ECS attribue un Amazon Resource Name (ARN) unique à chaque service. Les services créés avant 2021 ont un format ARN court :

 `arn:aws:ecs:region:aws_account_id:service/service-name`

Amazon ECS a modifié le format ARN pour inclure le nom du cluster. Ceci est un format ARN long :

`arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`

Pour pouvoir baliser votre service, celui-ci doit avoir un format d’ARN long. 

Vous pouvez procéder à la migration d’un service au format ARN court vers le format ARN long sans avoir à recréer le service. Vous pouvez utiliser l’API, la CLI ou la console. Vous ne pouvez pas annuler l’opération de migration.

Le processus de migration est transparent et garantit une durée d’indisponibilité nulle pour votre service. Pendant la migration :
+ **Disponibilité du service** : votre service continue de fonctionner normalement sans interruption du trafic ou des fonctionnalités.
+ **Tâches en cours** : les tâches existantes continuent de s’exécuter sans interruption. Les nouvelles tâches lancées après la migration utiliseront le format ARN long si le paramètre du compte `taskLongArnFormat` est activé.
+ **Instances de conteneur** : les instances de conteneur ne sont pas affectées par la migration de l’ARN du service et continuent de fonctionner normalement.
+ **Configuration du service** : tous les paramètres du service, y compris la définition des tâches, la mise en réseau et les configurations de l’équilibreur de charge, restent inchangés.

Si vous souhaitez l'utiliser CloudFormation pour étiqueter un service au format ARN court, vous devez migrer le service à l'aide de l'API, de la CLI ou de la console. Une fois la migration terminée, vous pouvez l'utiliser CloudFormation pour étiqueter le service.

Si vous souhaitez utiliser Terraform pour étiqueter un service avec un format ARN court, vous devez procéder à la migration du service à l’aide de l’API, de la CLI ou de la console. Une fois la migration terminée, vous pouvez utiliser Terraform pour étiqueter le service.

Une fois la migration terminée, le service comporte les changements suivants :
+ Le format ARN long

  `arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`
+ Lorsque vous effectuez une migration à l'aide de la console, Amazon ECS ajoute une balise au service dont la clé est définie sur « ecs : serviceArnMigrated At » et la valeur sur l'horodatage de la migration (format UTC).

  Cette balise est prise en compte dans votre quota de balises.
+ Lorsque le `PhysicalResourceId` in a CloudFormation stack représente un ARN de service, la valeur ne change pas et restera l'ARN du service court. 

## Conditions préalables
<a name="migrate-service-arn-prerequisite"></a>

Effectuez les opérations suivantes avant de procéder à la migration de l’ARN du service.

1. Pour savoir si vous avez un ARN court de service, consultez les détails du service dans la console Amazon ECS (un avertissement s’affiche lorsque le service utilise le format d’ARN court) ou le paramètre de retour `serviceARN` renvoyé par `describe-services`. Lorsque l’ARN n’inclut pas le nom du cluster, il s’agit d’un ARN court. Voici le format d’un ARN court :

    `arn:aws:ecs:region:aws_account_id:service/service-name`

1. Notez la date de création.

1.  Si vous avez des politiques IAM qui utilisent le format ARN court, mettez-les à jour pour passer au format ARN long.

   Remplacez chaque *user input placeholder* par vos propres informations.

    `arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`

   Pour plus d'informations, consultez la section [Modification des politiques IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html) dans le *guide de l' Gestion des identités et des accès AWS utilisateur*.

1.  Si vous avez des outils qui utilisent le format ARN court, mettez-les à jour pour passer au format ARN long.

   Remplacez chaque *user input placeholder* par vos propres informations.

    `arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name`

1. Activer le format ARN long du service. Exécutez `put-account-setting` avec l'option `serviceLongArnFormat` définie à `enabled`. Pour plus d'informations, [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)consultez le manuel *Amazon Elastic Container Service API Reference*.

   Exécutez la commande en tant qu’utilisateur racine lorsque votre service a une date `createdAt` inconnue.

   ```
   aws ecs put-account-setting --name serviceLongArnFormat --value enabled
   ```

   Exemple de sortie

   ```
   {
       "setting": {
           "name": "serviceLongArnFormat",
           "value": "enabled",
           "principalArn": "arn:aws:iam::123456789012:role/your-role",
           "type": user
       }
   }
   ```

1. Activer le format ARN long de la tâche. Ce paramètre de compte contrôle le format ARN pour les nouvelles tâches lancées une fois la migration du service terminée. Exécutez `put-account-setting` avec l'option `taskLongArnFormat` définie à `enabled`. Pour plus d'informations, [put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)consultez le manuel *Amazon Elastic Container Service API Reference*.

   Exécutez la commande en tant qu’utilisateur racine lorsque votre service a une date `createdAt` inconnue.

   ```
   aws ecs put-account-setting --name taskLongArnFormat --value enabled
   ```

   Exemple de sortie

   ```
   {
       "setting": {
           "name": "taskLongArnFormat",
           "value": "enabled",
           "principalArn": "arn:aws:iam::123456789012:role/your-role",
           "type": user
       }
   }
   ```
**Note**  
Le paramètre `taskLongArnFormat` ne déclenche pas directement la migration des tâches existantes. Il n’affecte que le format ARN des nouvelles tâches créées après l’activation du paramètre. Les tâches en cours d’exécution existantes conservent leur format ARN actuel jusqu’à ce qu’elles soient remplacées dans le cadre d’opérations de service normales (telles que des déploiements ou des activités de mise à l’échelle).

## Procédure
<a name="migrate-service-arn-procedure"></a>

Suivez les instructions suivantes pour procéder à la migration de votre ARN de service.

### Console
<a name="migrate-service-arn-procedure-console"></a>

1. Ouvrez la console à la [https://console.aws.amazon.com/ecs/version 2](https://console.aws.amazon.com/ecs/v2).

1. Sur la page **Clusters**, choisissez le cluster.

1. Dans la section **Services**, choisissez un service dont la colonne ARN contient un avertissement.

   La page de détails du service s’affiche.

1. Choisissez **Procéder à la migration vers un ARN long**.

   La boîte de dialogue de « Procéder à la migration du service » s’affiche.

1. Choisissez **Migrate (Migrer)**.

### INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="migrate-service-arn-procedure-cli"></a>

Une fois les conditions préalables remplies, vous pouvez étiqueter votre service. Exécutez la commande suivante :

Amazon ECS envisage de transmettre le format d’ARN long dans une requête d’API `tag-resource` pour un service avec un ARN court comme signal de migration du service afin d’utiliser le format d’ARN long.

```
aws ecs tag-resource \
    --resource-arn arn:aws:ecs:region:aws_account_id:service/cluster-name/service-name
    --tags key=key1,value=value1
```

Voici quelques exemples de balises MyService dont la clé est définie sur « TestService » et la valeur sur « » WebServers :

```
aws ecs tag-resource \
    --resource-arn arn:aws:ecs:us-east-1:123456789012:service/MyCluster/MyService
    --tags key=TestService1,value=WebServers
```

### Terraform
<a name="migrate-service-arn-procedure-terraform"></a>

Une fois les conditions préalables remplies, vous pouvez étiqueter votre service. Créez une ressource `aws_ecs_service` et définissez la référence `tags`. Pour plus d’informations, consultez la section [Resource : aws\$1ecs\$1service](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ecs_service) dans la documentation de Terraform.

```
resource "aws_ecs_service" "MyService" {
  name    = "example"
  cluster = aws_ecs_cluster.MyService.id

 tags = {
 "Name"  =  "MyService"
 "Environment"  =  "Production"
 "Department"  =  "QualityAssurance"
  }
}
```

### Étapes suivantes
<a name="tag-next-steps"></a>

Vous pouvez ajouter des balises au service. Pour de plus amples informations, veuillez consulter [Ajout de balises aux ressources Amazon ECS](tag-resources-console.md).

Si vous souhaitez qu’Amazon ECS propage les balises de la définition de tâche ou du service dans la tâche, exécutez `update-service` avec le paramètre `propagateTags`. *Pour plus d'informations, voir [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html) dans la AWS Command Line Interface référence.*

## Résolution des problèmes
<a name="troubleshooting-arn-migration"></a>

 Certains utilisateurs peuvent rencontrer l’erreur suivante lorsqu’ils procèdent à la migration du format d’ARN court vers le format d’ARN long. 

`There was an error while migrating the ARN of service service-name. The specified account does not have serviceLongArnFormat or taskLongArnFormat account settings enabled. Add account settings in order to enable tagging.` 

 Si vous avez déjà activé les paramètres du compte `serviceLongArnFormat`, mais que vous rencontrez toujours cette erreur, cela peut être dû au fait que les paramètres du compte pour le format ARN long n’ont pas été activés pour le principal IAM qui a initialement créé le service. 

1.  Identifiez le principal qui a créé le service.

   1. Dans la console, les informations sont disponibles dans le champ **Créé par** de l’onglet **Configuration et mise en réseau** de la page « Détails du service » de la console Amazon ECS. 

   1. Pour le AWS CLI, exécutez la commande suivante :

      Remplacez le *user-input* par vos valeurs.

      ```
      aws ecs describe-services --cluster cluster-name --services service-name --query 'services[0].{createdBy: createdBy}'
      ```

1. Activez les paramètres de compte requis pour ce principal spécifique. Vous pouvez effectuer cette opération de différentes manières : 

   1.  Assumez le rôle ou l’utilisateur IAM pour ce principal. Ensuite, exécutez `put-account-setting`. 

   1.  Utilisez l’utilisateur racine pour exécuter la commande tout en spécifiant le principal créateur avec le `principal-arn`. 

      Exemple.

      Remplacez le *principal-arn* par la valeur de l'étape 1.

      ```
      aws ecs put-account-setting --name serviceLongArnFormat --value enabled --principal-arn arn:aws:iam::123456789012:role/jdoe
      ```

 Les deux méthodes activent le paramètre de compte `serviceLongArnFormat` requis sur le principal qui a créé le service, ce qui permet de procéder à la migration de l’ARN. 

# Logique de limitation d’un service Amazon ECS
<a name="service-throttle-logic"></a>

Le planificateur de service Amazon ECS inclut désormais une logique qui limite la fréquence de lancement des tâches de service en cas d’échec de lancement répété. Cela permet d’éviter une consommation inutile de ressources et de réduire les coûts.

Lorsque les tâches d’un service ne passent pas d’un état `PENDING` à `RUNNING` et passent directement à un état `STOPPED`, le planificateur :
+ augmente progressivement le délai entre les tentatives de redémarrage ;
+ continue d’augmenter les délais jusqu’à 27 minutes entre les tentatives ;
+ génère un message d’événement de service pour vous informer du problème.

**Note**  
Le délai maximum de 27 minutes peut changer dans les futures mises à jour.

Lorsque la limitation est activée, vous recevez ce message d’événement de service :

```
(service service-name) is unable to consistently start tasks successfully.
```

Caractéristiques importantes de la logique de limitation :
+ Les services poursuivent indéfiniment les tentatives
+ La seule modification est l’augmentation du temps entre les redémarrages
+ Il n’existe aucun paramètre configurable par l’utilisateur

## Résolution des problèmes de limitation
<a name="resolving-throttling"></a>

Pour résoudre le problème de limitation, vous pouvez :
+ mettre à jour le service afin qu’il utilise une nouvelle définition de tâche, ce qui rétablit immédiatement le fonctionnement normal et non limité du service ; Pour de plus amples informations, veuillez consulter [Mettre à jour un service Amazon ECS](update-service-console-v2.md).
+ corriger la cause sous-jacente des défaillances de tâches.

Les causes courantes de défaillances de tâches qui déclenchent la limitation sont les suivantes :
+ Ressources de cluster insuffisantes (ports, mémoire ou UC)
  + Signalé par un [message d’événement de service de ressources insuffisantes](service-event-messages-list.md#service-event-messages-1)
+ Échecs d’extraction de l’image de conteneur
  + Cela peut être dû à des noms d’image non valides, à des balises ou à des autorisations insuffisantes
  + Résulte en `CannotPullContainerError` dans [Affichage des erreurs liées aux tâches Amazon ECS arrêtées](stopped-task-errors.md)
+ Espace disque insuffisant
  + Résulte en `CannotCreateContainerError` dans les [erreurs liées aux tâches arrêtées](stopped-task-errors.md)
  + Pour les étapes de résolution, consultez la section [Résolution des problèmes liés à `API error (500): devmapper` de Docker dans Amazon ECS](CannotCreateContainerError.md)

**Important**  
Les scénarios suivants ne déclenchent PAS la logique de limitation :  
Tâches qui s’arrêtent après avoir atteint l’état `RUNNING`
Tâches arrêtées suite à l’échec des surveillances d’état d’Elastic Load Balancing
Tâches pour lesquelles la commande du conteneur se termine avec un code différent de zéro après avoir atteint l’état `RUNNING`

# Paramètres de définition d’un service Amazon ECS
<a name="service_definition_parameters"></a>

Une définition de service définit comment exécuter votre service Amazon ECS service. Les paramètres suivants peuvent être spécifiés dans une définition de service.

## Type de lancement
<a name="sd-launchtype"></a>

`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.

## Stratégie de fournisseur de capacité
<a name="sd-capacityproviderstrategy"></a>

`capacityProviderStrategy`  
Type : tableau d'objets  
Obligatoire : non  
Stratégie du fournisseur de capacité à utiliser pour le service.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.  
Une stratégie de fournisseur de capacité consiste en un ou plusieurs fournisseurs de capacité avec le `base` et `weight` à leur attribuer. Un fournisseur de capacité doit être associé au cluster à utiliser dans une stratégie de fournisseur de capacité. L' PutClusterCapacityProviders API est utilisée pour associer un fournisseur de capacité à un cluster. Seuls les fournisseurs de capacité ayant un statut `ACTIVE` ou `UPDATING` peuvent être utilisés.  
Si un `capacityProviderStrategy` est spécifié, le paramètre `launchType` doit être omis. Lorsque ni `capacityProviderStrategy` ni `launchType` ne sont spécifiés, le `defaultCapacityProviderStrategy` pour le cluster est utilisé.  
Si vous souhaitez spécifier un fournisseur de capacité qui utilise un groupe Auto Scaling, le fournisseur de capacité doit déjà être créé. De nouveaux fournisseurs de capacité peuvent être créés à l'aide de l'opération CreateCapacityProvider API.  
Pour utiliser un AWS fournisseur de capacité Fargate, spécifiez le ou les fournisseurs `FARGATE` de `FARGATE_SPOT` capacité. Les fournisseurs AWS de capacité Fargate sont disponibles pour tous les comptes et doivent uniquement être associés à un cluster pour être utilisés.  
L'opération PutClusterCapacityProviders API est utilisée pour mettre à jour la liste des fournisseurs de capacité disponibles pour un cluster après sa création.    
`capacityProvider`  <a name="capacityProvider"></a>
Type : Chaîne  
Obligatoire : oui  
Le nom abrégé ou l'Amazon Resource Name (ARN) complet du fournisseur de capacité.  
`weight`  <a name="weight"></a>
Type : Integer  
Plage valide : entiers compris entre 0 et 1 000.  
Obligatoire : non  
La valeur de poids indique le pourcentage relatif du nombre total de tâches lancées qui utilisent le fournisseur de capacité spécifié.  
Par exemple, supposons que vous avez une stratégie qui contient deux fournisseurs de capacité et que les deux ont un poids de un. Lorsque la base est satisfaite, les tâches sont réparties équitablement entre les deux fournisseurs de capacité. Dans la même logique, supposons que vous spécifiez un poids de 1 pour *capacityProviderA* et un poids de 4 pour *capacityProviderB*. Ensuite, pour chaque tâche exécutée avec *capacityProviderA*, quatre tâches utilisent *capacityProviderB*.  
`base`  <a name="base"></a>
Type : Integer  
Plage valide : entiers compris entre 0 et 100 000.  
Obligatoire : non  
La valeur de base indique le nombre minimum de tâches à exécuter sur le fournisseur de capacité spécifié. Une base ne peut être définie que pour un seul fournisseur de capacité dans une stratégie de fournisseur de capacité.

## Définition de tâche
<a name="sd-taskdefinition"></a>

`taskDefinition`  
Type : chaîne  
Obligatoire : non  
L'Amazon Resource Name (ARN) complet ou `family` et `revision` (`family:revision`) de la définition de tâche à exécuter dans votre service. Si un `revision` n'est pas spécifié, la dernière révision `ACTIVE` de la famille spécifiée est utilisée.  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.  
Une définition de tâche doit être spécifiée lors de l'utilisation du contrôleur de déploiement de mise à jour continue (`ECS`).

## Système d'exploitation de la plateforme
<a name="platform-os"></a>

`platformFamily`  
Type : chaîne  
Obligatoire : Conditionnelle  
Par défaut : Linux  
Ce paramètre est requis pour les services Amazon ECS services hébergés sur Fargate.  
Ce paramètre est ignoré pour les services Amazon ECS services hébergés sur Amazon EC2.  
Système d'exploitation des conteneurs qui exécutent le service. Les valeurs valides sont `LINUX`, `WINDOWS_SERVER_2019_FULL`, `WINDOWS_SERVER_2019_CORE`, `WINDOWS_SERVER_2022_FULL` et `WINDOWS_SERVER_2022_CORE`.  
La valeur `platformFamily` pour chaque tâche que vous spécifiez pour le service doit correspondre à la valeur `platformFamily` du service. Par exemple, si vous définissez `platformFamily` sur `WINDOWS_SERVER_2019_FULL`, la valeur `platformFamily` de toutes les tâches doit être `WINDOWS_SERVER_2019_FULL`.

## Version de plateforme
<a name="sd-platformversion"></a>

`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.

## Cluster
<a name="sd-cluster"></a>

`cluster`  
Type : chaîne  
Obligatoire : non  
Nom court ou Amazon Resource Name (ARN) complet du cluster sur lequel exécuter votre service. Si vous ne spécifiez aucun cluster, le cluster `default` est sélectionné.

## Nom du service
<a name="sd-servicename"></a>

`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.

## Stratégie de planification
<a name="sd-schedulingstrategy"></a>

`schedulingStrategy`  
Type : Chaîne  
Valeurs valides : `REPLICA` \$1 `DAEMON`  
Obligatoire : non  
Stratégie de planification à utiliser. Si aucune stratégie de planification n'est spécifiée, la stratégie `REPLICA` est utilisée. Pour de plus amples informations, veuillez consulter [Services Amazon ECS](ecs_services.md).  
Deux stratégies de planificateur de service sont disponibles :  
+ `REPLICA` – La stratégie de planification des réplicas place et gère le nombre de tâches souhaité dans votre cluster. Par défaut, le planificateur de service répartit les tâches entre les zones de disponibilité. Vous pouvez utiliser des stratégies et des contraintes de placement des tâches afin de personnaliser la façon dont les tâches sont placées. Pour de plus amples informations, veuillez consulter [Stratégie de planification de réplica](ecs_service-options.md#service_scheduler_replica).
+ `DAEMON` – La stratégie de planification du démon déploie exactement une tâche sur chaque instance de conteneur active qui répond à toutes les contraintes de placement des tâches spécifiées dans votre cluster. Lors de l'utilisation de cette stratégie, il n'est pas nécessaire de spécifier un nombre de tâches souhaité, une stratégie de placement des tâches ou d'utiliser les politiques Service Auto Scaling. Pour de plus amples informations, veuillez consulter [Stratégie de planification de démon](ecs_service-options.md#service_scheduler_daemon).
**Note**  
Les tâches Fargate ne prennent pas en charge la stratégie de planification `DAEMON`.

## Nombre souhaité
<a name="sd-desiredcount"></a>

`desiredCount`  
Type : Integer  
Obligatoire : non  
Nombre d'instances de la définition de tâche spécifiée à placer et à exécuter dans votre service.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.  
Ce paramètre est requis si la stratégie de planification `REPLICA` est utilisée. Si le service utilise la stratégie de planification `DAEMON`, ce paramètre est facultatif.  
Dans le cadre de l’autoscaling de service, lorsque vous mettez à jour un service en cours d’exécution avec un `desiredCount` inférieur au nombre de tâches actuellement en cours d’exécution, le service est réduit au `desiredCount` spécifié. 

## Configuration de déploiement
<a name="sd-deploymentconfiguration"></a>

`deploymentConfiguration`  
Type : objet  
Obligatoire : non  
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.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.    
`maximumPercent`  <a name="maximumPercent"></a>
Type : Integer  
Obligatoire : non  
Si un service utilise le type de déploiement de mise à jour propagée (`ECS`), le paramètre `maximumPercent` représente une limite supérieure du nombre de tâches de votre service autorisées à avoir l'état `RUNNING`, `STOPPING` ou `PENDING` pendant un déploiement. Il est exprimé en tant que pourcentage de `desiredCount` arrondi à la valeur inférieure la plus proche. Vous pouvez utiliser ce paramètre pour définir la taille des lots de déploiement. Par exemple, si votre service utilise le planificateur de services `REPLICA` et a un `desiredCount` de quatre tâches et une valeur `maximumPercent` de 200 %, le planificateur démarre quatre nouvelles tâches avant d’arrêter les quatre tâches les plus anciennes. Cela s'applique à condition que les ressources de cluster nécessaires à cette opération soient disponibles. La valeur `maximumPercent` par défaut pour un service à l'aide du planificateur de service `REPLICA` est de 200 %.  
Le planificateur Amazon ECS utilise ce paramètre pour remplacer les tâches défectueuses en démarrant d’abord les tâches de remplacement, puis en arrêtant les tâches défectueuses, à condition que les ressources du cluster permettant de démarrer les tâches de remplacement soient disponibles. Pour de plus amples informations sur la manière dont le planificateur remplace les tâches défectueuses, consultez la section [Services Amazon ECS](ecs_services.md).  
Si votre service utilise le type de planificateur de service `DAEMON`, le `maximumPercent` doit rester à 100 %. C’est la valeur par défaut.  
Le nombre maximum de tâches lors d'un déploiement est le `desiredCount` multiplié par le `maximumPercent`/100, arrondi au nombre entier inférieur le plus proche.  
Si un service utilise les types de déploiement bleu/vert (`CODE_DEPLOY`) ou `EXTERNAL` et des tâches qui utilisent le type de lancement EC2, la valeur du **pourcentage maximal** est définie sur la valeur par défaut. Cette valeur sert à définir la limite supérieure du nombre de tâches du service qui restent dans l’état `RUNNING` pendant que les instances de conteneur sont dans l’état `DRAINING`.  
Vous ne pouvez pas spécifier de valeur `maximumPercent` personnalisée pour un service qui utilise le type bleu/vert (`CODE_DEPLOY`) ou `EXTERNAL` et dont les tâches utilisent EC2.
Si un service utilise les types de déploiement bleu/vert (`CODE_DEPLOY`) ou `EXTERNAL` et des tâches qui utilisent Fargate, la valeur du pourcentage maximal n’est pas utilisée. La valeur est toujours renvoyée lors de la description de votre service.  
`minimumHealthyPercent`  <a name="minimumHealthyPercent"></a>
Type : Integer  
Obligatoire : non  
Si un service utilise le type de déploiement de mise à jour propagée (`ECS`), `minimumHealthyPercent` représente une limite inférieure du nombre de tâches de votre service qui doivent rester l'état `RUNNING` pendant un déploiement. Cela est exprimé en tant que pourcentage de `desiredCount` arrondi à la valeur supérieure la plus proche. Vous pouvez utiliser ce paramètre pour procéder au déploiement sans avoir recours à une capacité de cluster supplémentaire.  
Par exemple, si votre service a un `desiredCount` de quatre tâches, un `minimumHealthyPercent` de 50 % et un `maximumPercent` de 100 %, le planificateur de service peut arrêter deux tâches existantes pour libérer de la capacité de cluster avant de lancer deux nouvelles tâches.   
 Si des tâches ne fonctionnent pas correctement et s'il `maximumPercent` n'autorise pas le planificateur Amazon ECS à démarrer des tâches de remplacement, le planificateur arrête les tâches défectueuses one-by-one (en utilisant la `minimumHealthyPercent` contrainte) afin de libérer la capacité de lancer des tâches de remplacement. Pour de plus amples informations sur la manière dont le planificateur remplace les tâches défectueuses, consultez la section [Services Amazon ECS](ecs_services.md).  
Pour les services qui *n'utilisent pas* d'équilibreur de charge, il convient de noter ce qui suit :  
+ Un service est considéré comme intègre si tous les conteneurs essentiels dans les tâches du service réussissent leurs surveillances d'état.
+ Si une tâche n'a pas de conteneurs essentiels avec une surveillance de l'état définie, le planificateur de service attend 40 secondes une fois qu'une tâche a atteint l'état `RUNNING` avant que celle-ci soit comptée dans le pourcentage minimal total d'intégrité.
+ Si une tâche comporte un ou plusieurs conteneurs essentiels avec une surveillance de l'état définie, le planificateur de service attend que la tâche atteigne un état intègre avant de la compter dans le pourcentage minimum total d'intégrité. Une tâche est considérée comme intègre lorsque tous ses conteneurs essentiels ont réussi leurs surveillances d'état. La durée pendant laquelle le planificateur de service peut attendre est déterminée par les paramètres de surveillance de l'état du conteneur. Pour de plus amples informations, veuillez consulter [Surveillance de l'état](task_definition_parameters.md#container_definition_healthcheck). 
Pour les services qui *utilisent* un équilibreur de charge, il convient de noter ce qui suit :  
+ Si une tâche n'a pas de conteneurs essentiels avec une surveillance de l'état définie, le planificateur de services attend que la surveillance de l'état du groupe cible de l'équilibreur de charge retrouve un état intègre avant de compter la tâche dans le pourcentage minimal total d'intégrité.
+ Si une tâche possède un conteneur essentiel avec une surveillance de l'état définie, le planificateur de services attend que la tâche atteigne un état intègre et que la surveillance de l'état du groupe cible d'équilibrage de charge retrouve un état intègre avant de compter la tâche dans le pourcentage minimal total d'intégrité.
La valeur par défaut d'un service de réplica pour `minimumHealthyPercent` est 100 %. La `minimumHealthyPercent` valeur par défaut pour un service utilisant le calendrier de `DAEMON` service est 0 % pour le AWS CLI AWS SDKs, le, APIs et 50 % pour le AWS Management Console.  
Le nombre minimum de tâches saines lors d'un déploiement correspond à `desiredCount` multiplié par `minimumHealthyPercent`/100, arrondi au nombre entier supérieur le plus proche.  
Si un service utilise les types de déploiement bleu/vert (`CODE_DEPLOY`) ou `EXTERNAL` et exécute des tâches qui utilisent EC2, la valeur du **pourcentage minimum sain** est définie sur la valeur par défaut. Cette valeur sert à définir la limite inférieure du nombre de tâches du service qui restent dans l’état `RUNNING` pendant que les instances de conteneur sont dans l’état `DRAINING`.  
Vous ne pouvez pas spécifier de valeur `maximumPercent` personnalisée pour un service qui utilise le type bleu/vert (`CODE_DEPLOY`) ou `EXTERNAL` et dont les tâches utilisent EC2.
Si un service utilise les types de déploiement bleu/vert (`CODE_DEPLOY`) ou `EXTERNAL` et exécute des tâches qui utilisent Fargate, le pourcentage minimum sain n’est pas utilisé, bien qu’il soit renvoyé lors de la description de votre service.

## Contrôleur de déploiement
<a name="sd-deploymentcontroller"></a>

`deploymentController`  
Type : objet  
Obligatoire : non  
Le contrôleur de déploiement à utiliser pour le service. Si aucun contrôleur de déploiement n'est spécifié, le contrôleur `ECS` est utilisé. Pour de plus amples informations, veuillez consulter [Services Amazon ECS](ecs_services.md).  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.    
`type`  
Type : Chaîne  
Valeurs valides : `ECS` \$1 `CODE_DEPLOY` \$1 `EXTERNAL`  
Obligatoire : oui  
Type de contrôleur de déploiement à utiliser. Il existe trois types de contrôleurs de déploiement disponibles :    
`ECS`  
Le contrôleur de déploiement Amazon ECS prend en charge plusieurs stratégies de déploiement : mise à jour continue, blue/green, linear, and canary. The rolling update deployment type involves replacing the current running version of the container with the latest version. Blue/green création d'un nouvel environnement et transfert du trafic en une seule fois. Les déploiements linéaires déplacent progressivement le trafic par paliers de pourcentage égaux. Les déploiements Canary transfèrent d'abord un petit pourcentage du trafic, puis le trafic restant. Le nombre de conteneurs ajoutés ou supprimés par Amazon ECS du service lors de la propagation des mises à jour est contrôlé en ajustant le nombre minimum et maximum de tâches saines lors d'un déploiement de service autorisé, tel que spécifié dans le [deploymentConfiguration](#deploymentConfiguration).  
`CODE_DEPLOY`  
Le type de déploiement blue/green (`CODE_DEPLOY`) utilise le modèle de blue/green déploiement optimisé par CodeDeploy, qui vous permet de vérifier un nouveau déploiement d'un service avant de lui envoyer du trafic de production.  
`EXTERNAL`  
Utilisez le type de déploiement externe lorsque vous souhaitez utiliser n'importe quel contrôleur de déploiement tiers pour contrôler complètement le processus de déploiement d'un service Amazon ECS.

## Placement des tâches
<a name="sd-taskplacement"></a>

`placementConstraints`  
Type : tableau d'objets  
Obligatoire : non  
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 inclut 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.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.    
`type`  
Type : chaîne  
Obligatoire : non  
Type de contrainte. Utilisez `distinctInstance` pour vous assurer que chaque tâche d'un groupe particulier s'exécute sur une instance de conteneur différente. Utilisez `memberOf` pour limiter la sélection à un groupe de candidats valides. La valeur `distinctInstance` n'est pas prise en charge dans les définitions de tâche.  
`expression`  
Type : chaîne  
Obligatoire : non  
Expression de langage de requête de cluster à appliquer à la contrainte. Vous ne pouvez pas spécifier d'expression si le type de contrainte est `distinctInstance`. Pour de plus amples informations, veuillez consulter [Création d’expressions pour définir des instances de conteneur pour les tâches Amazon ECS](cluster-query-language.md).

`placementStrategy`  
Type : tableau d'objets  
Obligatoire : non  
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.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.    
`type`  
Type : Chaîne  
Valeurs valides : `random` \$1 `spread` \$1 `binpack`  
Obligatoire : non  
Type de stratégie de placement. La stratégie de placement `random` place les tâches de façon aléatoire sur les candidats disponibles. La stratégie de placement `spread` répartit le placement sur les candidats disponibles de façon uniforme en fonction du paramètre du `field`. La stratégie `binpack` place les tâches sur les candidats disponibles qui ont la quantité disponible la moins élevée de la ressource spécifiée avec le paramètre `field`. Par exemple, si vous utilisez un BinPack sur la mémoire, une tâche est placée sur l'instance avec la quantité la moins élevée de mémoire restante, mais tout de même suffisante pour exécuter la tâche.  
`field`  
Type : chaîne  
Obligatoire : non  
Champ sur lequel appliquer la stratégie de placement. Pour la stratégie de placement `spread`, les valeurs valides sont `instanceId` (ou `host`, qui produit le même effet), ou toute plateforme ou tout attribut personnalisé appliqué à une instance de conteneur, comme `attribute:ecs.availability-zone`. Pour la stratégie de placement `binpack`, les valeurs valides sont `cpu` et `memory`. Pour la stratégie de placement `random`, ce champ n'est pas utilisé.

## Étiquettes
<a name="sd-tags"></a>

`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`  
Type : Boolean  
Valeurs valides : `true` \$1 `false`  
Obligatoire : non  
Spécifie si utiliser les identifications gérées par Amazon ECS pour les tâches dans le service. La valeur par défaut est `false` si aucune valeur n'est spécifiée. Pour de plus amples informations, veuillez consulter [Mise à jour des balises pour la facturation](ecs-using-tags.md#tag-resources-for-billing).  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.

`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.

## Configuration réseau
<a name="sd-networkconfiguration"></a>

`networkConfiguration`  
Type : objet  
Obligatoire : non  
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. Si vous utilisez Fargate, le mode réseau `awsvpc` est requis. Pour plus d’informations sur la mise en réseau pour EC2, consultez la section [Options de mise en réseau des tâches Amazon ECS pour EC2](task-networking.md). 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](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html).  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.    
`awsvpcConfiguration`  
Type : objet  
Obligatoire : non  
Objet représentant les sous-réseaux et les groupes de sécurité pour une tâche ou un service.    
`subnets`  
Type : tableau de chaînes  
Obligatoire : oui  
Sous-réseaux associés à la tâche ou au service. Il existe une limite de 16 sous-réseaux pouvant être spécifiés selon `awsvpcConfiguration`.  
`securityGroups`  
Type : tableau de chaînes  
Obligatoire : non  
Groupes de sécurité associés à la tâche ou au service. Si vous ne spécifiez pas de groupe de sécurité, c'est le groupe de sécurité par défaut du VPC qui est utilisé. Il existe une limite de cinq groupes de sécurité pouvant être spécifiés selon `awsvpcConfiguration`.  
`assignPublicIP`  
Type : Chaîne  
Valeurs valides : `ENABLED` \$1 `DISABLED`  
Obligatoire : non  
Si l'interface réseau Elastic de la tâche reçoit une adresse IP publique ou non. Si aucune valeur n'est spécifiée, la valeur par défaut de `DISABLED` est utilisée.

`healthCheckGracePeriodSeconds`  
Type : Integer  
Obligatoire : non  
La durée, en secondes, pendant laquelle le planificateur de service Amazon ECS ignore les surveillances de l’état défectueuses d’Elastic Load Balancing, de VPC Lattice et des conteneurs après le premier démarrage d’une tâche. Si vous ne spécifiez aucune valeur pour la période de grâce de surveillance de l’état, la valeur par défaut 0 est utilisée. Si vous n’utilisez aucune surveillance de l’état, `healthCheckGracePeriodSeconds` n’est pas utilisé.  
Si les tâches de votre service mettent du temps à démarrer et à répondre, vous pouvez spécifier une période de grâce de surveillance de l’état pouvant aller jusqu’à 2 147 483 647 secondes (environ 69 ans). Pendant ce temps, le planificateur du service Amazon ECS ignore le statut de la surveillance de l’état. La période de grâce peut empêcher le planificateur de services de marquer les tâches comme non saines et de les arrêter avant qu’elles aient le temps de s’exécuter.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.

`loadBalancers`  
Type : tableau d'objets  
Obligatoire : non  
Un objet d'équilibreur de charge qui représente l'équilibreur de charge à utiliser avec votre service. Pour les services qui utilisent un équilibreur de charge Application Load Balancer ou un Network Load Balancer, il existe une limite de cinq groupes cibles que vous pouvez attacher à un service.  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.  
Une fois que vous avez créé un service, la configuration de l'équilibreur de charge ne peut pas être modifiée à partir de la AWS Management Console. Vous pouvez utiliser le AWS Copilot AWS CLI ou le SDK pour modifier la configuration de l'équilibreur de charge uniquement pour le contrôleur de déploiement `ECS` évolutif, et non AWS CodeDeploy pour le bleu/vert ou externe. AWS CloudFormation Lorsque vous ajoutez, mettez à jour ou supprimez une configuration d'équilibreur de charge, Amazon ECS lance un nouveau déploiement avec la configuration mise à jour d'Elastic Load Balancing. Cela entraîne l'enregistrement et le désenregistrement des tâches auprès des équilibreurs de charge. Nous vous recommandons de vérifier cela dans un environnement de test avant de mettre à jour la configuration d'Elastic Load Balancing. Pour plus d'informations sur la manière de modifier la configuration, consultez le [UpdateService](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_UpdateService.html)manuel *Amazon Elastic Container Service API Reference*.  
Pour les équilibreurs de charge Application Load Balancer et les Network Load Balancer, cet objet doit contenir l'ARN du groupe cible de l'équilibreur de charge, le nom du conteneur (tel qu'il apparaît dans une définition de conteneur) et le port du conteneur pour permettre l'accès à partir de l'équilibreur de charge. Lorsqu'une tâche de ce service est placée sur une instance de conteneur, la combinaison d'instance et de port de conteneur est enregistrée comme cible dans le groupe cible spécifié.    
`targetGroupArn`  
Type : chaîne  
Obligatoire : non  
Amazon Resource Name (ARN) complet du groupe cible Elastic Load Balancing associés à un service.  
L'ARN d'un groupe cible n'est spécifié que si vous utilisez un Application Load Balancer ou un Network Load Balancer.  
`loadBalancerName`  
Type : chaîne  
Obligatoire : non  
Nom de l'équilibreur de charge à associer au service.  
Si vous utilisez un Application Load Balancer ou un Network Load Balancer, omettez le paramètre de nom de l'équilibreur de charge.  
`containerName`  
Type : chaîne  
Obligatoire : non  
Nom du conteneur (tel qu'il apparaît dans une définition de conteneur) à associer à l'équilibreur de charge.  
`containerPort`  
Type : Integer  
Obligatoire : non  
Port du conteneur à associer à l'équilibreur de charge. Ce port doit correspondre à un élément `containerPort` dans la définition de tâche utilisée par les tâches du service. Pour les tâches qui utilisent EC2, l’instance de conteneur doit autoriser le trafic entrant sur le `hostPort` du mappage de port.

`role`  
Type : chaîne  
Obligatoire : non  
Nom abrégé ou ARN complet du rôle IAM qui permet à Amazon ECS d'adresser des appels à votre équilibreur de charge en votre nom. Ce paramètre est uniquement autorisé si vous utilisez un équilibreur de charge avec un seul groupe cible pour votre service, et si votre définition de tâche n'utilise pas le mode réseau `awsvpc`. Si vous spécifiez le paramètre `role`, vous devez également spécifier un objet d'équilibreur de charge avec le paramètre `loadBalancers`.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.  
Si le rôle spécifié possède un chemin d'accès autre que `/`, vous devez spécifier l'ARN de rôle complet (solution recommandée) ou ajouter ce chemin d'accès comme préfixe du nom de rôle. Par exemple, si un rôle nommé `bar` a le chemin d'accès `/foo/`, vous devez spécifier `/foo/bar` comme nom du rôle. Pour plus d'informations, consultez [Noms conviviaux et chemins](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-friendly-names) dans le *Guide de l'utilisateur IAM*.  
Si votre compte a déjà créé le rôle lié à un service Amazon ECS service, ce rôle est utilisé par défaut pour votre service, sauf si vous spécifiez un rôle ici. Le rôle lié à un service est obligatoire si votre définition de tâche utilise le mode réseau awsvpc, auquel cas vous ne devez pas spécifier de rôle ici. Pour de plus amples informations, veuillez consulter [Utilisation des rôles liés à un service pour Amazon ECS](using-service-linked-roles.md).

`serviceConnectConfiguration`  
Type : objet  
Obligatoire : non  
Cette configuration permet à ce service de découvrir des services et de s'y connecter, et, inversement, elle permet à d'autres services au sein d'un espace de noms de découvrir ce service et de s'y connecter.  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.  
Pour de plus amples informations, veuillez consulter [Utilisation de Service Connect pour connecter des services Amazon ECS avec des noms abrégés](service-connect.md).    
`enabled`  
Type : Boolean  
Obligatoire : oui  
Spécifie s'il faut utiliser Service Connect avec ce service.   
`namespace`  
Type : chaîne  
Obligatoire : non  
Nom abrégé ou Amazon Resource Name (ARN) complet de l'espace de AWS Cloud Map noms à utiliser avec Service Connect. L'espace de noms doit se trouver dans la même Région AWS que le service Amazon ECS et le cluster. Le type d'espace de noms n'a aucune incidence sur Service Connect. Pour plus d'informations AWS Cloud Map, consultez la section [Travailler avec les services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) dans le *guide du AWS Cloud Map développeur*.  
`services`  
Type : tableau d'objets  
Obligatoire : non  
Tableau d'objets de service Service Connect. Il s'agit de noms et d'alias (également appelés points de terminaison) utilisés par d'autres services Amazon ECS pour se connecter à ce service.  
Ce champ n'est pas obligatoire pour un service Amazon ECS « client » membre d'un espace de noms uniquement pour se connecter à d'autres services au sein de cet espace de noms. Par exemple, une application frontale qui accepte les demandes entrantes provenant d'un équilibreur de charge attaché au service ou par d'autres moyens.  
Un objet sélectionne un port dans la définition de la tâche, attribue un nom au AWS Cloud Map service et un ensemble d'alias (également appelés points de terminaison) et de ports permettant aux applications clientes de faire référence à ce service.    
`portName`  
Type : Chaîne  
Obligatoire : oui  
Le `portName` doit correspondre au `name` de l'un des `portMappings` de tous les conteneurs dans la définition de tâche de ce service Amazon ECS.  
`discoveryName`  
Type : chaîne  
Obligatoire : non  
`discoveryName`Il s'agit du nom du nouveau AWS Cloud Map service créé par Amazon ECS pour ce service Amazon ECS. Ce nom doit être unique dans l'espace de noms AWS Cloud Map .  
Si ce champ n'est pas spécifié, `portName` est utilisé.  
`clientAliases`  
Type : tableau d'objets  
Obligatoire : non  
Liste des alias clients pour ce service Service Connect. Vous les utilisez pour attribuer des noms qui peuvent être utilisés par les applications clientes. Le nombre maximum d'alias clients dont vous pouvez disposer dans cette est de 1.  
Chaque alias (« point de terminaison ») est un nom DNS et un numéro de port que les autres services Amazon ECS (« clients ») peuvent utiliser pour se connecter à ce service.  
Chaque nom et chaque combinaison de port doivent être uniques dans l'espace de noms.  
Ces noms sont configurés dans chaque tâche du service client, et non dans AWS Cloud Map. Les demandes DNS visant à résoudre ces noms ne quittent pas la tâche et ne sont pas prises en compte dans le quota de demandes DNS par seconde par l'interface réseau Elastic.    
`port`  
Type : Integer  
Obligatoire : oui  
Numéro de port d'écoute du proxy Service Connect. Ce port est disponible dans toutes les tâches du même espace de noms.  
Pour éviter de modifier vos applications dans les services clients Amazon ECS, attribuez-lui le même port que celui que l'application client utilise par défaut.  
`dnsName`  
Type : chaîne  
Obligatoire : non  
Le `dnsName` est le nom que vous utilisez dans les applications des tâches client pour vous connecter à ce service. Le nom doit être une étiquette DNS valide.  
Si ce champ n'est pas spécifié, la valeur par défaut est `discoveryName.namespace`. Si le `discoveryName` n'est pas spécifié, le `portName` issu de la définition de la tâche est utilisé.  
Pour éviter de modifier vos applications dans les services clients Amazon ECS, attribuez-lui le même nom que celui que l'application client utilise par défaut. Par exemple, quelques noms courants sont `database`, `db` ou le nom en minuscules d'une base de données, comme `mysql` ou `redis`.  
`ingressPortOverride`  
Type : Integer  
Obligatoire : non  
(Facultatif) Numéro de port que le proxy Service Connect utilise pour écouter.  
Utilisez la valeur de ce champ pour contourner le proxy pour le trafic sur le numéro de port spécifié dans le `portMapping` nommé de la définition de tâche de cette application, puis utilisez-la dans les groupes de sécurité de votre Amazon VPC pour autoriser le trafic vers le proxy de ce service Amazon ECS.  
En mode `awsvpc`, la valeur par défaut est le numéro du port du conteneur spécifié dans le `portMapping` nommé dans la définition de tâche de cette application. En mode `bridge`, la valeur par défaut correspond au port éphémère du proxy Service Connect.  
`logConfiguration`  
Type : [LogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)Objet  
Obligatoire : non  
Cela définit l'endroit où les journaux du proxy Service Connect sont publiés. Utilisez les journaux pour le débogage lors d'événements inattendus. Cette configuration définit le paramètre `logConfiguration` dans le conteneur de proxy Service Connect pour chaque tâche de ce service Amazon ECS. Le conteneur de proxy n'est pas spécifié dans la définition de tâche.  
Nous vous recommandons d'utiliser la même configuration de journal que les conteneurs d'applications de la définition de tâche pour ce service Amazon ECS. Car FireLens il s'agit de la configuration du journal du conteneur d'applications. Ce n'est pas le conteneur FireLens log router qui utilise l'image du `fluentd ` conteneur `fluent-bit` or.  
`accessLogConfiguration`  
Type : [ServiceConnectAccessLogConfiguration](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_LogConfiguration.html)Objet  
Obligatoire : non  
La configuration de la journalisation des accès à Service Connect, y compris le format des journaux et la question de savoir si les journaux doivent inclure des chaînes de requête. Les journaux d'accès capturent des informations détaillées sur les demandes adressées à votre service, notamment les modèles de demandes, le code de réponse et les données temporelles. Pour activer les journaux d'accès, vous devez également spécifier un `logConfiguration` dans le`serviceConnectConfiguration`.

`serviceRegistries`  
Type : tableau d'objets  
Obligatoire : non  
Détails de la configuration de la découverte de service pour votre 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).  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.    
`registryArn`  
Type : chaîne  
Obligatoire : non  
Amazon Resource Name (ARN) du registre de service. Le registre des services actuellement pris en charge est AWS Cloud Map. Pour plus d'informations, consultez [Utilisation des services](https://docs.aws.amazon.com/cloud-map/latest/dg/working-with-services.html) dans le *Guide du développeur AWS Cloud Map *.  
`port`  
Type : Integer  
Obligatoire : non  
Valeur de port utilisée si votre service de découverte de service a spécifié un registre SRV. Ce champ est obligatoire si le mode réseau `awsvpc` et les registres SRV sont utilisés.  
`containerName`  
Type : chaîne  
Obligatoire : non  
La valeur du nom du conteneur, déjà spécifiée dans la définition de tâche, à utiliser pour votre service de découverte de service. Cette valeur est spécifiée dans la définition de tâche. Si la définition de tâche que votre tâche de service spécifie utilise le mode réseau `bridge` ou `host`, vous devez spécifier une combinaison `containerName` et `containerPort` à partir de la définition de tâche. Si la définition de tâche spécifiée par votre tâche de service utilise le mode réseau `awsvpc` et qu'un registre DNS de type SRV est utilisé, vous devez spécifier une combinaison `containerName` et `containerPort` ou une valeur `port`, mais pas les deux.  
`containerPort`  
Type : Integer  
Obligatoire : non  
La valeur du port à utiliser pour votre service de découverte de service. Cette valeur est spécifiée dans la définition de tâche. Si la définition de tâche spécifiée par votre tâche de service utilise le mode réseau `bridge` ou `host`, vous devez spécifier une combinaison `containerName` et `containerPort` à partir de la définition de tâche. Si la définition de tâche spécifiée par votre tâche de service utilise le mode réseau `awsvpc` et qu'un registre DNS de type SRV est utilisé, vous devez spécifier une combinaison `containerName` et `containerPort` ou une valeur `port`, mais pas les deux.

## Jeton client
<a name="sd-clienttoken"></a>

`clientToken`  
Type : chaîne  
Obligatoire : non  
L'identifiant unique, sensible à la casse, que vous devez fournir afin de garantir l'idempotence de la demande. Il peut comporter jusqu'à 32 ASCII caractères.

## Rééquilibrage des zones de disponibilité
<a name="sd-availability-zone-rebalancing"></a>

`availabilityZoneRebalancing`  
Type : chaîne  
Obligatoire : non  
Indique si le service utilise le rééquilibrage des zones de disponibilité. Les valeurs valides sont `ENABLED` et `DISABLED`.  
Lorsque vous mettez à jour un service, ce paramètre ne déclenche pas le déploiement d’un nouveau service.  
Comportement par défaut :  
+ Pour les nouveaux services : si aucune valeur n’est spécifiée, la valeur par défaut est `DISABLED`.
+ Pour les services existants : si aucune valeur n’est spécifiée, Amazon ECS définit par défaut la valeur existante. Si aucune valeur n’a été définie précédemment, Amazon ECS définit la valeur sur `DISABLED`.
Pour plus d’informations sur les zones de disponibilité, consultez la section [Équilibrage d’un service Amazon ECS entre les zones de disponibilité](service-rebalancing.md).

## Configurations de volume
<a name="sd-volumeConfigurations"></a>

`volumeConfigurations`  
Type : objet  
Obligatoire : non  
La configuration qui sera utilisée pour créer des volumes pour les tâches gérées par le service. Seuls les volumes marqués comme `configuredAtLaunch` dans la définition de tâche peuvent être configurés à l’aide de cet objet.  
Lorsque vous mettez à jour un service, ce paramètre déclenche un nouveau déploiement de service.  
Cet objet est requis pour associer des volumes Amazon EBS à des tâches gérées par un service. Pour de plus amples informations, veuillez consulter [Utilisation des volumes Amazon EBS avec Amazon ECS](ebs-volumes.md).    
`name`  
Type : Chaîne  
Obligatoire : oui  
Le nom d’un volume configuré lors de la création ou de la mise à jour d’un service. Jusqu’à 255 lettres (majuscules et minuscules), chiffres, traits de soulignement (`_`) et traits d’union (`-`) sont autorisés. Cette valeur doit correspondre au nom du volume spécifié dans la définition de tâche.  
`managedEBSVolume`  
Type : objet  
Obligatoire : non  
La configuration de volume utilisée pour créer des volumes Amazon EBS attachés à des tâches gérées par un service lors de sa création ou de sa mise à jour. Un seul volume est joint par tâche.    
`encrypted`  
Type : booléen  
Obligatoire : non  
Valeurs valides : `true`\$1`false`  
Spécifie s’il faut activer le chiffrement sur chaque volume Amazon EBS créé. Si vous avez activé le chiffrement Amazon EBS par défaut pour une personne en particulier Région AWS , Compte AWS mais que vous avez défini ce paramètre sur`false`, ce paramètre sera remplacé et les volumes seront chiffrés avec la clé KMS spécifiée pour le chiffrement par défaut. Pour plus d’informations sur le chiffrement Amazon EBS par défaut, consultez la section [Activation du chiffrement Amazon EBS par défaut](https://docs.aws.amazon.com/ebs/latest/userguide/encryption-by-default.html) dans le *Guide de l’utilisateur Amazon EBS*. Pour plus d’informations sur le chiffrement des volumes Amazon EBS associés aux tâches Amazon ECS, consultez la section [Chiffrement des données stockées dans les volumes Amazon EBS associés aux tâches Amazon ECS](ebs-kms-encryption.md).  
`kmsKeyId`  
Type : chaîne  
Obligatoire : non  
Identifiant de la clé AWS Key Management Service (AWS KMS) à utiliser pour le chiffrement Amazon EBS. Si `kmsKeyId` est spécifié, l'état chiffré doit être `true`.  
 La clé spécifiée à l’aide de ce paramètre remplace la clé par défaut d’Amazon EBS ou toute clé KMS au niveau du cluster pour le chiffrement du stockage géré Amazon ECS que vous avez éventuellement spécifiée. Pour de plus amples informations, veuillez consulter [Chiffrement des données stockées dans les volumes Amazon EBS associés aux tâches Amazon ECS](ebs-kms-encryption.md).   
Vous pouvez spécifier la clé KMS en utilisant l’un des éléments suivants :  
+ **ID de clé** : par exemple, `1234abcd-12ab-34cd-56ef-1234567890ab`.
+ **Alias de clé** : par exemple, `alias/ExampleAlias`.
+ **ARN de clé** : par exemple, `arn:aws:kms:us-east-1:012345678910:key/1234abcd-12ab-34cd-56ef-1234567890ab`.
+ **ARN d’alias** : par exemple, `arn:aws:kms:us-east-1:012345678910:alias/ExampleAlias`.
AWS authentifie la clé KMS de manière asynchrone. Par conséquent, si vous spécifiez un ID, un alias ou un ARN qui n’est pas valide, l’action peut sembler réussir, mais elle finira par échouer. Pour plus d’informations, consultez la section [Résolution des problèmes liés à l’attachement de volume Amazon EBS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/troubleshoot-ebs-volumes.html).  
`volumeType`  
Type : chaîne  
Obligatoire : non  
Valeurs valides : `gp2`\$1`gp3`\$1`io1`\$1`io2`\$1`sc1`\$1`st1`\$1`standard`  
Le type de volume Amazon EBS. Pour plus d’informations sur les types de volumes, consultez la section [Types de volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-volume-types.html) dans le *Guide de l’utilisateur Amazon EBS*. Le type de volume par défaut est `gp3`.  
Le type de volume `standard` n’est pas pris en charge pour les tâches Fargate.  
`sizeInGiB`  
Type : Integer  
Obligatoire : non  
Plage valide : entiers compris entre 1 et 16 384.   
La taille du volume EBS en gibioctets (Gio). Si vous ne fournissez pas d’ID d’instantané pour configurer un volume à joindre, vous devez fournir une valeur de taille. Si vous configurez un volume pour l’attachement à l’aide d’un instantané, la valeur par défaut est la taille de l’instantané. Vous pouvez ensuite spécifier une taille supérieure ou égale à la taille de l’instantané.  
Pour les types de volume `gp2` et `gp3`, la plage valide est comprise entre 1 et 16 384.  
Pour les types de volume `io1` et `io2`, la plage valide est comprise entre 4 et 16 384.  
Pour les types de volume `st1` et `sc1`, la plage valide est comprise entre 125 et 16 384.  
Pour les types de volume `standard`, la plage valide est comprise entre 1 et 1 024.  
`snapshotId`  
Type : chaîne  
Obligatoire : non  
L’ID de l’instantané d’un volume Amazon EBS existant qu’Amazon ECS utilise pour créer de nouveaux volumes à attacher. Vous devez spécifier `snapshotId` ou `sizeInGiB`.  
`volumeInitializationRate`  
Type : Integer  
Obligatoire : non  
Le débit, en Mio/s, auquel les données sont extraites d’un instantané d’un volume Amazon EBS existant afin de créer des volumes à attacher. Cette propriété ne peut être spécifiée que si vous spécifiez un `snapshotId`. Pour plus d’informations sur ce taux d’initialisation de volume, y compris la gamme de taux pris en charge pour l’initialisation, consultez la section [Initialisation des volumes Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/initalize-volume.html) dans le *Guide de l’utilisateur Amazon EBS*.  
`iops`  
Type : Integer  
Obligatoire : non  
Le nombre d' I/O opérations par seconde (IOPS). Pour les volumes `gp3`, `io1` et `io2`, cela représente le nombre d'IOPS provisionnés pour le volume. Pour les `gp2` volumes, cette valeur représente les performances de base du volume et le taux auquel le volume accumule des I/O crédits en cas d'éclatement. Ce paramètre est requis pour les volumes `io1` et `io2`. Ce paramètre n’est pas pris en charge pour les volumes `gp2`, `st1`, `sc1` ou `standard`.   
Pour les volumes `gp3`, la plage de valeurs valide est comprise entre 3 000 et 16 000.  
Pour les volumes `io1`, la plage de valeurs valide est comprise entre 100 et 64 000.  
Pour les volumes `io2`, la plage de valeurs valide est comprise entre 100 et 64 000.  
`throughput`  
Type : Integer  
Obligatoire : non  
Le débit à allouer pour les volumes associés aux tâches gérées par un service.  
Ce paramètre n’est pris en charge que pour les volumes `gp3`.  
`roleArn`  
Type : Chaîne  
Obligatoire : oui  
L'Amazon Resource ARN (ARN) du rôle d'infrastructure Gestion des identités et des accès AWS (IAM) qui fournit les autorisations Amazon ECS pour gérer les ressources Amazon EBS pour vos tâches. Pour de plus amples informations, veuillez consulter [Rôle IAM d’infrastructure Amazon ECS](infrastructure_IAM_role.md).  
`tagSpecifications`  
Type : objet  
Obligatoire : non  
La spécification des balises à appliquer à chaque volume Amazon EBS.    
`resourceType`  
Type : Chaîne  
Obligatoire : oui  
Valeurs valides : `volume`  
Le type de ressource à baliser à la création.  
`tags`  
Type : tableau d'objets  
Obligatoire : non  
Les métadonnées que vous appliquez aux volumes pour vous aider à les classer et à les organiser. Chaque balise est constituée d’une clé et d’une valeur facultative que vous définissez. `AmazonECSCreated` et `AmazonECSManaged` sont des balises réservées ajoutées par Amazon ECS en votre nom. Vous pouvez donc spécifier vous-même un maximum de 48 balises. Lorsqu’un service est supprimé, les balises sont également supprimées. Pour de plus amples informations, veuillez consulter [Balisage des ressources Amazon ECS](ecs-using-tags.md).    
`key`  
Type : Chaîne  
Contraintes de longueur : Longueur minimum de 1. Longueur maximale de 128.  
Obligatoire : non  
Une des parties d’une paire clé-valeur qui compose une balise. 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  
La partie facultative d’une paire clé-valeur qui compose une balise. Une valeur agit comme un descripteur au sein d'une catégorie d'étiquette (clé).  
`propagateTags`  
Type : Chaîne  
Valeurs valides : `TASK_DEFINITION` \$1 `SERVICE` \$1 `NONE`  
Obligatoire : non  
Spécifie s’il faut copier les balises de la définition de tâche ou du service vers un volume. Si `NONE` est spécifié ou si aucune valeur n’est spécifiée, les balises ne sont pas copiées.  
`fileSystemType`  
Type : chaîne  
Obligatoire : non  
Valeurs valides : `xfs`\$1`ext3`\$1`ext4`\$1`NTFS`  
Le type de système de fichiers sur un volume. Le type de système de fichiers du volume détermine le mode de stockage et de récupération des données dans le volume. Pour les volumes créés à partir d’un instantané, vous devez spécifier le même type de système de fichiers que celui utilisé par le volume lors de la création de l’instantané. Si le type de système de fichiers ne correspond pas, la tâche ne démarre pas.   
Les valeurs valides pour Linux sont `xfs` ext3`, and ext4`. La valeur par défaut pour les volumes attachés à des tâches Linux est `XFS`.  
La valeur valide pour Windows est `NTFS`. La valeur par défaut pour les volumes attachés à des tâches Windows est `NTFS`.

# Modèle de définition de service
<a name="sd-template"></a>

Voici une illustration de la représentation JSON d'une définition de service Amazon ECS service.

EC2

```
{
    "cluster": "", 
    "serviceName": "", 
    "taskDefinition": "", 
    "loadBalancers": [
        {
            "targetGroupArn": "", 
            "loadBalancerName": "", 
            "containerName": "", 
            "containerPort": 0
        }
    ], 
    "serviceRegistries": [
        {
            "registryArn": "", 
            "port": 0, 
            "containerName": "", 
            "containerPort": 0
        }
    ], 
    "desiredCount": 0, 
    "clientToken": "", 
    "launchType": "EC2", 
    "capacityProviderStrategy": [
        {
            "capacityProvider": "", 
            "weight": 0, 
            "base": 0
        }
    ], 
    "platformVersion": "", 
    "role": "", 
    "deploymentConfiguration": {
        "deploymentCircuitBreaker": {
            "enable": true, 
            "rollback": true
        }, 
        "maximumPercent": 0, 
        "minimumHealthyPercent": 0, 
        "alarms": {
            "alarmNames": [
                ""
            ], 
            "enable": true, 
            "rollback": true
        }
    }, 
    "placementConstraints": [
        {
            "type": "distinctInstance", 
            "expression": ""
        }
    ], 
    "placementStrategy": [
        {
            "type": "binpack", 
            "field": ""
        }
    ], 
    "networkConfiguration": {
        "awsvpcConfiguration": {
            "subnets": [
                ""
            ], 
            "securityGroups": [
                ""
            ], 
            "assignPublicIp": "DISABLED"
        }
    }, 
    "healthCheckGracePeriodSeconds": 0, 
    "schedulingStrategy": "REPLICA", 
    "deploymentController": {
        "type": "EXTERNAL"
    }, 
    "tags": [
        {
            "key": "", 
            "value": ""
        }
    ], 
    "enableECSManagedTags": true, 
    "propagateTags": "TASK_DEFINITION", 
    "enableExecuteCommand": true, 
    "availabilityZoneRebalancing": "ENABLED",
    "serviceConnectConfiguration": {
        "enabled": true, 
        "namespace": "", 
        "services": [
            {
                "portName": "", 
                "discoveryName": "", 
                "clientAliases": [
                    {
                        "port": 0, 
                        "dnsName": ""
                    }
                ], 
                "ingressPortOverride": 0
            }
        ], 
        "logConfiguration": {
            "logDriver": "journald", 
            "options": {
                "KeyName": ""
            }, 
            "secretOptions": [
                {
                    "name": "", 
                    "valueFrom": ""
                }
            ]
        }
    }, 
    "volumeConfigurations": [
        {
            "name": "", 
            "managedEBSVolume": {
                "encrypted": true, 
                "kmsKeyId": "", 
                "volumeType": "", 
                "sizeInGiB": 0, 
                "snapshotId": "", 
                "volumeInitializationRate": 0,
                "iops": 0, 
                "throughput": 0, 
                "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "", 
                                "value": ""
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ], 
                "roleArn": "", 
                "filesystemType": ""
            }
        }
    ]
}
```

Fargate

```
{
    "cluster": "", 
    "serviceName": "", 
    "taskDefinition": "", 
    "loadBalancers": [
        {
            "targetGroupArn": "", 
            "loadBalancerName": "", 
            "containerName": "", 
            "containerPort": 0
        }
    ], 
    "serviceRegistries": [
        {
            "registryArn": "", 
            "port": 0, 
            "containerName": "", 
            "containerPort": 0
        }
    ], 
    "desiredCount": 0, 
    "clientToken": "", 
    "launchType": "FARGATE", 
    "capacityProviderStrategy": [
        {
            "capacityProvider": "", 
            "weight": 0, 
            "base": 0
        }
    ], 
    "platformVersion": "", 
    "platformFamily": "",
    "role": "", 
    "deploymentConfiguration": {
        "deploymentCircuitBreaker": {
            "enable": true, 
            "rollback": true
        }, 
        "maximumPercent": 0, 
        "minimumHealthyPercent": 0, 
        "alarms": {
            "alarmNames": [
                ""
            ], 
            "enable": true, 
            "rollback": true
        }
    }, 
    "placementStrategy": [
        {
            "type": "binpack", 
            "field": ""
        }
    ], 
    "networkConfiguration": {
        "awsvpcConfiguration": {
            "subnets": [
                ""
            ], 
            "securityGroups": [
                ""
            ], 
            "assignPublicIp": "DISABLED"
        }
    }, 
    "healthCheckGracePeriodSeconds": 0, 
    "schedulingStrategy": "REPLICA", 
    "deploymentController": {
        "type": "EXTERNAL"
    }, 
    "tags": [
        {
            "key": "", 
            "value": ""
        }
    ], 
    "enableECSManagedTags": true, 
    "propagateTags": "TASK_DEFINITION", 
    "enableExecuteCommand": true, 
    "availabilityZoneRebalancing": "ENABLED",
    "serviceConnectConfiguration": {
        "enabled": true, 
        "namespace": "", 
        "services": [
            {
                "portName": "", 
                "discoveryName": "", 
                "clientAliases": [
                    {
                        "port": 0, 
                        "dnsName": ""
                    }
                ], 
                "ingressPortOverride": 0   
            }
        ], 
        "logConfiguration": {
            "logDriver": "journald", 
            "options": {
                "KeyName": ""
            }, 
            "secretOptions": [
                {
                    "name": "", 
                    "valueFrom": ""
                }
            ]
        }
    }, 
    "volumeConfigurations": [
        {
            "name": "", 
            "managedEBSVolume": {
                "encrypted": true, 
                "kmsKeyId": "", 
                "volumeType": "", 
                "sizeInGiB": 0, 
                "snapshotId": "", 
                "volumeInitializationRate": 0, 
                "iops": 0, 
                "throughput": 0, 
                "tagSpecifications": [
                    {
                        "resourceType": "volume", 
                        "tags": [
                            {
                                "key": "", 
                                "value": ""
                            }
                        ], 
                        "propagateTags": "NONE"
                    }
                ], 
                "roleArn": "", 
                "filesystemType": ""
            }
        }
    ]
}
```

Vous pouvez créer ce modèle de définition de service à l'aide de la commande AWS CLI suivante.

```
aws ecs create-service --generate-cli-skeleton
```