Mon canary Amazon CloudWatch dans un cloud privé virtuel (VPC) reçoit une erreur et échoue.
Brève description
Lorsque vous créez un canary dans un VPC, Amazon CloudWatch Synthetics crée automatiquement une fonction AWS Lambda avec une interface réseau Elastic dans les sous-réseaux VPC spécifiés. Ces interfaces réseau Elastic ne reçoivent pas d'adresses IP publiques par défaut, même si vous les ajoutez à 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 canary doit avoir accès au point de terminaison Amazon S3 et au point de terminaison CloudWatch Network Monitoring.
Si votre canary ne parvient pas à accéder à l'un de ces points de terminaison, l'un des messages d'erreur suivants s'affiche :
« TimeoutError : Navigation Timeout Exceeded:30000ms exceeded"
"No test result returned. Connection timed out after 30000ms and No artifacts were uploaded »
Pour tester la connectivité Internet de votre canary, utilisez l’Analyseur d'accessibilité VPC.
Résolution
Corriger des erreurs de type « Navigation timeout »
Vous devez configurer correctement votre groupe de sécurité, votre liste de contrôle d'accès au réseau (ACL réseau) et votre table de routage pour autoriser l'accès au point de terminaison du canary. Le délai d'expiration configuré pour votre point de terminaison surveillé doit être supérieur au temps de réponse du point de terminaison.
Vérifiez que le groupe de sécurité associé au canary contient les propriétés suivantes :
- Le groupe de sécurité doit disposer d'une règle sortante qui autorise les connexions entre le port configuré et l'adresse IP du point de terminaison surveillé.
- Le groupe de sécurité doit autoriser le trafic sortant vers le port 443. Les points de terminaison Amazon S3 et CloudWatch Monitoring sont accessibles via HTTPS. S'il n'existe pas de règle sortante, ajoutez-en une. Lorsque vous ajoutez une règle sortante, utilisez HTTPS (port TCP 443) pour Type et 0.0.0.0/0 pour Destination.
- L'ACL réseau du sous-réseau canary doit autoriser les accès entrants et sortants.<br id=hardline_break/>
Pour l’accès entrant, autorisez les ports éphémères à accéder à l'adresse source et au port de l'adresse IP de votre point de terminaison. Autorisez également les ports éphémères à accéder à 0.0.0.0/0 pour le port 443.<br id=hardline_break/>
Pour l’accès sortant, autorisez l'accès à l'adresse de destination et au port de l'adresse IP de votre point de terminaison. Autorisez également l'accès de destination à 0.0.0.0/0 pour le port 443.
- Ouvrez le canary, puis choisissez Configurations supplémentaires pour vous assurer que votre point de terminaison répond dans le délai d'expiration configuré.
Puis, exécutez la commande suivante pour connaître le temps de réponse de votre point de terminaison :
time curl http/(s)://YOUR ENDPOINT IP/DNS:PORT
Remarque : remplacez YOUR ENDPOINT IP/DNS par votre DNS ou adresse IP et PORT par votre numéro de port TCP.
Enfin, dans le code canary, modifiez la valeur du délai de pulsation pour dépasser le temps de réponse de votre point de terminaison :
const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});
Supposons, par exemple, que votre configuration soit « const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000}) ; » et votre point de terminaison met 35 secondes à répondre, puis modifiez la valeur du délai d'attente pour qu'elle dépasse 35 000 millisecondes.
Correction des erreurs « No artifacts were uploaded » ou « No test result returned »
Si les métriques du canary ne présentent aucun point de données, votre canary doit accéder au point de terminaison CloudWatch Network Monitoring. Si les métriques du canary présentent des points de données, alors votre canary doit accéder au point de terminaison Amazon S3. Notez que la durée de 30 000 ms correspond au délai d'attente configuré sur le canary.
Pour autoriser votre canary à accéder aux points de terminaison Amazon S3 et CloudWatch Monitoring, choisissez l'une des approches suivantes :
- Utilisez une passerelle NAT pour ajouter le canary à des sous-réseaux privés et acheminer le trafic du sous-réseau privé vers Internet.
- Utilisez les points de terminaison de VPC et ajoutez le canary aux sous-réseaux privés pour permettre une connectivité privée aux services AWS.
Utiliser une passerelle NAT
Créez une passerelle NAT. Puis, mettez à jour la table de routage du sous-réseau privé du canary. Pour en savoir plus sur l'utilisation de passerelles NAT comme destination dans une table de routage, consultez la section Routage vers un périphérique NAT.
Utiliser des points de terminaison de VPC
Créez un point de terminaison de passerelle pour le point de terminaison Amazon S3.<br id=hardline_break/>
Remarque : dans Nom du service, recherchez Amazon S3, puis sélectionnez com.amazonaws.region.s3.
Puis, créez un point de terminaison de VPC d'interface pour le point de terminaison CloudWatch Network Monitoring. Dans Paramètres supplémentaires, sélectionnez Activer le nom DNS.<br id=hardline_break/>
Remarque : dans Nom du service, recherchez Surveillance, puis sélectionnez com.amazonaws.[region].monitoring.