

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.

# 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
```