View a markdown version of this page

Résolution des problèmes - Tests de charge distribués sur AWS

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ésolution des problèmes

La résolution des problèmes connus fournit des instructions pour atténuer les erreurs connues. Si ces instructions ne répondent pas à votre problème, contactez le support AWS fournit des instructions pour ouvrir un dossier de support AWS pour cette solution.

Résolution des problèmes connus

Problème : vous utilisez un VPC existant et vos tests échouent avec le statut Echoué, ce qui entraîne le message d'erreur suivant :

Test might have failed to run.

  • Résolution :

Assurez-vous que les sous-réseaux existent dans le VPC spécifié et qu'ils disposent d'une route vers Internet via une passerelle Internet ou une passerelle NAT. AWS Fargate a besoin d'un accès pour extraire l'image du conteneur depuis le référentiel public afin d'exécuter les tests avec succès.

Problème : les tests prennent trop de temps ou sont bloqués indéfiniment

  • Résolution :

Annulez le test et vérifiez AWS Fargate pour vous assurer que toutes les tâches ont été arrêtées. Si elles ne se sont pas arrêtées, arrêtez manuellement toutes les tâches Fargate. Vérifiez les limites de tâches Fargate à la demande sur votre compte pour vous assurer que vous pouvez lancer le nombre de tâches souhaité. Vous pouvez également consulter les CloudWatch journaux de la fonction Lambda Task-Runner pour mieux comprendre les défaillances lors du lancement de tâches Fargate. Consultez les journaux CloudWatch ECS pour plus de détails sur ce qui se passe dans les conteneurs Fargate en cours d'exécution.

Problème : les tests démarrent mais ne se terminent pas ou l'état des tâches ECS est inconnu

  • Résolution :

Si vous avez sélectionné l'option permettant de fournir un VPC existant dans le compte sur lequel la solution a été déployée, assurez-vous que le VPC utilisé par les tâches ECS possède suffisamment d'adresses IP libres pour démarrer le nombre de tâches indiqué dans l'entrée de test. La définition des tâches ECS utilise l'image ECR qui nécessite une passerelle Internet ou une route vers Internet afin que le service ECS puisse fournir les tâches en téléchargeant l'image ECR de la solution depuis aws- solutions/distributed -load-testing-on-aws-load-tester. Si vous ne pouvez pas fournir de route vers Internet étant donné que tous les sous-réseaux du VPC sont privés, vous pouvez héberger l'image ECR dans votre compte à l'aide du cache d'extraction ECR. Mettez à jour la définition de la tâche avec le nouvel URI de l'image ECR et créez une nouvelle révision. Une fois la définition de tâche mise à jour, la configuration de la solution dans la table DynamoDB doit être mise à jour pour utiliser la nouvelle révision. Le nom de la table DynamoDB se trouve dans l'onglet Stack Outputs sous CloudFormation la clé. ScenariosTable Mettez à jour l'attribut TaskDefinition pour l'élément avec la clé TestID et la valeur region- []SOLUTION-DEPLOYED-REGION.

Problème : les tests doivent utiliser un point de terminaison privé ou non disponible via la passerelle Internet

  • Résolution :

Lorsque vous testez des points de terminaison d'API privés qui ne sont pas accessibles via la passerelle Internet, envisagez les approches suivantes :

  1. Configuration réseau : assurez-vous que les tables de routage de sous-réseau utilisées par les tâches ECS sont mises à jour avec une route vers la plage d'adresses IP du point de terminaison privé testé. Cela permet au trafic de test d'atteindre le point de terminaison privé au sein de votre VPC.

  2. Résolution DNS : pour les domaines personnalisés, configurez les paramètres DNS de votre VPC pour résoudre le nom de domaine du point de terminaison privé. Reportez-vous à la documentation DNS VPC pour obtenir des instructions détaillées.

  3. Points de terminaison VPC : si vous testez les services AWS, envisagez d'utiliser des points de terminaison VPC ( PrivateLinkAWS) pour établir une connectivité privée. Par exemple, pour tester une API Gateway privée, vous pouvez créer un point de terminaison VPC pour API Gateway. Consultez la documentation de Private API Gateway.

  4. Peering VPC : si le point de terminaison privé se trouve dans un autre VPC, établissez le peering VPC entre le VPC où la solution est déployée et le VPC contenant le point de terminaison privé. Configurez les tables de routage appropriées dans les deux VPC. Consultez la documentation VPC Peering.

  5. Transit Gateway : pour les scénarios de mise en réseau plus complexes impliquant plusieurs VPC, pensez à utiliser AWS Transit Gateway pour acheminer le trafic entre le VPC de la solution et le VPC contenant le point de terminaison privé. Consultez la documentation de Transit Gateway.

  6. Groupes de sécurité : assurez-vous que les groupes de sécurité associés à vos tâches ECS autorisent le trafic sortant vers le point de terminaison privé, et que les groupes de sécurité du point de terminaison privé autorisent le trafic entrant provenant des tâches ECS.

Pour tester des équilibreurs de charge d'application internes ou des instances EC2, assurez-vous que les plages d'adresses CIDR VPC ne se chevauchent pas et que les routes nécessaires sont configurées dans les tables de routage.

