Meu canário do Amazon CloudWatch em uma nuvem privada virtual (VPC) recebe um erro e falha.
Breve descrição
Quando você cria um canário em uma VPC, o Amazon CloudWatch Synthetics cria automaticamente uma função do AWS Lambda com uma interface de rede elástica nas sub-redes de VPC especificadas. Essas interfaces de rede elástica não recebem endereços IP públicos por padrão, mesmo que você as adicione a sub-redes públicas.
Para gravar logs no Amazon Simple Storage Service (Amazon S3) e publicar pontos de dados no CloudWatch, o canário deve ter acesso ao endpoint do Amazon S3 e ao endpoint do CloudWatch Network Monitoring.
Se seu canário não conseguir acessar nenhum desses endpoints, você receberá uma das seguintes mensagens de erro:
"TimeoutError: Navigation Timeout Exceeded:30000ms exceeded"
"No test result returned. Connection timed out after 30000ms and No artifacts were uploaded"
Para testar a conectividade com a internet do seu canário, use o VPC Reachability Analyzer.
Resolução
Resolva erros "Navigation timeout"
Você deve configurar corretamente seu grupo de segurança, lista de controle de acesso à rede (ACL da rede) e a tabela de roteamento para permitir o acesso ao endpoint do canário. O período de tempo limite configurado em seu endpoint monitorado deve ser maior do que o tempo de resposta do endpoint.
Confirme se o grupo de segurança anexado ao canário contém as seguintes propriedades:
- O grupo de segurança deve ter uma regra de saída que permita conexões entre a porta configurada e o endereço IP do endpoint monitorado.
- O grupo de segurança deve permitir o tráfego de saída para a porta 443. Os endpoints do Amazon S3 e do CloudWatch Monitoring podem ser acessados por meio de HTTPS. Se uma regra de saída não existir, adicione uma regra de saída. Ao adicionar uma regra de saída, use HTTPS (porta TCP 443) em Tipo e 0.0.0.0/0 em Destino.
- A ACL da rede na sub-rede do canário deve permitir acesso de entrada e saída.<br id=hardline_break/>
Para acesso de entrada, permita que portas temporárias acessem o endereço de origem e a porta do endereço IP do seu endpoint. Permita que portas temporárias acessem 0.0.0.0/0 na porta 443.<br id=hardline_break/>
Para acesso de saída, permita o acesso ao endereço de Destino e à porta do endereço IP do seu endpoint. Permita que o Destino acesse 0.0.0.0/0 na porta 443.
- Abra o canário e clique em Configurações adicionais para confirmar se seu endpoint responde dentro do período de tempo limite configurado.
Em seguida, execute o comando a seguir para encontrar o tempo de resposta do seu endpoint:
time curl http/(s)://YOUR ENDPOINT IP/DNS:PORT
Observação: substitua YOUR ENDPOINT IP/DNS pelo seu endereço DNS ou IP e PORT pelo número da sua porta TCP.
Por fim, no código do canário, altere o valor do tempo limite de pulsação para exceder o tempo de resposta do seu endpoint:
const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});
Por exemplo, se sua configuração for "const response = await page.goto(URL, {waitUntil: 'domcontentloaded', timeout: 30000});" e seu endpoint leva 35 segundos para responder, altere o valor do tempo limite para exceder 35.000 milissegundos.
Resolva os erros "No artifacts were uploaded" ou "No test result returned"
Se não houver pontos de dados nas métricas do canário, seu canário precisa acessar o endpoint do CloudWatch Network Monitoring. Se houver pontos de dados nas métricas do canário, seu canário precisa acessar o endpoint do Amazon S3. Observe que 30000ms reflete o período de tempo limite que você configurou no canário.
Para permitir que seu canário acesse os endpoints do Amazon S3 e do CloudWatch Monitoring, escolha uma das seguintes abordagens:
- Use um gateway NAT para adicionar o canário às sub-redes privadas e rotear o tráfego da sub-rede privada para a internet.
- Use endpoints da VPC e adicione o canário às sub-redes privadas para permitir a conectividade privada aos serviços da AWS.
Use um gateway NAT
Crie um gateway NAT. Em seguida, atualize a tabela de roteamento de sub-rede privada do canário. Para obter mais informações sobre gateways NAT como destino em uma tabela de rotas, consulte Roteamento para um dispositivo NAT.
Use endpoints da VPC
Crie um endpoint de gateway para o endpoint do Amazon S3.<br id=hardline_break/>
Observação: em Nome do serviço, pesquise Amazon S3 e selecione com.amazonaws.region.s3.
Em seguida, crie endpoint da VPC de interface no endpoint do CloudWatch Network Monitoring. Em Configurações adicionais, selecione Ativar nome DNS.<br id=hardline_break/>
Observação: em Nome do serviço, pesquise por monitoramento e selecione com.amazonaws.[region].monitoring.