Salta al contenuto

Come posso risolvere gli errori che causano l'esito negativo del canary CloudWatch nel mio VPC?

4 minuti di lettura
0

Il mio canary Amazon CloudWatch in un cloud privato virtuale (VPC) riceve un errore e ha esito negativo.

Breve descrizione

Quando crei un canary in un VPC, Amazon CloudWatch Synthetics crea automaticamente una funzione AWS Lambda con un'interfaccia di rete elastica nelle sottoreti VPC specificate. Queste interfacce di rete elastiche non ricevono indirizzi IP pubblici per impostazione predefinita anche se le aggiungi a sottoreti pubbliche.

Per scrivere log in Amazon Simple Storage Service (Amazon S3) e pubblicare punti dati in CloudWatch, il canary deve avere accesso all'endpoint di Amazon S3 e all'endpoint di CloudWatch Network Monitoring.

Se il canary non riesce ad accedere ad alcuno di questi endpoint, ricevi dei seguenti messaggi di errore:

"TimeoutError: Navigation Timeout Exceeded:30000ms exceeded"

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

Per eseguire un test della connettività Internet del canary, utilizza il sistema di analisi della reperibilità VPC.

Risoluzione

Risolvi gli errori "Navigation timeout"

Devi configurare correttamente il gruppo di sicurezza, la lista di controllo degli accessi alla rete (ACL) e la tabella di routing per consentire l'accesso all'endpoint del canary. Il timeout configurato per l'endpoint monitorato deve essere superiore al tempo di risposta dell'endpoint.

Verifica che il gruppo di sicurezza collegato al canary contenga le seguenti proprietà:

  • Il gruppo di sicurezza deve disporre di una regola in uscita che consenta le connessioni tra la porta configurata e l'indirizzo IP dell'endpoint monitorato.
  • Il gruppo di sicurezza deve consentire il traffico in uscita verso la porta 443. Gli endpoint di Amazon S3 e di CloudWatch Network Monitoring sono raggiungibili tramite HTTPS. Se non esiste una regola in uscita, aggiungila. Quando aggiungi una regola in uscita, utilizza HTTPS (porta TCP 443) come Tipo e 0.0.0.0/0 come Destinazione.
  • L'ACL nella sottorete del canary deve consentire l'accesso in entrata e in uscita.<br id=hardline_break/> Per l'accesso in entrata, consenti alle porte effimere di accedere all'indirizzo di origine e alla porta dell'indirizzo IP dell'endpoint. Consenti alle porte effimere di accedere a 0.0.0.0/0 per la porta 443.<br id=hardline_break/> Per l'accesso in uscita, consenti l'accesso all'indirizzo di destinazione e alla porta dell'indirizzo IP dell'endpoint. Consenti alla destinazione l'accesso a **0.0.0.0/0 ** per la porta 443.
  • Apri il canary, quindi scegli Configurazioni aggiuntive per verificare che l'endpoint risponda entro il timeout configurato.

Quindi esegui questo comando per individuare il tempo di risposta dell'endpoint:

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

Nota: sostituisci YOUR ENDPOINT IP/DNS con il tuo DNS o indirizzo IP e PORT con il numero della tua porta TCP.

Infine, nel codice del canary, modifica il valore del timeout heartbeat per superare il tempo di risposta dell'endpoint:

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

Ad esempio, se la configurazione è "const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});" e l'endpoint impiega 35 secondi per rispondere, modifica il valore del timeout per superare i 35.000 millisecondi.

Risolvi gli errori "No artifacts were uploaded" o "No test result returned"

Se non ci sono punti dati nelle metriche del canary, il canary richiede l'accesso all'endpoint di CloudWatch Network Monitoring. Se ci sono punti dati nelle metriche del canary, il canary richiede l'accesso all'endpoint di Amazon S3. Nota: 30.000 ms corrisponde al timeout che hai configurato nel canary.

Per consentire al canary di accedere all'endpoint di Amazon S3 e all'endpoint di CloudWatch Network Monitoring, scegli uno dei seguenti approcci:

  • Utilizza un gateway NAT per aggiungere il canary alle sottoreti private e indirizzare il traffico dalla sottorete privata a Internet.
  • Utilizza endpoint VPC e aggiungi il canary alle sottoreti private per consentire la connettività privata ai servizi AWS.

Utilizza un gateway NAT

Crea un gateway NAT. Quindi aggiorna la tabella di routing della sottorete privata del canary. Per informazioni sui gateway NAT come destinazione in una tabella di routing, consulta Routing to un dispositivo NAT.

Utilizza endpoint VPC

Crea un endpoint gateway per l'endpoint di Amazon S3.<br id=hardline_break/> Nota: per Nome servizio, cerca Amazon S3, quindi seleziona com.amazonaws.region.s3.

Quindi crea un endpoint VPC di interfaccia per l'endpoint di CloudWatch Network Monitoring. Per Impostazioni aggiuntive, seleziona Abilita nome DNS.<br id=hardline_break/> Nota: per Nome servizio, cerca monitoring, quindi seleziona com.amazonaws.[region].monitoring.