

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Réalisez des tests de résilience avec AWS Fault Injection Service
<a name="kinesis-fis"></a>

AWS Fault Injection Service est un service entièrement géré qui vous permet de réaliser des expériences d'injection de défauts sur vos AWS charges de travail. AWS FIS l'intégration avec Amazon Kinesis Data Streams vous permet de tester la résilience de votre application par rapport aux erreurs courantes de l'API Amazon Kinesis Data Streams dans un environnement contrôlé. Cette fonctionnalité vous permet de valider la gestion des erreurs, de réessayer la logique et de surveiller les systèmes avant qu'ils ne rencontrent des défaillances. Pour plus d'informations, voir [Qu'est-ce que c'est AWS Fault Injection Service ?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html) .

**Actions**
+ Erreur interne de l'API : cela injecte des erreurs internes dans les demandes effectuées par le rôle IAM cible. La réponse spécifique dépend de chaque service et de chaque API. L'action `aws:fis:inject-api-internal-error` crée `InternalFailure` des erreurs (HTTP 500).
+ Erreur d'accélération de l'API : cela injecte des erreurs internes dans les demandes effectuées par le rôle IAM cible. La réponse spécifique dépend de chaque service et de chaque API. L'action `aws:fis:inject-api-throttle-error` crée `ThrottlingException` des erreurs (HTTP 400).
+ Erreur d'indisponibilité de l'API : cela injecte des erreurs internes dans les demandes effectuées par le rôle IAM cible. La réponse spécifique dépend de chaque service et de chaque API. L'action `aws:fis:inject-api-unavailable-error` crée `ServiceUnavailable` des erreurs (HTTP 503).
+ Exception de débit provisionnée par l'API : cela injecte des erreurs internes dans les demandes effectuées par le rôle IAM cible. La réponse spécifique dépend de chaque service et de chaque API. L'action `aws:kinesis:inject-api-provisioned-throughput-exception` crée `ProvisionedThroughputExceededException` des erreurs (HTTP 400).
+ Exception d'itérateur d'API expirée : cela injecte des erreurs internes dans les demandes effectuées par le rôle IAM cible. La réponse spécifique dépend de chaque service et de chaque API. L'action `aws:kinesis:inject-api-expired-iterator-exception` crée `ExpiredIteratorException` des erreurs (HTTP 400). 

Pour plus d'informations, consultez les [actions Amazon Kinesis Data Streams](https://docs.aws.amazon.com/fis/latest/userguide/fis-actions-reference.html#aws-kinesis-actions).

**Considérations**
+ Vous pouvez utiliser les actions ci-dessus avec les offres provisionnées et à la demande pour Amazon Kinesis Data Streams.
+ Votre diffusion reprend une fois l'expérience terminée, en fonction de la durée sélectionnée. Vous pouvez également arrêter un test en cours avant qu'il ne soit terminé. Vous pouvez également définir une condition d'arrêt pour arrêter l'expérience en fonction des alarmes qui définissent l'état de l'application dans un Amazon CloudWatch Application Insights.
+ Vous pouvez tester jusqu'à 280 flux.

Pour plus d'informations sur le support régional, consultez la section [AWS Fault Injection Service Points de terminaison et quotas](https://docs.aws.amazon.com/general/latest/gr/fis.html).

# Erreurs d'exception relatives au débit provisionné
<a name="kinesis-fis-provisioned-throughput"></a>

Des erreurs exceptionnelles de dépassement du débit provisionné (HTTP 400) se produisent lorsque le taux de demandes pour un flux Kinesis dépasse les limites de débit d'une ou de plusieurs partitions. Chaque partition possède des limites de capacité de lecture et d'écriture spécifiques, et le dépassement de ces limites déclenche cette exception. Les scénarios à l'origine de cette exception incluent : des pics soudains d'ingestion ou de consommation de données, une capacité de partition insuffisante pour le volume de données traité ou une distribution inégale des clés de partition.

**Recommandations relatives à la gestion des exceptions**
+ Mettez en œuvre des mécanismes de temporisation et de réessai exponentiels.
+ Augmentez le nombre de partitions pour répondre à un débit plus élevé.
+ Assurez-vous que les clés de partition sont correctement distribuées.
+ Surveillez les statistiques des flux.

En outre, l'utilisation du mode de capacité à la demande de Kinesis permet d'ajuster automatiquement les charges de travail et de minimiser l'occurrence de cette exception. Pour plus d’informations, consultez [Qu’est-ce qu’ AWS Fault Injection Service ?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Note**  
Les problèmes de distribution inappropriés ne sont pas liés à la capacité du mode à la demande du dimensionnement automatique.

**Pour effectuer une expérience de base**

1. Utilisez des mesures de référence : enregistrez les modèles de débit normaux avant les tests.

1. Créez une expérience : utilisez l'`aws:kinesis:inject-api-provisioned-throughput-exception`action.

1. Configurez l'intensité : commencez par une limitation de 25 % des demandes.

