

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Fehlerinjektion mit Ihren Amazon-ECS- und Fargate-Workloads verwenden
<a name="fault-injection"></a>

Kunden können Fehlerinjektion mit Amazon ECS sowohl in Amazon EC2 als auch Fargate nutzen, um zu testen, wie ihre Anwendung auf bestimmte Beeinträchtigungsszenarien reagiert. Diese Tests liefern Informationen, mit denen Sie die Leistung und Ausfallsicherheit Ihrer Anwendung optimieren können.

Wenn Fehlerinjektion aktiviert ist, ermöglicht der Amazon-ECS-Container-Agent Aufgaben den Zugriff auf neue Fehlerinjektions-Endpunkte. Sie müssen sich anmelden, um Fehlerinjektion verwenden zu können, indem Sie den Wert des Parameters für die `enableFaultInjection`-Aufgabendefinition auf `true` setzen. Der Standardwert ist `false`. 

```
{
    ...
   "enableFaultInjection": true
}
```

**Anmerkung**  
Die Fehlerinjektion funktioniert nur bei Aufgaben, die den Netzwerkmodus `awsvpc` oder `host` verwenden.  
Die Fehlerinjektion ist unter Windows nicht verfügbar.

Informationen zur Aktivierung von Fault Injection in finden Sie unter [Erstellen einer Amazon ECS-Aufgabendefinition mithilfe der Konsole](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html). AWS-Managementkonsole

Sie müssen das Feature zum Testen in der AWS Fault Injection Service aktivieren. Weitere Informationen finden Sie unter [Verwenden der AWS FIS aws:ecs:task-Aktionen](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html).

**Anmerkung**  
Wenn Sie das neue optimierte AMIs Amazon ECS nicht verwenden oder über ein benutzerdefiniertes AMI verfügen, installieren Sie die folgenden Abhängigkeiten:  
`tc`
`sch_netem`-Kernel-Modul

# Amazon-ECS-Endpunkte zur Fehlerinjektion
<a name="fault-injection-endpoints"></a>

Der Amazon-ECS-Container-Agent fügt die `ECS_AGENT_URI`-Umgebungsvariable automatisch in die Amazon-ECS-Aufgabencontainer ein, um eine Methode für die Interaktion mit dem Container-Agent-API-Endpunkt bereitzustellen. Jeder Endpunkt umfasst einen `/start`-, `/stop`- und `/status`-Endpunkt. Die Endpunkte akzeptieren nur Anfragen von Aufgaben, für die die Fehlerinjektion aktiviert wurde, und für jeden Endpunkt gilt ein Ratenlimit von **1** Anfrage pro **5** Sekunden pro Container. Eine Überschreitung dieser Grenze führt zu einem Fehler.

**Anmerkung**  
Amazon ECS Agent `version 1.88.0+` ist erforderlich, um die Fehlerinjektions-Endpunkte zu verwenden.

