

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Realice pruebas de resiliencia con AWS Fault Injection Service
<a name="kinesis-fis"></a>

AWS Fault Injection Service es un servicio totalmente gestionado que le ayuda a realizar experimentos de inyección de errores en sus AWS cargas de trabajo. AWS FIS la integración con Amazon Kinesis Data Streams le permite probar la resiliencia de sus aplicaciones frente a errores comunes de la API de Amazon Kinesis Data Streams en un entorno controlado. Esta capacidad permite validar el manejo de errores, la lógica de reintentos y la supervisión de sistemas antes de que se produzcan errores. Para obtener más información, consulte [¿Qué es? AWS Fault Injection Service](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) .

**Acciones**
+ Error interno de API: inyecta errores internos en las solicitudes realizadas por el rol de IAM de destino. La respuesta específica depende de cada servicio y API. La acción `aws:fis:inject-api-internal-error` crea errores de `InternalFailure` (HTTP 500).
+ Error de limitación de API: inyecta errores internos en las solicitudes realizadas por el rol de IAM de destino. La respuesta específica depende de cada servicio y API. La acción `aws:fis:inject-api-throttle-error` crea errores de `ThrottlingException` (HTTP 400).
+ Error de indisponibilidad de API: inyecta errores internos en las solicitudes realizadas por el rol de IAM de destino. La respuesta específica depende de cada servicio y API. La acción `aws:fis:inject-api-unavailable-error` crea errores de `ServiceUnavailable` (HTTP 503).
+ Excepción de rendimiento aprovisionado de API: inyecta errores internos en las solicitudes realizadas por el rol de IAM de destino. La respuesta específica depende de cada servicio y API. La acción `aws:kinesis:inject-api-provisioned-throughput-exception` crea errores de `ProvisionedThroughputExceededException` (HTTP 400).
+ Excepción del iterador caducado de API: inyecta errores internos en las solicitudes realizadas por el rol de IAM de destino. La respuesta específica depende de cada servicio y API. La acción `aws:kinesis:inject-api-expired-iterator-exception` crea errores de `ExpiredIteratorException` (HTTP 400). 

