Passer au contenu

Comment puis-je résoudre une erreur ETIMEDOUT dans ma fonction Lambda ?

Lecture de 4 minute(s)
0

Lorsque ma fonction AWS Lambda essaie d'atteindre des services AWS en aval ou des points de terminaison externes, je reçois une erreur ETIMEDOUT.

Résolution

L'erreur ETIMEDOUT s'affiche lorsque la connexion échoue car l'hôte n'a pas répondu après un certain temps. Les problèmes de configuration réseau peuvent entraîner un chemin réseau non valide entre la fonction Lambda et l'hôte. Ce chemin non valide entraîne des erreurs de délai d’attente de connexion. Pour résoudre une erreur ETIMEDOUT, vérifiez votre configuration réseau en fonction de la configuration de votre hôte.

Pour un hôte accessible via l'Internet public

Si vous avez configuré la fonction avec Amazon Virtual Private Cloud (Amazon VPC), assurez-vous que la fonction a accès à l'Internet public. Si vous recevez des erreurs de délai d’attente intermittentes, vérifiez que tous les sous-réseaux configurés pour la fonction sont privés et disposent de routes par défaut vers une passerelle NAT. Pour les routes par défaut vers une passerelle de transit AWS Transit Gateway, vérifiez que la passerelle de transit autorise la fonction à accéder à l'Internet public.

Remarque : Par défaut, une fonction sans configuration VPC a accès à l'Internet public.

Pour un hôte accessible uniquement au sein d'un VPC

Si l'hôte n'est accessible que dans un VPC, configurez d'abord la fonction Lambda dans le VPC, puis vérifiez les configurations suivantes :

  • Il existe un chemin de routage valide vers l'hôte dans la table de routage. Si le point de terminaison hôte se trouve dans le même VPC que la fonction Lambda, vérifiez qu'il existe une route locale. Si le point de terminaison hôte se trouve dans un autre VPC, assurez-vous que la table de routage inclut la route pour la connexion d'appairage du VPC.
  • Les règles de liste de contrôle d'accès réseau (ACL réseau) du sous-réseau, à la fois dans la fonction Lambda et dans l'hôte, autorisent les règles entrantes et sortantes.
  • Les règles de groupe de sécurité de la fonction Lambda autorisent le trafic sortant vers l'hôte de destination sur le port requis.
  • Les règles du groupe de sécurité de l'hôte autorisent le trafic entrant depuis la fonction Lambda sur le port requis.
  • L'hôte prend en charge les requêtes utilisant le HTTP ou HTTPS et les ports spécifiés dans la requête de connexion.

Pour analyser les problèmes de configuration du chemin réseau, utilisez l'analyseur d'accessibilité de VPC.

Si l'erreur de délai d’attente se produit dans le délai de 350 secondes pour une passerelle NAT, réinitialisez le délai d'inactivité.

Pour un hôte qui utilise un VPC avec un ensemble d'options DHCP personnalisé

Si le VPC dispose d’un ensemble d’options DHCP (protocole de configuration d'hôte dynamique) personnalisé, utilisez les journaux de requêtes Amazon Route 53 Resolver pour afficher la réponse à la requête DNS. L'adresse IP de l'hôte doit pouvoir se connecter au port. L'hôte doit également utiliser une instance privée Amazon Elastic Compute Cloud (Amazon EC2) qui se trouve dans le même sous-réseau et le même groupe de sécurité que la fonction.

Pour identifier l'adresse IP de l'hôte, utilisez l'instance EC2 pour exécuter la commande suivante :

nslookup amazon.com

Remarque : Remplacez amazon.com par votre nom d'hôte.

Pour vérifier que l'adresse IP peut se connecter au port demandé, exécutez la commande suivante :

telnet host-name-IP-address 443

Remarque : Remplacez host-name-IP-address par votre nom d'hôte ou par votre adresse IP et 443 par votre port.

Pour obtenir des informations de dépannage, consultez la section Comment puis-je résoudre les erreurs constantes et intermittentes liées au DNS dans AWS Lambda ?

Vérifier les configurations de votre hôte

Vérifiez si le service en aval ou le point de terminaison externe reçoit la requête. Utilisez les métriques, les journaux ou les traces réseau disponibles pour l'hôte. Si vous utilisez un VPC, utilisez les journaux de flux VPC pour vérifier que le trafic sortant quitte la fonction Lambda. Si vous utilisez une interface réseau Elastic, pour trouver son adresse IP, utilisez le Lambda ENI Finder sur le site Web GitHub. Pour plus d'informations sur l'utilisation du script Bash Lambda ENI finder, consultez la section Pourquoi ne puis-je pas détacher ou supprimer une interface réseau Elastic créée par Lambda ?

Si un trafic entrant élevé bloque l'hôte de sorte qu'il ne peut pas répondre dans le délai d'expiration de socket configuré, utilisez le modèle de nouvelle tentative avec backoff.

AWS OFFICIELA mis à jour il y a 2 ans