

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Realize testes de resiliência com AWS Fault Injection Service
<a name="kinesis-fis"></a>

AWS Fault Injection Service é um serviço totalmente gerenciado que ajuda você a realizar experimentos de injeção de falhas em suas AWS cargas de trabalho. AWS FIS a integração com o Amazon Kinesis Data Streams permite que você teste a resiliência do seu aplicativo contra erros comuns da API do Amazon Kinesis Data Streams em um ambiente controlado. Esse recurso permite validar o tratamento de erros, a lógica de novas tentativas e também monitorar os sistemas antes de encontrar falhas. Para obter mais informações, consulte [O que é AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) .

**Ações**
+ Erro interno da API: injeta erros internos nas solicitações feitas pelo perfil do IAM de destino. A resposta específica depende de cada serviço e API. A ação `aws:fis:inject-api-internal-error` cria erros `InternalFailure` (HTTP 500).
+ Erro de controle de utilização da API: injeta erros internos nas solicitações feitas pelo perfil do IAM de destino. A resposta específica depende de cada serviço e API. A ação `aws:fis:inject-api-throttle-error` cria erros `ThrottlingException` (HTTP 400).
+ Erro de API indisponível: injeta erros internos nas solicitações feitas pelo perfil do IAM de destino. A resposta específica depende de cada serviço e API. A ação `aws:fis:inject-api-unavailable-error` cria erros `ServiceUnavailable` (HTTP 503).
+ Exceção de throughput provisionada: injeta erros internos nas solicitações feitas pelo perfil do IAM de destino. A resposta específica depende de cada serviço e API. A ação `aws:kinesis:inject-api-provisioned-throughput-exception` cria erros `ProvisionedThroughputExceededException` (HTTP 400).
+ Exceção de iterador expirado da API: injeta erros internos nas solicitações feitas pelo perfil do IAM de destino. A resposta específica depende de cada serviço e API. A ação `aws:kinesis:inject-api-expired-iterator-exception` cria erros `ExpiredIteratorException` (HTTP 400). 

