Comment résoudre les erreurs reçues pour le canari CloudWatch défaillant que j'ai créé dans mon VPC ?

Dernière mise à jour : 08-01-2021

J'ai créé un canari Amazon CloudWatch dans un cloud privé virtuel (VPC). Cependant, j'ai reçu une erreur et mon canari a échoué. Comment corriger ce problème ?

Brève description

Lorsque vous créez un canari dans un VPC, une fonction AWS Lambda avec une interface réseau Elastic est créée dans les sous-réseaux VPC spécifiés. Ces interfaces réseau Elastic n'ont pas d'adresses IP publiques par défaut, même si elles ont été ajoutées à des sous-réseaux publics. Pour écrire des journaux sur Amazon Simple Storage Service (Amazon S3) et publier des points de données sur CloudWatch, le canari doit avoir accès aux :

  • Point de terminaison Amazon S3
  • Point de terminaison CloudWatch Monitoring

Les messages d'erreur possibles et leurs causes comprennent :

  • S'il n'y a pas d'accès à CloudWatch Monitoring, vous recevez l'erreur « No test result returned. Connection timed out after 60000ms » (Aucun résultat de test retourné. La connexion a expiré après 60 000 ms). Notez que « 60000ms » reflète le délai d'expiration configuré sur le canari. Vous recevez également l'erreur « No artifacts were uploaded » (Aucun artefacts n’a été téléchargé), et il n'y a pas de point de données dans les métriques canari.
  • S'il n'y a pas d'accès à Amazon S3, vous recevez les erreurs « No artifacts were uploaded » et « No test result returned. Connection timed out after 300000ms ». Notez que « 300000ms » reflète le délai d'expiration configuré sur le canari. S'il y a des points de données dans les métriques canari mais que vous recevez ces erreurs, le point de terminaison Amazon S3 n'est pas accessible depuis le sous-réseau de votre canari, mais le point de terminaison CloudWatch Monitoring est accessible.
  • Si une réponse de votre point de terminaison surveillé dépasse la période d'expiration configurée pour la méthode page.goto (telle que « const response = await page.goto (URL, {waitUntil : 'domcontentloaded', timeout : 30000}) ; », où le délai d’expiration est de 30 sec), vous recevez l’erreur « TimeoutError: Navigation Timeout Exceeded:30000ms exceeded » (Erreur d’expiration : le délai d’expiration de la navigation dépasse 30 000 ms).
  • Si un groupe de sécurité, une liste de contrôle d'accès réseau ou une table de routage n'autorise pas l'accès au point de terminaison du canari, vous recevez l'erreur « TimeoutError: Navigation Timeout Exceeded:30000ms exceeded ». 30 000 ms est le délai d'expiration configuré sur la fonction page.goto.

Résolution

Résoudre les erreurs « Navigation timeout » (Expiration de la navigation)

  • Vérifiez que le groupe de sécurité attaché au canari :
    • dispose d'une règle sortante qui autorise les connexions entre le port configuré et l'adresse IP du point de terminaison surveillé ;
    • autorise le trafic sortant vers le port 443 (les points de terminaison Amazon S3 et CloudWatch Monitoring sont accessibles via HTTPS). Si nécessaire, ajoutez une règle sortante en utilisant HTTPS (port TCP 443) pour Type et 0.0.0.0/0 pour Destination.
  • Vérifiez que la liste de contrôle d'accès réseau (ACL) du sous-réseau canari autorise l'accès entrant et sortant.
    • Règle entrante :
      • Autorisez les ports éphémères vers l'adresse source et le port de votre adresse IP de point de terminaison.
      • Autorisez les ports éphémères à 0.0.0.0/0 pour le port 443.
    • Règle sortante :
      • Autorisez l'adresse de destination et le port de votre adresse IP de point de terminaison.
      • Autorisez la destination à 0.0.0.0/0 pour le port 443.
  • Vérifiez que votre point de terminaison répond dans le délai d'expiration configuré :
    • Trouvez le temps de réponse de votre point de terminaison.
time curl http/(s)://[your Endpoint IP/DNS]:Port
    • Dans le code canari, modifiez le délai d'expiration des pulsations pour qu'il soit supérieur au temps de réponse de votre point de terminaison.
const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});

Résoudre les erreurs « No artifacts were uploaded » (Aucun artefacts n'a été téléchargé) ou « No test result returned » (Aucun résultat de test retourné)

Ajoutez le canari dans les sous-réseaux privés avec 0.0.0.0/0 à la passerelle NAT (Network Address Translation) ou à l'instance NAT.

  1. Créez une passerelle NAT.
  2. Mettez à jour la table de routage de sous-réseau privé du canari.

-ou-

Ajoutez le canari dans les sous-réseaux privés avec les points de terminaison VPC pour Amazon S3 et CloudWatch Monitoring.

  1. Procédez comme suit pour créer un point de terminaison de passerelle pour le point de terminaison Amazon S3.
    Remarque : pour « Service name », recherchez « Amazon S3 », puis sélectionnez com.amazonaws.region.s3.
  2. Suivez les mêmes étapes pour créer un point de terminaison d'interface pour le point de terminaison CloudWatch Monitoring. Assurez-vous de cocher la case « Enable DNS name » (Activer le nom DNS).
    Remarque : pour « Service name », recherchez « monitoring » (surveillance), puis sélectionnez com.amazonaws. [region] .monitoring. Assurez-vous de cocher la case « Enable DNS name » (Activer le nom DNS).

Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?