Direkt zum Inhalt

Wie behebe ich Fehler bei einem fehlgeschlagenen CloudWatch-Canary in meiner VPC?

Lesedauer: 4 Minute
0

Mein Amazon CloudWatch-Canary in einer Virtual Private Cloud (VPC) erhält einen Fehler und schlägt fehl.

Kurzbeschreibung

Wenn du einen Canary in einer VPC erstellst, erstellt Amazon CloudWatch Synthetics automatisch eine AWS-Lambda-Funktion mit einer Elastic-Network-Schnittstelle in den angegebenen VPC-Subnetzen. Diese Elastic-Network-Schnittstellen erhalten standardmäßig keine öffentlichen IP-Adressen, selbst wenn du sie öffentlichen Subnetzen hinzufügst.

Um Protokolle in Amazon Simple Storage Service (Amazon S3) zu schreiben und Datenpunkte in CloudWatch zu veröffentlichen, muss der Canary Zugriff auf den Amazon S3-Endpunkt und den CloudWatch-Network-Monitoring-Endpunkt haben.

Wenn dein Canary keinen Zugriff auf einen dieser Endpunkte hat, erhältst du eine der folgenden Fehlermeldungen:

„TimeoutError: Navigation Timeout Exceeded:30000ms exceeded“

„No test result returned. Connection timed out after 30000ms and No artifacts were uploaded“

Um die Internetkonnektivität deines Canarys zu testen, verwende VPC Reachability Analyzer.

Lösung

„Navigation timeout“-Fehler beheben

Du musst deine Sicherheitsgruppe, die Netzwerk-Zugriffssteuerungsliste (Netzwerk-ACL) und die Routing-Tabelle korrekt konfigurieren, um den Zugriff auf den Endpunkt des Canarys zuzulassen. Der konfigurierte Timeout-Zeitraum für deinen überwachten Endpunkt muss größer sein als die Antwortzeit des Endpunkts.

Stelle sicher, dass die Sicherheitsgruppe, die dem Canary zugeordnet ist, die folgenden Eigenschaften enthält:

  • Die Sicherheitsgruppe muss eine ausgehende Regel enthalten, die Verbindungen zwischen dem konfigurierten Port und der IP-Adresse des überwachten Endpunkts zulässt.
  • Die Sicherheitsgruppe muss ausgehenden Datenverkehr zu Port 443 zulassen. Amazon S3- und CloudWatch-Monitoring-Endpunkte sind über HTTPS erreichbar. Wenn keine ausgehende Regel existiert, füge eine ausgehende Regel hinzu. Wenn du eine ausgehende Regel hinzufügst, verwende HTTPS (TCP-Port 443) für Typ und 0.0.0.0/0 für Ziel.
  • Die Netzwerk-ACL im Subnetz des Canarys muss eingehenden und ausgehenden Zugriff zulassen.<br id=hardline_break/> Für eingehenden Zugriff erlaube ephemere Ports für den Zugriff auf die Quelladresse und den Port deiner Endpunkt-IP-Adresse. Erlaube ephemeren Ports den Zugriff auf 0.0.0.0/0 für Port 443.<br id=hardline_break/> Für ausgehenden Zugriff erlaube den Zugriff auf die Zieladresse und den Port deiner Endpunkt-IP-Adresse. Erlaube dem Ziel den Zugriff auf 0.0.0.0/0 für Port 443.
  • Öffne den Canary und wähle dann Zusätzliche Konfigurationen aus, um zu bestätigen, dass dein Endpunkt innerhalb des konfigurierten Timeout-Zeitraums antwortet.

Führe dann den folgenden Befehl aus, um die Antwortzeit deines Endpunkts zu ermitteln:

time curl http/(s)://YOUR ENDPOINT IP/DNS:PORT

Hinweis: Ersetze YOUR ENDPOINT IP/DNS durch deine DNS- oder IP-Adresse und PORT durch deine TCP-Portnummer.

Ändere schließlich im Canary-Code den Heartbeat-Timeout-Wert so, dass er die Antwortzeit deines Endpunkts überschreitet:

const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});

Wenn deine Konfiguration beispielsweise „const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});“ lautet und dein Endpunkt 35 Sekunden für die Antwort benötigt, ändere den Timeout-Wert so, dass er 35.000 Millisekunden überschreitet.

„No artifacts were uploaded“- oder „No test result returned“-Fehler beheben

Wenn keine Datenpunkte in den Canary-Metriken vorhanden sind, benötigt dein Canary Zugriff auf den CloudWatch-Network-Monitoring-Endpunkt. Wenn Datenpunkte in den Canary-Metriken vorhanden sind, benötigt dein Canary Zugriff auf den Amazon S3-Endpunkt. Beachte, dass 30.000 ms den Timeout-Zeitraum widerspiegelt, den du auf dem Canary konfiguriert hast.

Um deinem Canary den Zugriff auf Amazon S3- und CloudWatch-Monitoring-Endpunkte zu ermöglichen, wähle einen der folgenden Ansätze aus:

  • Verwende ein NAT-Gateway, um den Canary privaten Subnetzen hinzuzufügen und den Datenverkehr vom privaten Subnetz ins Internet zu routen.
  • Verwende VPC-Endpunkte und füge den Canary privaten Subnetzen hinzu, um private Konnektivität zu AWS-Services zu ermöglichen.

NAT-Gateway verwenden

Erstelle ein NAT-Gateway. Aktualisiere dann die Routing-Tabelle des privaten Subnetzes des Canarys. Weitere Informationen zu NAT-Gateways als Ziel in einer Routing-Tabelle findest du unter Routing an ein NAT-Gerät.

VPC-Endpunkte verwenden

Erstelle einen Gateway-Endpunkt für den Amazon S3-Endpunkt..<br id=hardline_break/> Hinweis: Suche für Service-Name nach Amazon S3 und wähle dann com.amazonaws.region.s3 aus.

Erstelle dann einen Schnittstellen-VPC-Endpunkt für den CloudWatch-Network-Monitoring-Endpunkt. Wähle unter Zusätzliche Einstellungen die Option DNS-Namen aktivieren aus.<br id=hardline_break/> Hinweis: Suche für Service-Name nach Monitoring und wähle dann com.amazonaws.[region].monitoring aus.