

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Utilizzare l'iniezione di guasti con i carichi di lavoro Amazon ECS e Fargate.
<a name="fault-injection"></a>

I clienti possono utilizzare l'iniezione di guasti con Amazon ECS sia su Amazon EC2 che su Fargate per testare la risposta della loro applicazione a determinati scenari di compromissione. Questi test forniscono informazioni da utilizzare per ottimizzare le prestazioni e la resilienza dell'applicazione.

Quando l'iniezione di guasti è abilitata, l'agente del container Amazon ECS consente alle attività di accedere a nuovi endpoint di iniezione dei guasti. È necessario attivare il consenso per utilizzare l'iniezione di guasti impostando il valore del parametro di definizione dell'attività `enableFaultInjection` su `true`. Il valore predefinito è `false`. 

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

**Nota**  
L'iniezione di guasti funziona solo con le attività che utilizzano le modalità di rete `awsvpc` o `host`.  
L'iniezione di guasti non è disponibile in Windows.

Per informazioni su come abilitare l'iniezione di errori in Console di gestione AWS, consulta [Creazione di una definizione di attività Amazon ECS utilizzando la console](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/create-task-definition.html).

Sarà necessario abilitare la funzionalità per il test in AWS Fault Injection Service. Per ulteriori informazioni, consulta [Utilizzare le azioni AWS FIS aws:ecs:task](https://docs.aws.amazon.com/fis/latest/userguide/ecs-task-actions.html).

**Nota**  
Se non usi il nuovo Amazon ECS ottimizzato AMIs o disponi di un'AMI personalizzata, installa le seguenti dipendenze:  
`tc`
Modulo kernel `sch_netem`

# Endpoint di iniezione di guasti di Amazon ECS
<a name="fault-injection-endpoints"></a>

L'agente del container Amazon ECS inserisce automaticamente la variabile di ambiente `ECS_AGENT_URI` nei container delle attività di Amazon ECS per fornire un metodo per interagire con l'endpoint API dell'agente del container. Ogni endpoint include un endpoint `/start`, `/stop` e `/status`. Gli endpoint accettano solo richieste da attività che hanno l'iniezione di guasti abilitata e ogni endpoint ha un limite di frequenza di **1** richiesta ogni **5** secondi per container. Il superamento di questo limite comporta la generazione di un errore.

**Nota**  
L'agente di Amazon ECS `version 1.88.0+` è necessario per utilizzare gli endpoint di iniezione di guasti.

I tre endpoint da utilizzare con l'iniezione di guasti sono:
+ [Endpoint di porta blackhole di rete](#fis-endpoint-blackhole-ports)
+ [Endpoint di perdita di pacchetti di rete](#fis-endpoint-packet-loss)
+ [Endpoint di latenza di rete](#fis-endpoint-latency)

Una richiesta riuscita genera un codice di risposta di `200` con un messaggio di `running` quando si chiama l'endpoint `/start`, `stopped` per l'endpoint `/stop` e `running` o `not-running` per l'endpoint `/status`.

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

Una richiesta non riuscita restituisce uno dei seguenti codici di errore:
+ `400`: richiesta non valida
+ `409`: la richiesta di iniezioni di guasti è in conflitto con un altro guasto in esecuzione
+ `429`: la richiesta è stata sottoposta a limitazione
+ `500`: il server ha riscontrato un errore imprevisto

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

**Nota**  
È possibile iniettare un guasto di latenza di rete o un errore di perdita di pacchetti di rete alla volta. Il tentativo di iniettarne più di uno comporta il rifiuto della richiesta.

## Endpoint di porta blackhole di rete
<a name="fis-endpoint-blackhole-ports"></a>

L'endpoint `{ECS_AGENT_URI}/fault/v1/network-blackhole-port` elimina il traffico in entrata o in uscita per una porta e un protocollo specifici nel namespace di rete di un'attività ed è compatibile con due modalità:
+ **awsvpc**: le modifiche vengono applicate al namespace della rete delle attività
+ **host**: le modifiche vengono applicate all'istanza di container predefinita del namespace di rete

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

Questo endpoint avvia le iniezioni di guasti nelle porte blackhole di rete e presenta i seguenti parametri:

**Porta**  
La porta specificata da utilizzare per l'iniezione di guasti nelle porte blackhole.

Tipo: numero intero

Obbligatorio: sì

**Protocollo**  
Il protocollo da utilizzare per l'iniezione di guasti nelle porte blackhole.

Tipo: String

Valori validi: `tcp | udp`

Obbligatorio: sì

**TrafficType**  
Il tipo di traffico utilizzato dall'iniezione di guasti.

Tipo: String

Valori validi: `ingress | egress`

Obbligatorio: sì

**SourcesToFilter**  
Un array JSON di IPv4 o IPv6 indirizzi o blocchi CIDR protetti dall'errore.

Tipo: array di stringhe

Obbligatorio: no

Di seguito è riportato un esempio di richiesta per l'utilizzo dell'`start`endpoint (sostituisci *red* i valori con i tuoi):

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

Questo endpoint arresta il guasto specificato nella richiesta. Questo endpoint dispone dei seguenti parametri:

**Porta**  
La porta interessata dal guasto che deve essere interrotta.

Tipo: numero intero

Obbligatorio: sì

**Protocollo**  
Il protocollo da utilizzare per fermare il guasto.

Tipo: String

Valori validi: `tcp | udp`

Obbligatorio: sì

**TrafficType**  
Il tipo di traffico utilizzato dall'iniezione di guasti.

Tipo: String

Valori validi: `ingress | egress`

Obbligatorio: sì

Di seguito è riportato un esempio di richiesta per l'utilizzo dell'`stop`endpoint (sostituisci i valori con i tuoi): *red*

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

Questo endpoint viene utilizzato per controllare lo stato dell'iniezione di guasti. Questo endpoint dispone dei seguenti parametri:

**Porta**  
La porta interessata per verificare lo stato del guasto.

Tipo: numero intero

Obbligatorio: sì

**Protocollo**  
Il protocollo da utilizzare per verificare lo stato del guasto.

Tipo: String

Valori validi: `tcp | udp`

Obbligatorio: sì

**TrafficType**  
Il tipo di traffico utilizzato dall'iniezione di guasti.

Tipo: String

Valori validi: `ingress | egress`

Obbligatorio: sì

Di seguito è riportato un esempio di richiesta per l'utilizzo dell'`status`endpoint (sostituisci i valori con i tuoi): *red*

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

Http method: POST

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

## Endpoint di latenza di rete
<a name="fis-endpoint-latency"></a>

L'endpoint `{ECS_AGENT_URI}/fault/v1/network-latency` aggiunge ritardo e instabilità all'interfaccia di rete dell'attività per il traffico verso fonti specifiche. L'endpoint è compatibile con due modalità:
+ **awsvpc**: le modifiche vengono applicate all'interfaccia della rete delle attività
+ **host**: le modifiche vengono applicate all'interfaccia della rete predefinita

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

Questo endpoint `/start` avvia le iniezioni di guasti di latenza di rete e presenta i seguenti parametri:

**DelayMilliseconds**  
Il numero di millisecondi di ritardo da aggiungere all'interfaccia di rete da utilizzare per l'iniezione di guasti.

Tipo: numero intero

Obbligatorio: sì

**JitterMilliseconds**  
Il numero di millisecondi di jitter da aggiungere all'interfaccia di rete da utilizzare per l'iniezione di guasti.

Tipo: numero intero

Obbligatorio: sì

**Origini**  
Un array JSON di IPv4 o IPv6 indirizzi o blocchi CIDR destinati all'uso con l'iniezione di errori.

Tipo: array di stringhe

Obbligatorio: sì

**SourcesToFilter**  
Un array JSON di IPv4 o IPv6 indirizzi o blocchi CIDR protetti dall'errore. `SourcesToFilter`ha la priorità su. `Sources`

Tipo: array di stringhe

Obbligatorio: no

Di seguito è riportato un esempio di richiesta per l'utilizzo dell'`/start`endpoint (sostituisci i *red* valori con i tuoi):

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

L'endpoint `{ECS_AGENT_URI}/fault/v1/network-latency/stop` blocca il guasto e `{ECS_AGENT_URI}/fault/v1/network-latency/status` verifica lo stato del guasto.

Di seguito sono riportati due esempi di richieste per l'utilizzo degli endpoint `/stop` e degli endpoint `/status`. Entrambi utilizzano il metodo `POST HTTP`.

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

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

## Endpoint di perdita di pacchetti di rete
<a name="fis-endpoint-packet-loss"></a>

L'endpoint `{ECS_AGENT_URI}/fault/v1/network-packet-loss` aggiunge la perdita di pacchetti all'interfaccia di rete specificata. Questo endpoint è compatibile con due modalità:
+ **awsvpc**: le modifiche vengono applicate all'interfaccia della rete delle attività
+ **host**: le modifiche vengono applicate all'interfaccia della rete predefinita

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

Questo endpoint `/start` avvia le iniezioni di guasti di perdita di pacchetti di rete e presenta i seguenti parametri:

**LossPercent**  
La percentuale di perdita di pacchetti

Tipo: numero intero

Obbligatorio: sì

**Origini**  
Un array JSON di IPv4 o IPv6 indirizzi o blocchi CIDR da utilizzare per i test di iniezione dei guasti.

Tipo: array di stringhe

Obbligatorio: sì

**SourcesToFilter**  
Un array JSON di IPv6 indirizzi IPv4 o blocchi CIDR protetti dall'errore. `SourcesToFilter`ha la priorità su. `Sources`

Tipo: array di stringhe

Obbligatorio: no

Di seguito è riportato un esempio di richiesta per l'utilizzo dell'`start`endpoint (sostituisci i *red* valori con i tuoi):

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

L'endpoint `{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop` blocca il guasto e `{ECS_AGENT_URI}/fault/v1/network-packet-loss/status` verifica lo stato del guasto. È supportato solo un tipo di guasto alla volta.

Di seguito sono riportati due esempi di richieste per l'utilizzo degli endpoint `/stop` e degli endpoint `/status`. Entrambi utilizzano il metodo `POST HTTP`.

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

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