Endpoints para injeção de falhas do Amazon ECS
O agente de contêiner do Amazon ECS injeta automaticamente a variável de ambiente ECS_AGENT_URI
nos contêineres de tarefas do Amazon ECS para fornecer um método de interação com o endpoint da API do agente de contêiner. Cada endpoint inclui um endpoint /start
, /stop
e /status
. Esses endpoints somente aceitam solicitações de tarefas que habilitaram a injeção de falhas, e cada um tem um limite de taxa de 1 solicitação a cada 5 segundos por contêiner. Exceder o limite resulta em um erro.
nota
O Agente do Amazon ECS version 1.88.0+
é necessário para utilizar endpoints de injeção de falhas.
Os três endpoints para uso com a injeção de falhas são:
Uma solicitação com êxito resulta em um código de resposta 200
com uma mensagem de running
ao chamar o endpoint /start
, stopped
para o endpoint /stop
e running
ou not-running
para o endpoint /status
.
{ "Status": <string> }
Uma solicitação sem êxito retorna um destes códigos de erro:
-
400
: solicitação inválida -
409
: a solicitação de injeção de falhas está em conflito com outra falha em execução -
429
: a solicitação foi limitada -
500
: o servidor teve um erro inesperado
{ "Error": <string message> }
nota
Uma falha de latência de rede ou uma falha de perda de pacote de rede pode ser injetada por vez. A tentativa de injetar mais de uma faz com que a solicitação seja rejeitada.
Endpoint de porta de buraco negro de rede
O endpoint {ECS_AGENT_URI}/fault/v1/network-blackhole-port
elimina o tráfego de entrada ou saída de uma porta e protocolo específicos no namespace de rede de uma tarefa e é compatível com dois modos:
-
awsvpc: as alterações são aplicadas ao namespace da rede de tarefas
-
host: as alterações são aplicadas à instância de contêiner do namespace de rede padrão
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/start
Esse endpoint inicia as injeções de falha na porta de buraco negro de rede e inclui os seguintes parâmetros:
Porta
A porta especificada para uso na injeção de falhas na porta de buraco negro.
Tipo: inteiro
Obrigatório: Sim
Protocolo
O protocolo para uso na injeção de falhas na porta de buraco negro.
Tipo: String
Valores válidos: tcp | udp
Obrigatório: Sim
TrafficType
O tipo de tráfego utilizado pela injeção de falhas.
Tipo: String
Valores válidos: ingress | egress
Obrigatório: Sim
SourcesToFilter
Uma matriz JSON de endereços IPv4 ou blocos CIDR protegidos contra a falha.
Tipo: matriz de strings
Obrigatório: Não
O exemplo a seguir mostra como utilizar o endpoint start
(substitua os valores em vermelho
pelos seus próprios):
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}
", ...], }
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/stop
Esse endpoint interrompe a falha especificada na solicitação. Esse endpoint tem os seguintes parâmetros:
Porta
A porta afetada pela falha que deve ser interrompida.
Tipo: inteiro
Obrigatório: Sim
Protocolo
O protocolo a ser usado para interromper essa falha.
Tipo: String
Valores válidos: tcp | udp
Obrigatório: Sim
TrafficType
O tipo de tráfego utilizado pela injeção de falhas.
Tipo: String
Valores válidos: ingress | egress
Obrigatório: Sim
O exemplo a seguir mostra como utilizar o endpoint stop
(substitua os valores em vermelho
pelos seus próprios):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/stop Http method: POST Request payload: { "Port":
1234
, "Protocol": "tcp|udp", "TrafficType": "ingress|egress", }
{ECS_AGENT_URI}/fault/v1/network-blackhole-port/status
Esse endpoint é usado para verificar o status da injeção de falhas. Esse endpoint tem os seguintes parâmetros:
Porta
A porta afetada para verificar o status da falha.
Tipo: inteiro
Obrigatório: Sim
Protocolo
O protocolo a ser utilizado ao verificar o status da falha.
Tipo: String
Valores válidos: tcp | udp
Obrigatório: Sim
TrafficType
O tipo de tráfego utilizado pela injeção de falhas.
Tipo: String
Valores válidos: ingress | egress
Obrigatório: Sim
O exemplo a seguir mostra como utilizar o endpoint status
(substitua os valores em vermelho
pelos seus próprios):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-blackhole-port/status Http method: POST Request payload: { "Port":
1234
, "Protocol": "tcp|udp", "TrafficType": "ingress|egress", }
Endpoint de latência da rede
O endpoint {ECS_AGENT_URI}/fault/v1/network-latency
adiciona atraso e instabilidade à interface de rede da tarefa para o tráfego para uma origem específica. O endpoint é compatível com dois modos:
-
awsvpc: as alterações são aplicadas à interface de rede da tarefa
-
host: as alterações são aplicadas à interface de rede padrão
{ECS_AGENT_URI}/fault/v1/network-latency/start
Esse endpoint /start
inicia a injeção de falha de latência da rede e tem os seguintes parâmetros:
DelayMilliseconds
O número de milissegundos de atraso a serem adicionados à interface de rede para uso na injeção de falhas.
Tipo: inteiro
Obrigatório: Sim
JitterMilliseconds
O número de milissegundos de instabilidade a serem adicionados à interface de rede para uso na injeção de falhas.
Tipo: inteiro
Obrigatório: Sim
Origens
Uma matriz JSON de endereços IPv4 ou blocos CIDR que são destinos para uso com a injeção de falhas.
Tipo: matriz de strings
Obrigatório: Sim
SourcesToFilter
Uma matriz JSON de endereços IPv4 ou blocos CIDR protegidos contra a falha. SourcesToFilter
tem prioridade sobre Sources
.
Tipo: matriz de strings
Obrigatório: Não
O exemplo a seguir mostra como utilizar o endpoint /start
(substitua os valores em vermelho
pelos seus próprios):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/start Http method: POST Request payload: { "DelayMilliseconds":
123
, "JitterMilliseconds":123
, "Sources": ["${IP1}", "${IP2}
", ...], "SourcesToFilter": ["${IP1}
", "${IP2}
", ...], }
{ECS_AGENT_URI}/fault/v1/network-latency/stop and /status
O endpoint {ECS_AGENT_URI}/fault/v1/network-latency/stop
interrompe a falha, e o {ECS_AGENT_URI}/fault/v1/network-latency/status
verifica o status da falha.
Veja a seguir dois exemplos de solicitações para usar os endpoints /stop
e /status
. Ambos utilizam o método POST HTTP
.
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/stop
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-latency/status
Endpoint de perda de pacotes de rede
O endpoint {ECS_AGENT_URI}/fault/v1/network-packet-loss
adiciona perda de pacotes à interface de rede fornecida. Esse endpoint é compatível com dois modos:
-
awsvpc: as alterações são aplicadas à interface de rede da tarefa
-
host: as alterações são aplicadas à interface de rede padrão
{ECS_AGENT_URI}/fault/v1/network-packet-loss/start
Esse endpoint /start
inicia a injeção de falha de perda de pacotes de rede e tem os seguintes parâmetros:
LossPercent
A porcentagem de perda de pacotes
Tipo: inteiro
Obrigatório: Sim
Origens
Uma matriz JSON de endereços IPv4 ou blocos CIDR a serem usados para os testes de injeção de falhas.
Tipo: matriz de strings
Obrigatório: Sim
SourcesToFilter
Uma matriz JSON de endereços IPv4 ou blocos CIDR protegidos contra a falha. SourcesToFilter
tem prioridade sobre Sources
.
Tipo: matriz de strings
Obrigatório: Não
O exemplo a seguir mostra como utilizar o endpoint start
(substitua os valores em vermelho
pelos seus próprios):
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/start Http method: POST { "LossPercent":
6
, "Sources": ["${IP1}", "${IP2}
", ...], "SourcesToFilter": ["${IP1}
", "${IP2}
", ...], }
{ECS_AGENT_URI}/fault/v1/network-packet-loss/stop and /status
O endpoint {ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
interrompe a falha, e o {ECS_AGENT_URI}/fault/v1/network-packet-loss/status
verifica o status da falha. Somente um de cada tipo de falha é compatível de cada vez.
Veja a seguir dois exemplos de solicitações para usar os endpoints /stop
e /status
. Ambos utilizam o método POST HTTP
.
Endpoint: ${ECS_AGENT_URI}/fault/v1/network-packet-loss/stop
Endpoint: ${{ECS_AGENT_URI}/fault/v1/network-packet-loss/status