Comment puis-je résoudre les erreurs 500 liées à l'intégration de liens VPC pour API Gateway ?

Lecture de 7 minute(s)
0

J'ai configuré Amazon API Gateway avec des intégrations de liens de cloud privé virtuel (VPC). Lorsque j'appelle mon API, je reçois un message d'erreur interne ou de configuration avec un code de statut HTTP 500.

Brève description

Avec des liens VPC, il peut arriver qu'AWS API Gateway ne transfère pas le trafic vers les ressources backend et renvoie un code de statut HTTP 500 pour les raisons suivantes :

  • Le lien VPC présente l'état Échec. Le service de point de terminaison peut aussi être supprimé ou présente l'état Rejeté.
  • La cible enregistrée pour le groupe cible est défectueuse ou n'est pas utilisée.
    Remarque : si aucun trafic n'est envoyé via le lien VPC pendant 60 jours, le lien devient INACTIF. Pour en savoir plus, reportez-vous à Utilisation des liens VPC pour les API HTTP.
  • Les groupes de sécurité n'autorisent pas le trafic sur des ports spécifiques.
  • La liste de contrôle d'accès réseau (ACL réseau) bloque le trafic.
  • La cible n'écoute pas sur les ports cibles.
  • Le certificat de nom de domaine ne correspond pas au Network Load Balancer ou à l'Application Load Balancer activé par TLS.

Si Amazon CloudWatch Logs est activé pour votre API, un message d'erreur indiquant la cause de l'erreur apparaît dans les journaux d'exécution.

Exemples de messages d'erreur HTTP 500 dans les journaux CloudWatch

« Jeudi 4 août 2022 à 17:48:21 UTC : L'exécution a échoué en raison d'une erreur de configuration : une erreur interne s'est produite lors de l'exécution de votre demande le jeudi 4 août 2022 à 17:48:21 UTC : Méthode terminée avec le statut : 500 »

-ou-

« Jeudi 4 août 2022 à 19:50:21 UTC : L'exécution a échoué en raison d'une erreur de configuration : le nom d'hôte « domaine.com.com » ne correspond pas à l'objet du certificat fourni par l'homologue (CN=myinstance.com)
Jeudi 4 août 2022 à 19:50:21 UTC : Méthode terminée avec le statut : 500 »

Résolution

Confirmez la cause de l'erreur

Activez la journalisation de l'API CloudWatch. Veillez à configurer la journalisation des exécutions.

Remarque : lorsque vous configurez les paramètres de journalisation, sélectionnez INFOS pour le champ Niveau de journalisation. Choisissez ensuite Consigner les demandes complètes/données de réponse.

Pour identifier la cause des erreurs, consultez les journaux d'exécution des API REST dans CloudWatch.

Vérifiez si le message d'erreur apparaît dans les journaux d'exécution

Erreur : L'exécution a échoué en raison d'une erreur de configuration : une erreur interne s'est produite lors de l'exécution de votre demande

Vérifiez ensuite les configurations suivantes :

  • Vérifiez que l'équilibreur de charge des liens VPC existe et qu'il n'a pas été supprimé.
  • Vérifiez que le lien VPC présente l'état DISPONIBLE. Si le lien VPC présente l'état ÉCHEC, vous devez créer un nouveau lien VPC et l'associer à votre API.
    Remarque : déployez l'API après avoir modifié la demande d'intégration.
  • Vérifiez que la connexion du point de terminaison du lien VPC présente l'état DISPONIBLE.
  • Si l'ID VPC est référencé par une variable d'étape, vérifiez que l'ID de lien VPC est correct.
  • Vérifiez que l'équilibreur de charge du lien VPC écoute sur le port HTTP/HTTPS pour lequel la demande est configurée. Vérifiez que les écouteurs sont configurés pour le port approprié. Assurez-vous que les ACL réseau ne bloquent pas la demande.
  • Vérifiez que le groupe cible accepte la demande. Les ACL réseau doivent autoriser le trafic entrant et sortant, et les groupes de sécurité doivent autoriser le trafic entrant pour les ports configurés.
  • Si la demande renvoie une erreur 500, la connexion peut recevoir des paquets TCP RST. Vérifiez que le serveur backend est en cours d'exécution. Vérifiez qu'un service est en cours d'exécution sur la cible backend du port cible. Vérifiez que la cible backend écoute sur le port cible.
  • Vérifiez que l'option Appliquer les règles entrantes au trafic AWS PrivateLink est désactivée. L'option Appliquer les règles entrantes au trafic PrivateLink applique toutes les règles entrantes et sortantes du groupe de sécurité au trafic provenant du lien VPC. Si vous ne configurez pas le groupe de sécurité pour autoriser le trafic provenant du lien VPC, le groupe de sécurité peut bloquer le trafic API Gateway. Pour appliquer les règles du groupe de sécurité au trafic qui ne provient pas du lien VPC, désactivez Appliquer les règles entrantes au trafic PrivateLink.