Para obter mais informações, consulte [Ações do Amazon Kinesis Data Streams](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#aws-kinesis-actions).

**Considerações**
+ Você pode usar as ações acima com ofertas provisionadas e sob demanda para o Amazon Kinesis Data Streams.
+ Seu fluxo é retomado quando o experimento é concluído, com base na duração selecionada. Também é possível interromper um experimento em andamento antes que ele seja concluído. Como alternativa, você pode definir uma condição de parada para interromper o experimento com base em alarmes que definem a integridade do aplicativo em um Amazon CloudWatch Application Insights.
+ Você pode testar até 280 fluxos.

Para obter mais informações sobre suporte regional, consulte [Endpoints e quotas do AWS Fault Injection Service](https://docs.aws.amazon.com/general/latest/gr/fis.html).

# Erros de exceção de throughput provisionada
<a name="kinesis-fis-provisioned-throughput"></a>

Os erros de exceção de throughput provisionado excedido (HTTP 400) ocorrem quando a taxa de solicitação de um fluxo do Kinesis ultrapassa os limites de throughput de um ou mais fragmentos. Cada fragmento tem limites específicos de capacidade de leitura e gravação e exceder esses limites aciona essa exceção. Os cenários que levam a essa exceção incluem: picos repentinos na ingestão ou no consumo de dados, capacidade insuficiente de fragmentos para o volume de dados processado ou distribuição desigual das chaves de partição.

**Recomendações para lidar com exceções**
+ Implemente mecanismos exponenciais de espera e de novas tentativas.
+ Aumente o número de fragmentos para acomodar uma maior throughput.
+ Assegure que haja uma distribuição adequada das chaves de partição.
+ Monitore as métricas do fluxo.

Além disso, o uso do modo de capacidade sob demanda do Kinesis ajuda a ajustar automaticamente workloads e minimizar a ocorrência dessa exceção. Para ter mais informações, consulte [O que é o AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**nota**  
Os problemas de distribuição imprópria estão fora da capacidade de escalonamento automático no modo sob demanda.

**Para realizar um experimento básico**

1. Use métricas básicas: registre os padrões de throughput normais antes do teste.

1. Crie um experimento: use a ação `aws:kinesis:inject-api-provisioned-throughput-exception`.

1. Configure a intensidade: comece com um controle de utilização de solicitações de 25%.

1. Monitore as respostas: verifique a lógica de novas tentativas com espera exponencial.

1. Valide o ajuste de escala: confirme se o ajuste de escala automático aciona a ativação.

1. Verifique os alarmes: confira se os alarmes `CloudWatch` estão funcionando conforme o esperado.

As aplicações devem implementar estratégias de espera adequadas, monitorar as métricas `WriteProvisionedThroughputExceeded` e `ReadProvisionedThroughputExceeded` e acionar o ajuste de escala de fragmentos quando apropriado.

**Detalhes da ação**
+ **Tipo de recurso**: ARN do perfil do IAM
+ **Operações de destino**: `PutRecord`, `PutRecords`, `GetRecords`
+ ****Código de erro****: `ProvisionedThroughputExceededException` (HTTP 400)
+ ****Descrição****: simula cenários em que a taxa de solicitação excede os limites de capacidade de fragmento, testando o controle de utilização de aplicações e ajustando a escala das respostas.

**Parâmetros**
+ **ARN do perfil do IAM**: perfil usado por sua aplicação para as operações do Kinesis Data Streams.
+ **Operações**: operações de destino: `PutRecord`, `PutRecords`, `GetRecords`.
+ **Lista de recursos**: nomes específicos do fluxo ou identificadores de fragmentos.
+ **Duração**: duração do experimento, que varia de um minuto a 12 horas. Na AWS FIS API, o valor é uma string no formato ISO 8601. Por exemplo, PT1 M representa um minuto. No AWS FIS console, você insere o número de segundos, minutos ou horas.
+ **Intensidade**: a porcentagem de solicitações a serem submetidas a controle de utilização.

**Permissões obrigatórias**
+ `kinesis:InjectApiError`

Exemplo de modelo de experimento

 O exemplo a seguir mostra uma exceção de taxa de transferência provisionada para todas as solicitações de até 5 streams do Kinesis Data com a tag especificada. AWS FIS seleciona os fluxos a serem afetados aleatoriamente. Após 5 minutos, a falha é removida.

```
{
    "description": "Kinesis stream experiment",
    "targets": {
        "KinesisStreams-Target-1": {
            "resourceType": "aws:kinesis:stream",
            "resourceTags": {
                   "tag-key": "tag-value"
            },
            "selectionMode": "COUNT(5)"
        }
    },
    "actions": {
         "kinesis": {
              "actionId": "aws:kinesis:stream-provisioned-throughput-exception",
              "description": "my-stream",
              "parameters": {
                   "duration": "PT5M",
                   "percentage": "100",
                   "service": "kinesis"
              },
              "targets": {
                    "KinesisStreams": "KinesisStreams-Target-1"
              }
         }
   },
   "stopConditions": [
         {
              "source": "none"
         }
   ],
   "roleArn": "arn:aws:iam::111122223333:role/role-name",
   "tags": {},
   "experimentOptions": {
       "accountTargeting": "single-account",
       "emptyTargetResolutionMode": "fail"
   }    
}
```

Exemplo de permissões do perfil do experimento

A permissão a seguir permite que você execute as ações `aws:kinesis:stream-provisioned-throughput-exception` e `aws:kinesis:stream-expired-iterator-exception` em um fluxo específico que afeta 50% das solicitações.

# Erros de exceção do iterador expirado
<a name="kinesis-fis-expired-iterator"></a>

 Os erros de exceção do iterador expirado (HTTP 400) ocorrem quando o iterador de fragmento expira e não é mais usado para recuperar os registros do fluxo durante a chamada de `GetRecords`. Isso ocorre quando há atrasos entre as operações de leitura, causados por tarefas de processamento de dados de longa duração, problemas de rede ou tempo de inatividade da aplicação. 

**nota**  
Um iterador de fragmento é válido por 5 minutos após o momento em que é emitido.

**Recomendações para lidar com exceções**
+ Atualizar os iteradores de fragmento antes que eles expirem.
+ Incorporar o tratamento de erros para obter novos iteradores.
+ Utilizar a Kinesis Kinesis Client Library (KCL), que gerencia automaticamente a expiração do iterador de fragmento.

Para obter mais informações, consulte [O que é AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Para realizar um experimento básico**

1. Crie um modelo de experimento: use o AWS FIS console. 

1. Selecione a ação: use a ação `aws:kinesis:inject-api-expired-iterator-exception`.

1. Configure os destinos: especifique o perfil do IAM e as operações do Kinesis Data Streams. 

1. Defina a duração: comece com 5 a 10 minutos para o teste inicial. 

1. Adicionar condições de parada: [condições de parada para AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html).

1. Execute o experimento: monitore o comportamento da aplicação.

**Detalhes da ação**
+ **Tipo de recurso**: ARN do perfil do IAM
+ **Operações de destino**: `GetRecords`
+ ****Código de erro****: `ExpiredIteratorException` (HTTP 400)
+ ****Descrição****: o iterador fornecido excede o período máximo permitido, simulando cenários em que o processamento de registros é muito lento ou a lógica de verificação falha.

**Parâmetros**
+ **ARN do perfil do IAM**: perfil usado por sua aplicação para as operações do Kinesis Data Streams.
+ **Operações**: operações de destino: `GetRecords`
+ **Lista de recursos**: os nomes específicos do fluxo ou ARNs.
+ **Duração**: a duração do experimento. Isso é configurável. 
+ **Intensidade**: a porcentagem de solicitações a serem submetidas a controle de utilização.

**Permissões obrigatórias**
+ `kinesis:InjectApiError`