1. Surveillez les réponses : vérifiez la logique des nouvelles tentatives avec un recul exponentiel.

1. Validez le dimensionnement : vérifiez que l'auto-scaling déclenche l'activation.

1. Vérifiez les alarmes : assurez-vous que les `CloudWatch` alarmes fonctionnent comme prévu.

Les applications doivent mettre en œuvre des stratégies de sauvegarde, de surveillance `WriteProvisionedThroughputExceeded` et de `ReadProvisionedThroughputExceeded` mesures appropriées, et déclencher le dimensionnement des partitions le cas échéant.

**Détails de l'action**
+ **Type de ressource** : ARN du rôle IAM
+ **Opérations cibles** :`PutRecord`,`PutRecords`, `GetRecords`
+ ****Code d'erreur**** : `ProvisionedThroughputExceededException` (HTTP 400)
+ ****Description**** : simule des scénarios dans lesquels le taux de demandes dépasse les limites de capacité des partitions, teste la régulation des applications et redimensionne les réponses.

**Parameters**
+ **ARN du rôle IAM** : rôle utilisé par votre application pour les opérations Kinesis Data Streams.
+ **Opérations** : opérations cibles :`PutRecord`,`PutRecords`,`GetRecords`.
+ **Liste des ressources** : les noms de flux ou les identifiants de partition spécifiques.
+ **Durée** : durée de l'expérience, qui est comprise entre une minute et 12 heures. Dans l' AWS FIS API, la valeur est une chaîne au format ISO 8601. Par exemple, PT1 M représente une minute. Dans la AWS FIS console, vous entrez le nombre de secondes, de minutes ou d'heures.
+ **Intensité** : pourcentage de demandes à limiter.

**Autorisations requises**
+ `kinesis:InjectApiError`

Exemple de modèle d'expérience

 L'exemple suivant montre une exception de débit provisionné pour toutes les demandes contenant jusqu'à 5 flux Kinesis Data avec la balise spécifiée. AWS FIS sélectionne les flux à affecter de manière aléatoire. Après 5 minutes, le défaut est supprimé.

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

Exemple d'autorisations liées aux rôles d'expérimentation

L'autorisation suivante vous permet d'exécuter les `aws:kinesis:stream-expired-iterator-exception` actions `aws:kinesis:stream-provisioned-throughput-exception` et sur un flux spécifique qui ont un impact sur 50 % des demandes.

# Erreurs d'exception d'itérateur expirées
<a name="kinesis-fis-expired-iterator"></a>

 Les erreurs d'exception d'itérateur expiré (HTTP 400) se produisent lorsque l'itérateur de partition expire et n'est plus utilisé pour récupérer des enregistrements de flux lors d'un appel. `GetRecords` Cela se produit lorsqu'il y a des retards entre les opérations de lecture, en raison de tâches de traitement de données de longue durée, de problèmes de réseau ou d'indisponibilité des applications. 

**Note**  
Un itérateur de partition est valide pendant 5 minutes après son émission.

**Recommandations relatives à la gestion des exceptions**
+ Actualisation des itérateurs de partitions avant leur expiration.
+ Intégration de la gestion des erreurs pour obtenir de nouveaux itérateurs.
+ Utilisation de la bibliothèque cliente Kinesis Kinesis (KCL) qui gère automatiquement l'expiration des itérateurs de partitions.

Pour plus d'informations, voir [Qu'est-ce que c'est AWS Fault Injection Service ?](https://docs.aws.amazon.com/fis/latest/userguide/what-is.html)

**Pour effectuer une expérience de base**

1. Créez un modèle d'expérience : utilisez la AWS FIS console. 

1. Sélectionnez l'action : utilisez l'`aws:kinesis:inject-api-expired-iterator-exception`action.

1. Configurez les cibles : spécifiez le rôle IAM et Kinesis Data Streamsoperations. 

1. Définissez la durée : commencez par 5 à 10 minutes pour le test initial. 

1. Ajouter des conditions d'[arrêt : conditions d'arrêt pour AWS FIS](https://docs.aws.amazon.com/fis/latest/userguide/stop-conditions.html).

1. Exécutez l'expérience : surveillez le comportement de l'application.

**Détails de l'action**
+ **Type de ressource** : ARN du rôle IAM
+ **Opérations cibles** : `GetRecords`
+ ****Code d'erreur**** : `ExpiredIteratorException` (HTTP 400)
+ ****Description**** : l'itérateur fourni dépasse l'âge maximum autorisé, simulant des scénarios dans lesquels le traitement des enregistrements est trop lent ou où la logique de pointage échoue.

**Parameters**
+ **ARN du rôle IAM** : rôle utilisé par votre application pour les opérations Kinesis Data Streams.
+ **Opérations** : opérations cibles : `GetRecords`
+ **Liste des ressources** : les noms de flux spécifiques ou ARNs.
+ **Durée : durée** de l'expérience. Ceci est configurable. 
+ **Intensité** : pourcentage de demandes à limiter.

**Autorisations requises**
+ `kinesis:InjectApiError`