Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Implante canários CloudWatch Synthetics usando o Terraform - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Implante canários CloudWatch Synthetics usando o Terraform

Criado por Dhrubajyoti Mukherjee (AWS) e Jean-Francois Landreau (AWS)

Resumo

É importante validar a integridade de um sistema do ponto de vista do cliente e confirmar se os clientes conseguem se conectar. Isso é mais difícil quando os clientes não chamam constantemente o endpoint. A Amazon CloudWatch Synthetics apoia a criação de canários, que podem testar endpoints públicos e privados. Ao usar canários, você pode saber o status de um sistema mesmo que ele não esteja em uso. Esses canários são scripts Node.js Puppeteer ou scripts Python Selenium.

Esse padrão descreve como usar o HashiCorp Terraform para implantar canários que testam endpoints privados. Incorpora um script do Puppeteer que testa se um URL retorna. 200-OK O script do Terraform pode então ser integrado ao script que implanta o endpoint privado. Também é possível modificar a solução para monitorar endpoints públicos.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta ativa da Amazon Web Services (AWS) com uma nuvem privada virtual (VPC) e sub-redes privadas

  • O URL do endpoint que pode ser acessado a partir das sub-redes privadas

  • Terraform instalado no ambiente de implantação

Limitações

A solução atual funciona para as seguintes versões de tempo de execução do CloudWatch Synthetics:

  • syn-nodejs-puppeteer-3,4

  • syn-nodejs-puppeteer-3,5

  • syn-nodejs-puppeteer-3,6

  • syn-nodejs-puppeteer-3,7

À medida que novas versões de runtime forem lançadas, talvez você precise atualizar a solução atual. Você também precisará modificar a solução para acompanhar as atualizações de segurança.

Versões do produto

  • Terraform 1.3.0

Arquitetura

O Amazon CloudWatch Synthetics é baseado no CloudWatch Lambda e no Amazon Simple Storage Service (Amazon S3). A Amazon CloudWatch oferece um assistente para criar os canários e um painel que exibe o status das corridas de canários. A função do Lambda executa o script. O Amazon S3 armazena os logs e as capturas de tela das execuções canárias.

Esse padrão simula um endpoint privado por meio de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) implantada nas sub-redes de destino. A função do Lambda requer interfaces de rede elásticas na VPC em que o endpoint privado é implantado.

A descrição segue o diagrama.

O diagrama mostra o seguinte:

  1. O canário Synthetics inicializa a função do Lambda do canário.

  2. A função do Lambda canário se conecta à interface de rede elástica.

  3. A função do Lambda canário monitora o status do endpoint.

  4. O canário Synthetics envia os dados de execução para o bucket e as métricas do S3. CloudWatch

  5. Um CloudWatch alarme é iniciado com base nas métricas.

  6. O CloudWatch alarme inicia o tópico Amazon Simple Notification Service (Amazon SNS).

Ferramentas

Serviços da AWS

  • CloudWatchA Amazon ajuda você a monitorar as métricas dos seus recursos da AWS e dos aplicativos que você executa na AWS em tempo real.

  • O AWS Lambda é um serviço de computação que ajuda você a executar código sem exigir provisionamento ou gerenciamento de servidores. Ele executa o código somente quando necessário e dimensiona automaticamente, assim, você paga apenas pelo tempo de computação usado.

  • O Amazon Simple Notification Service (Amazon SNS) ajuda você a coordenar e gerenciar a troca de mensagens entre publicadores e clientes, incluindo servidores web e endereços de e-mail.

  • O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos baseado na nuvem que ajuda você a armazenar, proteger e recuperar qualquer quantidade de dados.

  • A Amazon Virtual Private Cloud (Amazon VPC) ajuda a iniciar recursos da AWS em uma rede virtual definida por você. Essa rede virtual é semelhante a uma rede tradicional que você operaria no próprio datacenter, com os benefícios de usar a infraestrutura escalável da AWS. Esse padrão usa endpoints da VPC e interfaces de rede elástica.

Outros serviços

  • HashiCorp O Terraform é uma ferramenta de infraestrutura como código (IaC) de código aberto que ajuda você a usar o código para provisionar e gerenciar a infraestrutura e os recursos da nuvem. Esse padrão usa o Terraform para implantar a infraestrutura.

  • O Puppeteer é uma biblioteca Node.js. O tempo de execução do CloudWatch Synthetics usa a estrutura do Puppeteer.

Código

A solução está disponível no watch-synthetics-canary-terraform repositório na GitHub nuvem. Para obter mais informações, consulte a seção Informações adicionais.

Épicos

TarefaDescriçãoHabilidades necessárias

Reúna os requisitos para monitorar o URL privado.

Reúna a definição completa do URL: domínio, parâmetros e cabeçalhos. Para se comunicar de forma privada com o Amazon S3 e a CloudWatch Amazon, use endpoints VPC. Observe como a VPC e as sub-redes são acessíveis ao endpoint. Considere a frequência das corridas de canários.