Problème : les tests sont terminés mais les résultats ne sont pas disponibles dans l'interface utilisateur

  • Résolution :

Si le test est terminé mais que les résultats ne sont pas disponibles dans l'interface utilisateur, les fichiers de résultats devraient toujours être disponibles dans le compartiment S3 à partir des tâches ECS qui ont effectué les tests. Il s'agit d'une limite connue de la solution. Dans l'architecture actuelle, la solution utilise une fonction Lambda d'analyse des résultats pour résumer les résultats de plusieurs tâches ECS, qui sont ensuite stockés sous forme d'élément dans la table DynamoDB. La taille maximale des éléments de la table DynamoDB est limitée à 400 Ko. Cette limite est atteinte en fonction de la complexité du script de test, de la simultanéité et du nombre de tâches utilisées. L'erreur ne signifie pas que le test échoue ; elle indique que le processus de synthèse des résultats et de leur stockage dans la table DynamoDB pour les opérations CRUD a échoué. Les résultats sont toujours disponibles dans le compartiment S3 pour le scénario de test.

Problèmes de déploiement d'ALB + ECS Fargate

Problème : la validation du certificat ACM est bloquée dans le statut « En attente de validation »

  • Résolution :

Si vous avez demandé un certificat ACM public à l'aide de la validation DNS, vous devez ajouter l'enregistrement CNAME fourni par ACM à votre configuration DNS. Accédez à la console ACM, développez les détails du certificat et ajoutez l'enregistrement de validation DNS au fournisseur DNS de votre domaine. Si vous avez utilisé la validation par e-mail, vérifiez l'adresse e-mail associée au domaine pour l'e-mail de validation envoyé par AWS. Pour plus d'informations, reportez-vous à la section Validation DNS dans le guide de l'utilisateur d'AWS Certificate Manager.

Problème : la console Web renvoie une erreur « 502 Bad Gateway » ou « 503 Service temporairement indisponible » après le déploiement

  • Résolution :

Vérifiez les contrôles de santé du groupe cible ALB dans la console EC2. Si les tâches ECS Fargate s'affichent comme défectueuses, vérifiez qu'elles sont exécutées dans la console ECS et vérifiez qu'elles se connectent pour détecter les erreurs. CloudWatch Assurez-vous que le groupe de sécurité attaché aux tâches ECS autorise le trafic entrant en provenance du groupe de sécurité ALB.

Problème : le DNS est configuré mais le domaine personnalisé n'est pas résolu sur la console Web

  • Résolution :

Vérifiez que l'enregistrement CNAME est correctement configuré chez votre fournisseur DNS, en mappant votre domaine personnalisé (par exempleconsole.example.com) au nom DNS ALB à partir des CloudFormation sorties. La propagation du DNS peut prendre jusqu'à 48 heures en fonction de votre fournisseur DNS et des paramètres TTL. Vous pouvez vérifier l'enregistrement DNS à l'aide de dig console.example.com CNAME ounslookup console.example.com.

Problème : la console Web renvoie une erreur « 403 Forbidden » après le déploiement

  • Résolution :

L'ACL Web AWS WAF déployée devant l'ALB bloque peut-être les demandes légitimes. Ouvrez la console AWS WAF, sélectionnez l'ACL Web associée à l'ALB et consultez l'onglet Sampled requests pour identifier la règle qui bloque le trafic. Vous pouvez modifier les règles du WAF pour autoriser les demandes bloquées. Par exemple, si un groupe de règles géré produit des faux positifs, vous pouvez définir l'action de règle spécifique sur Compter au lieu de Bloquer pour autoriser le trafic tout en l'enregistrant. Pour plus d'informations, reportez-vous à la section Tester et régler vos protections AWS WAF dans le manuel du développeur AWS WAF.

Problèmes de déploiement de Headless (apportez votre propre serveur Web)

Problème : la console Web affiche les erreurs CORS lors de la connexion à l'API

  • Résolution :

Cross-Origin Des erreurs de partage de ressources (CORS) se produisent lorsque la console Web hébergée sur votre domaine tente d'appeler les points de terminaison API Gateway de la solution. Assurez-vous que votre serveur Web diffuse la console via HTTPS, car les points de terminaison API Gateway nécessitent le protocole HTTPS. Vérifiez que le domaine d'origine de votre serveur Web correspond aux origines autorisées configurées dans les paramètres CORS d'API Gateway. Si vous utilisez un domaine personnalisé, vous devrez peut-être mettre à jour la configuration CORS d'API Gateway pour inclure votre domaine.

Problème : la console Web se charge mais l'authentification échoue ou redirige incorrectement

  • Résolution :

Les ressources de la console Web incluent un fichier de configuration contenant les paramètres du groupe d'utilisateurs Cognito et l'URL du point de terminaison de l'API. Vérifiez que ce fichier de configuration n'a pas été modifié lors de l'extraction. Assurez-vous que votre serveur Web diffuse la console via HTTPS, car Cognito nécessite le protocole HTTPS pour les URL de rappel. Vérifiez que l'URL de rappel du client de l'application Cognito inclut le domaine de votre serveur Web.