Para obtener más información, consulte las [acciones de Amazon Kinesis Data Streams](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#aws-kinesis-actions).

**Consideraciones**
+ Puede utilizar las acciones anteriores con las ofertas aprovisionadas y bajo demanda para Amazon Kinesis Data Streams.
+ El flujo se reanudará una vez finalizado el experimento, según la duración seleccionada. También puede detener un experimento en ejecución antes de que se complete. Como alternativa, puede definir una condición de parada para detener el experimento en función de las alarmas que definen el estado de la aplicación en Amazon CloudWatch Application Insights.
+ Es posible realizar pruebas con hasta 280 flujos.

Para obtener más información sobre las regiones compatibles, consulte [puntos de enlace y cuotas de AWS Fault Injection Service](https://docs.aws.amazon.com/general/latest/gr/fis.html).

# Errores de excepción de rendimiento aprovisionado
<a name="kinesis-fis-provisioned-throughput"></a>

Los errores de excepción de rendimiento aprovisionado superado (HTTP 400) se producen cuando la tasa de solicitudes de un flujo de Kinesis supera los límites de rendimiento de una o más particiones. Cada partición tiene límites de capacidad de lectura y escritura específicos, y si se superan, se produce esta excepción. Las situaciones que conducen a esta excepción son: aumentos repentinos en el consumo o la ingesta de datos, una capacidad de partición insuficiente para el volumen de datos que se está procesando o una distribución desigual de las claves de partición.

**Recomendaciones para gestionar las excepciones**
+ Implemente mecanismos de retroceso exponencial y reintento.
+ Aumente el número de particiones para lograr un mayor rendimiento.
+ Asegúrese de que haya una distribución adecuada de las claves de partición.
+ Supervise las métricas de flujo.

Además, el uso del modo de capacidad bajo demanda de Kinesis permite ajustar automáticamente las cargas de trabajo y minimizar la aparición de esta excepción. Para obtener más información, consulte [¿Qué es AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**nota**  
Los problemas de distribución inadecuados están fuera de la capacidad de escalado automático del modo bajo demanda.

**Cómo realizar un experimento básico**

1. Utilice métricas de referencia: registre los patrones de rendimiento normales antes de realizar la prueba.

1. Cree un experimento: utilice la acción `aws:kinesis:inject-api-provisioned-throughput-exception`.

1. Configure la intensidad: comience con una limitación del 25 % de las solicitudes.

1. Supervise las respuestas: verifique la lógica de reintento con una reducción exponencial.

1. Valide el escalado: confirme que el escalado automático desencadene la activación.

1. Compruebe las alarmas: asegúrese de que las alarmas de `CloudWatch` funcionen según lo previsto.

Las aplicaciones deben implementar las estrategias, la supervisión de `WriteProvisionedThroughputExceeded` y las métricas de `ReadProvisionedThroughputExceeded`, y activar el escalado de las particiones cuando sea apropiado.

**Detalles de la acción**
+ **Tipo de recurso**: ARN del rol de IAM
+ **Operaciones de destino**: `PutRecord`, `PutRecords`, `GetRecords`
+ ****Código de error****: `ProvisionedThroughputExceededException` (HTTP 400)
+ ****Descripción****: simula escenarios en los que la tasa de solicitudes supera los límites de capacidad de la partición, pone a prueba la limitación de las aplicaciones y escala las respuestas

**Parameters**
+ **ARN del rol de IAM**: el rol que utiliza su aplicación para las operaciones de Kinesis Data Streams
+ **Operaciones**: operaciones de destino: `PutRecord`, `PutRecords`, `GetRecords`
+ **Lista de recursos**: los nombres de flujo específicos o los identificadores de particiones
+ **Duración**: la duración del experimento, que es de un minuto a 12 horas En la AWS FIS API, el valor es una cadena en formato ISO 8601. Por ejemplo, PT1 M representa un minuto. En la AWS FIS consola, se introduce el número de segundos, minutos u horas.
+ **Intensidad**: el porcentaje de solicitudes para limitar

**Permisos necesarios**
+ `kinesis:InjectApiError`

Ejemplo de plantilla de experimento

 El siguiente ejemplo muestra una excepción de rendimiento aprovisionada para todas las solicitudes de hasta 5 transmisiones de Kinesis Data con la etiqueta especificada. AWS FIS selecciona aleatoriamente las transmisiones a las que desea afectar. El error se elimina después de 5 minutos.

```
{
    "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"
   }    
}
```

Ejemplo de permisos de roles de experimentos

El siguiente permiso permite ejecutar las acciones `aws:kinesis:stream-provisioned-throughput-exception` y `aws:kinesis:stream-expired-iterator-exception` en un flujo específico que afecta al 50 % de las solicitudes.

# Errores de excepción del iterador caducado
<a name="kinesis-fis-expired-iterator"></a>

 Los errores de excepción del iterador caducado (HTTP 400) se producen cuando el iterador de particiones ha caducado y ya no se utiliza para recuperar registros de flujo al llamar a `GetRecords`. Esto ocurre cuando hay retrasos entre las operaciones de lectura, que se deben a tareas de procesamiento de datos que se ejecutan durante mucho tiempo, a problemas de red o al tiempo de inactividad de las aplicaciones. 

**nota**  
Un iterador de partición es válido durante 5 minutos después de su emisión.

**Recomendaciones para gestionar las excepciones**
+ actualizar los iteradores de partición antes de que caduquen,
+ incorporar el manejo de errores para obtener nuevos iteradores,
+ utilizar Kinesis Client Library (KCL), que administra de forma automática la caducidad de los iteradores de particiones.

Para obtener más información, consulte [¿Qué es AWS Fault Injection Service?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Cómo realizar un experimento básico**

1. Cree una plantilla de experimento: utilice la AWS FIS consola. 

1. Seleccione la acción `aws:kinesis:inject-api-expired-iterator-exception`.

1. Configure los destinos al especificar el rol de IAM y las operaciones de Kinesis Data Streams. 

1. Establezca la duración de 5 a 10 minutos para la prueba inicial. 

1. Añadir condiciones de parada: [condiciones de parada para AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html).

1. Ejecute el experimento para supervisar el comportamiento de la aplicación.

**Detalles de la acción**
+ **Tipo de recurso**: ARN del rol de IAM
+ **Operaciones de destino**: `GetRecords`
+ ****Código de error****: `ExpiredIteratorException` (HTTP 400)
+ ****Descripción****: el iterador proporcionado supera la antigüedad máxima permitida y simula situaciones en las que el procesamiento de los registros es demasiado lento o la lógica de los puntos de control falla

**Parameters**
+ **ARN del rol de IAM**: el rol que utiliza su aplicación para las operaciones de Kinesis Data Streams
+ **Operaciones**: operaciones de destino: `GetRecords`
+ **Lista de recursos**: los nombres de transmisión específicos o ARNs.
+ **Duración**: la duración del experimento. Esto se puede configurar 
+ **Intensidad**: el porcentaje de solicitudes para limitar

**Permisos necesarios**
+ `kinesis:InjectApiError`