Die drei Endpunkte für die Verwendung mit Fehlerinjektion sind:
+ [Netzwerk-Blackhole-Port-Endpunkt](#fis-endpoint-blackhole-ports)
+ [Endpunkt für Netzwerkpaketverlust](#fis-endpoint-packet-loss)
+ [Netzwerklatenzendpunkt](#fis-endpoint-latency)

Eine erfolgreiche Anfrage führt zu einem Antwortcode von `200` mit der Meldung `running`, wenn Sie den `/start`-Endpunkt aufrufen, `stopped` für den `/stop`-Endpunkt und `running` oder `not-running` für den `/status`-Endpunkt.

```
{
    "Status": <string>
}
```

Eine erfolglose Anfrage gibt einen der folgenden Fehlercodes zurück:
+ `400` – Inkorrekte Anfrage
+ `409` – Eine Fehlerinjektions-Anfrage kollidiert mit einem anderen laufenden Fehler
+ `429` – Die Anforderung wurde gedrosselt
+ `500` – Auf dem Server ist ein unerwarteter Fehler aufgetreten

```
{
	"Error":  <string message> 
}
```

**Anmerkung**  
Es kann entweder ein Netzwerklatenzfehler oder ein Netzwerkpaketverlust gleichzeitig injiziert werden. Der Versuch, mehr als einen Fehler zu injizieren, führt dazu, dass die Anfrage abgelehnt wird.

## Netzwerk-Blackhole-Port-Endpunkt
<a name="fis-endpoint-blackhole-ports"></a>

Der `{ECS_AGENT_URI}/fault/v1/network-blackhole-port`-Endpunkt leitet eingehenden oder ausgehenden Datenverkehr für einen bestimmten Port und ein bestimmtes Protokoll im Netzwerk-Namespace einer Aufgabe ab und ist mit zwei Modi kompatibel:
+ **awsvpc** – Die Änderungen werden auf den Netzwerk-Namespace der Aufgabe angewendet
+ **host** – Die Änderungen werden auf die standardmäßige Netzwerk-Namespace-Container-Instance angewendet

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-blackhole-port/start
<a name="fis-endpoint-blackhole-ports-start"></a>

Dieser Endpunkt startet die Netzwerk-Blackhole-Port-Fehlerinjektionen und hat die folgenden Parameter:

**Port**  
Der angegebene Port, der für die Blackhole-Port-Fehlerinjektion verwendet werden soll.

Typ: Ganzzahl

Erforderlich: Ja

**Protocol (Protokoll)**  
Das Protokoll, das für die Blackhole-Port-Fehlerinjektion verwendet werden soll.

Typ: Zeichenfolge

Zulässige Werte: `tcp | udp`

Erforderlich: Ja

**TrafficType**  
Der von der Fehlerinjektion verwendete Datenverkehrstyp.

Typ: Zeichenfolge

Zulässige Werte: `ingress | egress`

Erforderlich: Ja

**SourcesToFilter**  
Ein JSON-Array von IPv6 Adressen IPv4 oder CIDR-Blöcken, die vor dem Fehler geschützt sind.

Typ: Zeichenfolgen-Array

Erforderlich: Nein

Im Folgenden finden Sie ein Beispiel für eine Anfrage zur Verwendung des `start` Endpunkts (ersetzen Sie die *red* Werte durch Ihre eigenen):

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

Dieser Endpunkt stoppt den in der Anforderung angegebenen Fehler. Dieser Endpunkt hat die folgenden Parameter:

**Port**  
Der Port, der von dem Fehler betroffen ist und gestoppt werden sollte.

Typ: Ganzzahl

Erforderlich: Ja

**Protocol (Protokoll)**  
Das zu verwendende Protokoll, um den Fehler zu beheben.

Typ: Zeichenfolge

Zulässige Werte: `tcp | udp`

Erforderlich: Ja

**TrafficType**  
Der von der Fehlerinjektion verwendete Datenverkehrstyp.

Typ: Zeichenfolge

Zulässige Werte: `ingress | egress`

Erforderlich: Ja

Im Folgenden finden Sie eine Beispielanforderung für die Verwendung des `stop` Endpunkts (ersetzen Sie die *red* Werte durch Ihre eigenen):

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

Dieser Endpunkt wird verwendet, um den Status der Fehlerinjektion zu überprüfen. Dieser Endpunkt hat die folgenden Parameter:

**Port**  
Der betroffene Port, um den Status des Fehlers zu überprüfen.

Typ: Ganzzahl

Erforderlich: Ja

**Protocol (Protokoll)**  
Das Protokoll, das verwendet werden soll, um den Status des Fehlers zu überprüfen.

Typ: Zeichenfolge

Zulässige Werte: `tcp | udp`

Erforderlich: Ja

**TrafficType**  
Der von der Fehlerinjektion verwendete Datenverkehrstyp.

Typ: Zeichenfolge

Zulässige Werte: `ingress | egress`

Erforderlich: Ja

Im Folgenden finden Sie eine Beispielanforderung für die Verwendung des `status` Endpunkts (ersetzen Sie die *red* Werte durch Ihre eigenen):

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/status

Http method: POST

Request payload: 
{
   "Port": 1234,
   "Protocol": "tcp|udp",
   "TrafficType": "ingress|egress",
}
```

## Netzwerklatenzendpunkt
<a name="fis-endpoint-latency"></a>

Der `{ECS_AGENT_URI}/fault/v1/network-latency`-Endpunkt fügt der Netzwerkschnittstelle der Aufgabe Verzögerung und Jitter für den Datenverkehr zu bestimmten Quellen hinzu. Der Endpunkt ist mit zwei Modi kompatibel:
+ **awsvpc** – Die Änderungen werden auf die Netzwerkschnittstelle der Aufgabe angewendet
+ **host** – Die Änderungen werden auf die Standard-Netzwerkschnittstelle angewendet

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-latency/start
<a name="fis-endpoint-latency-start"></a>

Dieser `/start`-Endpunkt beginnt mit der Netzwerklatenz-Fehlerinjektion und hat die folgenden Parameter:

**DelayMilliseconds**  
Die Anzahl der Millisekunden Verzögerung, die der Netzwerkschnittstelle hinzugefügt werden muss, um sie für die Fehlerinjektion zu verwenden.

Typ: Ganzzahl

Erforderlich: Ja

**JitterMilliseconds**  
Die Anzahl der Millisekunden Jitter, die der Netzwerkschnittstelle hinzugefügt werden muss, um sie für die Fehlerinjektion zu verwenden.

Typ: Ganzzahl

Erforderlich: Ja

**Quellen**  
Ein JSON-Array von IPv6 Adressen IPv4 oder CIDR-Blöcken, die als Ziel für die Verwendung mit Fault Injection dienen.

Typ: Zeichenfolgen-Array

Erforderlich: Ja

**SourcesToFilter**  
Ein JSON-Array von IPv6 Adressen IPv4 oder CIDR-Blöcken, die vor dem Fehler geschützt sind. `SourcesToFilter`hat Vorrang vor. `Sources`

Typ: Zeichenfolgen-Array

Erforderlich: Nein

Im Folgenden finden Sie eine Beispielanforderung für die Verwendung des `/start` Endpunkts (ersetzen Sie die *red* Werte durch Ihre eigenen):

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

Der `{ECS_AGENT_URI}/fault/v1/network-latency/stop`-Endpunkt stoppt den Fehler und der `{ECS_AGENT_URI}/fault/v1/network-latency/status` überprüft dann den Status des Fehlers.

Im Folgenden finden Sie zwei Beispielanfragen für die Verwendung der Endpunkte `/stop` und `/status`. Beide verwenden die `POST HTTP`-Methode.

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/stop
```

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/status
```

## Endpunkt für Netzwerkpaketverlust
<a name="fis-endpoint-packet-loss"></a>

Der `{ECS_AGENT_URI}/fault/v1/network-packet-loss`-Endpunkt fügt der angegebenen Netzwerkschnittstelle Paketverlust hinzu. Der Endpunkt ist mit zwei Modi kompatibel:
+ **awsvpc** – Die Änderungen werden auf die Netzwerkschnittstelle der Aufgabe angewendet
+ **host** – Die Änderungen werden auf die Standard-Netzwerkschnittstelle angewendet

### \$1ECS\$1AGENT\$1URI\$1/fault/v1/network-packet-loss/start
<a name="fis-endpoint-packet-loss-start"></a>

Dieser `/start`-Endpunkt beginnt mit der Netzwerk-Paketverlust-Fehlerinjektion und hat die folgenden Parameter:

**LossPercent**  
Der Prozentsatz des Paketverlusts

Typ: Ganzzahl

Erforderlich: Ja

**Quellen**  
Ein JSON-Array von IPv6 Adressen IPv4 oder CIDR-Blöcken, das für die Fehlerinjektionstests verwendet werden soll.

Typ: Zeichenfolgen-Array

Erforderlich: Ja

**SourcesToFilter**  
Ein JSON-Array von IPv6 Adressen IPv4 oder CIDR-Blöcken, die vor dem Fehler geschützt sind. `SourcesToFilter`hat Vorrang vor. `Sources`

Typ: Zeichenfolgen-Array

Erforderlich: Nein

Im Folgenden finden Sie eine Beispielanforderung für die Verwendung des `start` Endpunkts (ersetzen Sie die *red* Werte durch Ihre eigenen):

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

Der `{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop`-Endpunkt stoppt den Fehler und der `{ECS_AGENT_URI}/fault/v1/network-packet-loss/status` überprüft dann den Status des Fehlers. Es wird jeweils nur einer von jedem Fehlertyp unterstützt.

Im Folgenden finden Sie zwei Beispielanfragen für die Verwendung der Endpunkte `/stop` und `/status`. Beide verwenden die `POST HTTP`-Methode.

```
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
```

```
Endpoint: ${{ECS_AGENT_URI}/fault/v1/network-packet-loss/status
```