Arquiteto de nuvem, administrador de rede

Modificar a solução existente para monitorar o URL privado.

Modificar o arquivo terraform.tfvars

  • name: o nome do seu canário.

  • runtime_version: a versão de runtime do canário. Recomendamos usar syn-nodejs-puppeteer -3.7.

  • take_screenshot: se uma captura de tela deve ser feita.

  • api_hostname: o nome do host do endpoint que é monitorado.

  • api_path: o caminho do endpoint que é monitorado.

  • vpc_id: o ID da VPC usado pela função canary do Lambda.

  • subnet_ids— A sub-rede IDs usada pela função canary Lambda.

  • frequency: a frequência de corrida do canário em minutos.

  • alert_sns_topic— O tópico do SNS para o qual a notificação CloudWatch de alarme é enviada.

Arquiteto de nuvem

Implanta e opera a solução.

Para implantar a solução, faça o seguinte:

  1. No diretório cloudwatch-synthetics-canary-terraform em seu ambiente de desenvolvimento, inicialize o Terraform.

    terraform init
  2. Planeje e analise as mudanças.

    terraform plan
  3. Implante a solução.

    terraform apply
Arquiteto de nuvem, DevOps engenheiro

Implemente a solução para monitorar um URL privado

TarefaDescriçãoHabilidades necessárias

Reúna os requisitos para monitorar o URL privado.

Reúna a definição completa do URL: domínio, parâmetros e cabeçalhos. Para se comunicar de forma privada com o Amazon S3 e a CloudWatch Amazon, use endpoints VPC. Observe como a VPC e as sub-redes são acessíveis ao endpoint. Considere a frequência das corridas de canários.

Arquiteto de nuvem, administrador de rede

Modificar a solução existente para monitorar o URL privado.

Modificar o arquivo terraform.tfvars

  • name: o nome do seu canário.

  • runtime_version: a versão de runtime do canário. Recomendamos usar syn-nodejs-puppeteer -3.7.

  • take_screenshot: se uma captura de tela deve ser feita.

  • api_hostname: o nome do host do endpoint que é monitorado.

  • api_path: o caminho do endpoint que é monitorado.

  • vpc_id: o ID da VPC usado pela função canary do Lambda.

  • subnet_ids— A sub-rede IDs usada pela função canary Lambda.

  • frequency: a frequência de corrida do canário em minutos.

  • alert_sns_topic— O tópico do SNS para o qual a notificação CloudWatch de alarme é enviada.

Arquiteto de nuvem

Implanta e opera a solução.

Para implantar a solução, faça o seguinte:

  1. No diretório cloudwatch-synthetics-canary-terraform em seu ambiente de desenvolvimento, inicialize o Terraform.

    terraform init
  2. Planeje e analise as mudanças.

    terraform plan
  3. Implante a solução.

    terraform apply
Arquiteto de nuvem, DevOps engenheiro

Solução de problemas

ProblemaSolução

A exclusão dos recursos provisionados é interrompida.

Exclua manualmente a função do Lambda canário, a interface de rede elástica correspondente e o grupo de segurança, nessa ordem.

Recursos relacionados

Mais informações

Artefatos do repositório

Os artefatos do repositório estão na seguinte estrutura.

. ├── README.md ├── main.tf ├── modules │   ├── canary │   └── canary-infra ├── terraform.tfvars ├── tf.plan └── variable.tf

O arquivo main.tf contém o módulo principal e implanta dois submódulos:

  • canary-infra implanta a infraestrutura necessária para as canárias.

  • canary implanta os canários.

Os parâmetros de entrada da solução estão localizados no arquivo terraform.tfvars. Você pode usar o exemplo de código a seguir para criar um canário.

module "canary" { source = "./modules/canary" name = var.name runtime_version = var.runtime_version take_screenshot = var.take_screenshot api_hostname = var.api_hostname api_path = var.api_path reports-bucket = module.canary_infra.reports-bucket role = module.canary_infra.role security_group_id = module.canary_infra.security_group_id subnet_ids = var.subnet_ids frequency = var.frequency alert_sns_topic = var.alert_sns_topic }

O arquivo .var correspondente segue.

name = "my-canary" runtime_version = "syn-nodejs-puppeteer-3.7" take_screenshot = false api_hostname = "mydomain.internal" api_path = "/path?param=value" vpc_id = "vpc_id" subnet_ids = ["subnet_id1"] frequency = 5 alert_sns_topic = "arn:aws:sns:eu-central-1:111111111111:yyyyy"

Como limpar a solução

Se você estiver testando em um ambiente de desenvolvimento, poderá limpar a solução para evitar custos acumulados.

  1. No Console de Gerenciamento da AWS, navegue até o console do Amazon S3. Esvazie o bucket do Amazon S3 que a solução criou. Certifique-se de fazer um backup dos dados, se necessário.

  2. No seu ambiente de desenvolvimento, a partir do diretório cloudwatch-synthetics-canary-terraform, execute o comando destroy.

    terraform destroy
PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.