Erreur : L'exécution a échoué en raison d'une erreur de configuration : le nom d'hôte « domaine.com.com » ne correspond pas à l'objet du certificat fourni par l'homologue (CN=myinstance.com)

Assurez-vous que le nom de domaine du point de terminaison correspond au certificat renvoyé par la cible de l'équilibreur de charge activé par TLS.

Erreur : L'exécution a échoué en raison d'une erreur de configuration : échec de la création du chemin PKIX : sun.security.provider.certpath.SunCertPathBuilderException: impossible de trouver le chemin de certification valide vers la cible demandée

Cette erreur se produit lorsque API Gateway ne trouve pas l'autorité de certification racine. Même lorsque l'option insecureSkipVerification est définie sur vrai dans la propriété TlsConfig des intégrations, API Gateway effectue la validation de base des certificats. La validation vérifie les informations suivantes :

  • La date d'expiration du certificat
  • Le nom d'hôte
  • La présence d'une autorité de certification racine

Les certificats que vous configurez sur l'instance cible doivent être considérés comme fiables dans la liste des fournisseurs d'autorité de certification pris en charge.

Erreur : L'exécution a échoué en raison d'une erreur de configuration : impossible de vérifier la signature ECDH ServerKeyExchange

Cette erreur se produit lorsqu'une clé et le certificat associé ne correspondent pas et que TLS Handshake échoue. Pour résoudre ce problème, vérifiez le contenu des fichiers que vous avez utilisés pour les autorités de certification, les certificats et les clés que vous avez configurés.

Erreur : l'exécution a échoué en raison d'une erreur interne

Cette erreur se produit quand Amazon API Gateway ne s'est pas connecté à l'équilibreur de charge via le lien VPC en raison de la réinitialisation de la cible sur l'équilibreur de charge. Pour résoudre ce problème, définissez sur la cible un délai d'expiration plus long que le délai d'expiration par défaut (350 secondes) défini sur l'équilibreur de charge.

Erreur : L'exécution a échoué en raison d'une erreur de configuration : version de protocole non valide : {Text of string}

Cette erreur se produit lorsque l'intégration a répondu par une réponse HTTP non valide et non conforme à la spécification HTTP. Cela peut signifier que le backend intégré renvoie des données non valides à Amazon API Gateway.

Pour corriger cette erreur, procédez comme suit :

  • Reproduisez la demande que vous avez effectuée depuis Amazon API Gateway. Pour tester le point de terminaison de service utilisé par Amazon API Gateway, créez le point de terminaison d'un VPC lié à l'ID du point de terminaison du service. Vous pouvez également exécuter des captures de paquets pour examiner la réponse renvoyée par le backend intégré.
  • Pour éviter le double chiffrement, remplacez le protocole de l'équilibreur de charge par TLS ou TCP, en fonction de la réponse de la cible.
  • Veillez à ce que l'option insecureSkipVerification soit définie sur vrai dans la propriété TlsConfig des intégrations.

Informations connexes

Comprendre les liens VPC dans les intégrations Amazon API Gateway privées

Surveillance de l'exécution de l'API REST avec les métriques Amazon CloudWatch

Configurer un Network Load Balancer pour les intégrations API Gateway privées

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 5 mois