Como testar um canário localmente
Esta seção explica como modificar, testar e depurar os canários do CloudWatch Synthetics diretamente no editor de código do Microsoft Visual Studio ou no editor de código JetBrains IDE. O ambiente de depuração local usa um contêiner do Serverless Application Model (SAM) para simular uma função do Lambda com a finalidade de emular o comportamento de um canário do Synthetics.
nota
É impraticável executar canários de depuração local que dependem de monitoramento visual. O monitoramento visual depende da obtenção de capturas de tela básicas durante uma execução inicial e, em seguida, da comparação dessas capturas de tela com as capturas de tela de execuções subsequentes. Em um ambiente de desenvolvimento local, as execuções não são armazenadas ou rastreadas, e cada iteração corresponde a uma execução independente e autônoma. A ausência de um histórico de execução para um canário torna impraticável a depuração de canários que dependem de monitoramento visual.
Pré-requisitos
Escolha ou crie um bucket do Amazon S3 que deseja usar para armazenar artefatos de execuções de testes de canários locais, como arquivos em HAR e capturas de tela. Isso requer que você seja provisionado com o IAM. Se você ignorar a configuração de buckets do Amazon S3, ainda poderá testar o canário localmente, mas receberá uma mensagem de erro relacionada ao bucket ausente e não obterá acesso aos artefatos do canário.
Se você usar um bucket do Amazon S3, recomendamos definir o ciclo de vida do bucket para excluir os objetos após alguns dias com a finalidade de economizar custos. Para obter mais informações, consulte Gerenciar seu ciclo de vida de armazenamento.
Configure um perfil padrão da AWS para a conta da AWS. Para obter mais informações, consulte Configuration and credential file settings.
Defina a região padrão da AWS do ambiente de depuração como sua região preferencial, por exemplo,
us-west-2
.Instale a CLI do AWS SAM. Para obter mais informações, consulte Instalar a AWS SAM CLI.
Instale o Visual Studio Code Editor ou o JetBrains IDE. Para obter mais informações, consulte Visual Studio Code
ou JetBrains IDE Instale o Docker para trabalhar com a CLI do AWS SAM. Certifique-se de iniciar o daemon do Docker. Para obter mais informações, consulte Installing Docker to use with the AWS SAM CLI.
Como alternativa, é possível instalar outro software de gerenciamento de contêiner, como o Rancher, desde que essa ferramenta use o runtime do Docker.
Instale uma extensão do kit de ferramentas da AWS para seu editor preferencial. Para obter mais informações, consulte Installing the AWS Toolkit for Visual Studio Code ou Instalar o AWS Toolkit for JetBrains.
Tópicos
Configuração do ambiente de teste e de depuração
Primeiro, clone o repositório do Github fornecido pela AWS ao digitar o comando apresentado a seguir. O repositório contém amostras de código para canários em Node.js e canários em Python.
git clone https://github.com/aws-samples/synthetics-canary-local-debugging-sample.git
Em seguida, siga um dos procedimentos apresentados a seguir de acordo com a linguagem de programação dos seus canários.
Para canários em Node.js
Acesse o diretório de origem do canário em Node.js ao inserir o comando apresentado a seguir.
cd synthetics-canary-local-debugging-sample/nodejs-canary/src
Insira o comando apresentado a seguir para instalar as dependências do canário.
npm install
Para canários em Python
Acesse o diretório de origem do canário em Python ao inserir o comando apresentado a seguir.
cd synthetics-canary-local-debugging-sample/python-canary/src
Insira o comando apresentado a seguir para instalar as dependências do canário.
pip3 install -r requirements.txt -t .
Usar o Visual Studio Code IDE
O arquivo de configuração de inicialização do Visual Studio está localizado em .vscode/launch.json
. O arquivo contém configurações para permitir que o arquivo de modelo seja descoberto pelo Visual
Studio Code. Ele define uma carga útil do Lambda com os parâmetros obrigatórios para invocar o canário com êxito. Esta é a configuração de inicialização para um canário em Node.js:
{ ... ... "lambda": { "payload": { "json": { // Canary name. Provide any name you like. "canaryName": "LocalSyntheticsCanary", // Canary artifact location "artifactS3Location": { "s3Bucket": "cw-syn-results-123456789012-us-west-2", "s3Key": "local-run-artifacts", }, // Your canary handler name "customerCanaryHandlerName": "heartbeat-canary.handler" } }, // Environment variables to pass to the canary code "environmentVariables": {} } } ] }
Como opção, também é possível fornecer os seguintes campos na carga útil em JSON:
Valores válidos para
s3EncryptionMode
:SSE_S3
|SSE_KMS
Valor válido para
s3KmsKeyArn
:ARN da chave do KMS
Valores válidos para
activeTracing
:true
|false
Valor válido para
canaryRunId
:UUID
Este parâmetro é obrigatório se o rastreamento ativo estiver habilitado.
Para realizar a depuração do canário no Visual Studio, adicione pontos de interrupções no código do canário nos locais em que você deseja pausar a execução. Para adicionar um ponto de interrupção, escolha a margem do editor e acesse o modo Executar e Depurar no editor. Execute o canário ao clicar no botão de reprodução. Quando o canário for executado, os logs serão acompanhados no console de depuração, fornecendo insights em tempo real sobre o comportamento do canário. Se você adicionou pontos de interrupções, a execução do canário será pausada em cada ponto de interrupção, permitindo a análise do código e a inspeção dos valores de variáveis, dos métodos de instância, dos atributos de objetos e da pilha de chamadas de funções.
Não há custos incorridos para executar e depurar os canários localmente, exceto para os artefatos armazenados no bucket do Amazon S3 e para as métricas do CloudWatch geradas por cada execução local.

Usar o JetBrains IDE
Após instalar a extensão AWS Toolkit for JetBrains, certifique-se de que o plug-in do Node.js e o depurador do JavaScript estejam habilitados para execução, se você estiver realizando a depuração de um canário em Node.js. Depois, siga as etapas abaixo.
Depuração de um canário usando JetBrains IDE
No painel de navegação esquerdo do JetBrains IDE, escolha Lambda e, em seguida, selecione o modelo de configuração local.
Insira um nome para a configuração de execução, como
LocalSyntheticsCanary
.Escolha From template, selecione o navegador de arquivos no campo de modelo e, em seguida, faça a seleção do arquivo template.yml do projeto, no diretório nodejs ou no diretório python.
Na seção Input, insira a carga útil do canário, conforme mostrado na tela apresentada a seguir.
{ "canaryName": "LocalSyntheticsCanary", "artifactS3Location": { "s3Bucket": "cw-syn-results-123456789012-us-west-2", "s3Key": "local-run-artifacts" }, "customerCanaryHandlerName": "heartbeat-canary.handler" }
Além disso, é possível definir outras variáveis de ambiente na carga útil em JSON, conforme listado em Usar o Visual Studio Code IDE.

Execução de um canário localmente com a CLI do SAM
Use um dos procedimentos apresentados a seguir para executar o canário localmente usando a CLI do Serverless Application Model (SAM). Certifique-se de especificar seu próprio nome de bucket do Amazon S3 para s3Bucket
em event.json
.
Para usar a CLI do SAM para executar um canário em Node.js
Acesse o diretório de origem ao inserir o comando apresentado a seguir.
cd synthetics-canary-local-debugging-sample/nodejs-canary
Insira os comandos a seguir:
sam build sam local invoke -e ../event.json
Para usar a CLI do SAM para executar um canário em Python
Acesse o diretório de origem ao inserir o comando apresentado a seguir.
cd synthetics-canary-local-debugging-sample/python-canary
Insira os comandos a seguir:
sam build sam local invoke -e ../event.json
Integração do ambiente de teste local a um pacote de canário existente
É possível integrar a depuração do canário local ao seu pacote do canário existente ao copiar três arquivos:
Copie o arquivo
template.yml
na raiz do pacote do canário. Certifique-se de modificar o caminho paraCodeUri
, de modo que o direcionamento seja para o diretório em que o código do canário está localizado.Se você estiver trabalhando com um canário em Node.js, copie o arquivo
cw-synthetics.js
para o diretório de origem do canário. Se você estiver trabalhando com um canário em Python, copiecw-synthetics.py
para o diretório de origem do canário.Copie o arquivo de configuração de inicialização .
vscode/launch.json
para a raiz do pacote. Certifique-se de colocá-lo dentro do diretório.vscode
. Caso o arquivo ainda não exista, crie-o.
Alteração do runtime do CloudWatch Synthetics
Como parte da depuração, é possível tentar executar um canário com um runtime diferente do CloudWatch Synthetics, em vez de usar o runtime mais recente. Para fazer isso, localize o runtime que deseja usar em uma das tabelas apresentadas a seguir. Certifique-se de selecionar o runtime para a região correta. Em seguida, cole o ARN desse runtime no local apropriado do arquivo template.yml
e execute o canário.
Tempos de execução Node.js
ARNs para syn-nodejs-puppeteer-7.0
A tabela apresentada a seguir lista os ARNs a serem usados para a versão syn-nodejs-puppeteer-7.0
do runtime do CloudWatch Synthetics em cada região da AWS na qual ele está disponível.
Região | ARN |
---|---|
Leste dos EUA (Norte da Virgínia) |
|
Leste dos EUA (Ohio) |
|
Oeste dos EUA (N. da Califórnia) |
|
Oeste dos EUA (Oregon) |
|
África (Cidade do Cabo) |
|
Ásia-Pacífico (Hong Kong) |
|
Ásia-Pacífico (Hyderabad) |
|
Ásia-Pacífico (Jacarta) |
|
Ásia-Pacífico (Melbourne) |
|
Ásia-Pacífico (Mumbai) |
|
Ásia-Pacífico (Osaka) |
|
Ásia-Pacífico (Seul) |
|
Ásia-Pacífico (Singapura) |
|
Ásia-Pacífico (Sydney) |
|
Ásia-Pacífico (Tóquio) |
|
Canadá (Central) |
|
Oeste do Canadá (Calgary) |
|
China (Pequim) |
|
China (Ningxia); |
|
Europa (Frankfurt) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milão) |
|
Europe (Paris) |
|
Europa (Espanha) |
|
Europa (Estocolmo) |
|
Europa (Zurique) |
|
Israel (Tel Aviv) |
|
Oriente Médio (Barém) |
|
Oriente Médio (Emirados Árabes Unidos) |
|
South America (São Paulo) |
|
AWS GovCloud (Leste dos EUA) |
|
AWS GovCloud (Oeste dos EUA) |
|
ARNs para syn-nodejs-puppeteer-6.2
A tabela apresentada a seguir lista os ARNs a serem usados para a versão syn-nodejs-puppeteer-6.2
do runtime do CloudWatch Synthetics em cada região da AWS na qual ele está disponível.
Região | ARN |
---|---|
Leste dos EUA (Norte da Virgínia) |
|
Leste dos EUA (Ohio) |
|
Oeste dos EUA (N. da Califórnia) |
|
Oeste dos EUA (Oregon) |
|
África (Cidade do Cabo) |
|
Ásia-Pacífico (Hong Kong) |
|
Ásia-Pacífico (Hyderabad) |
|
Ásia-Pacífico (Jacarta) |
|
Ásia-Pacífico (Melbourne) |
|
Ásia-Pacífico (Mumbai) |
|
Ásia-Pacífico (Osaka) |
|
Ásia-Pacífico (Seul) |
|
Ásia-Pacífico (Singapura) |
|
Ásia-Pacífico (Sydney) |
|
Ásia-Pacífico (Tóquio) |
|
Canadá (Central) |
|
Oeste do Canadá (Calgary) |
|
China (Pequim) |
|
China (Ningxia); |
|
Europa (Frankfurt) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milão) |
|
Europe (Paris) |
|
Europa (Espanha) |
|
Europa (Estocolmo) |
|
Europa (Zurique) |
|
Israel (Tel Aviv) |
|
Oriente Médio (Barém) |
|
Oriente Médio (Emirados Árabes Unidos) |
|
South America (São Paulo) |
|
AWS GovCloud (Leste dos EUA) |
|
AWS GovCloud (Oeste dos EUA) |
|
ARNs para syn-nodejs-puppeteer-5.2
A tabela apresentada a seguir lista os ARNs a serem usados para a versão syn-nodejs-puppeteer-5.2
do runtime do CloudWatch Synthetics em cada região da AWS na qual ele está disponível.
Região | ARN |
---|---|
Leste dos EUA (Norte da Virgínia) |
|
Leste dos EUA (Ohio) |
|
Oeste dos EUA (N. da Califórnia) |
|
Oeste dos EUA (Oregon) |
|
África (Cidade do Cabo) |
|
Ásia-Pacífico (Hong Kong) |
|
Ásia-Pacífico (Hyderabad) |
|
Ásia-Pacífico (Jacarta) |
|
Ásia-Pacífico (Melbourne) |
|
Ásia-Pacífico (Mumbai) |
|
Ásia-Pacífico (Osaka) |
|
Ásia-Pacífico (Seul) |
|
Ásia-Pacífico (Singapura) |
|
Ásia-Pacífico (Sydney) |
|
Ásia-Pacífico (Tóquio) |
|
Canadá (Central) |
|
Oeste do Canadá (Calgary) |
|
China (Pequim) |
|
China (Ningxia); |
|
Europa (Frankfurt) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milão) |
|
Europe (Paris) |
|
Europa (Espanha) |
|
Europa (Estocolmo) |
|
Europa (Zurique) |
|
Israel (Tel Aviv) |
|
Oriente Médio (Barém) |
|
Oriente Médio (Emirados Árabes Unidos) |
|
South America (São Paulo) |
|
AWS GovCloud (Leste dos EUA) |
|
AWS GovCloud (Oeste dos EUA) |
|
Tempos de execução do Python
ARNs para syn-python-selenium-3.0
A tabela apresentada a seguir lista os ARNs a serem usados para a versão syn-python-selenium-3.0
do runtime do CloudWatch Synthetics em cada região da AWS na qual ele está disponível.
Região | ARN |
---|---|
Leste dos EUA (Norte da Virgínia) |
|
Leste dos EUA (Ohio) |
|
Oeste dos EUA (N. da Califórnia) |
|
Oeste dos EUA (Oregon) |
|
África (Cidade do Cabo) |
|
Ásia-Pacífico (Hong Kong) |
|
Ásia-Pacífico (Hyderabad) |
|
Ásia-Pacífico (Jacarta) |
|
Ásia-Pacífico (Melbourne) |
|
Ásia-Pacífico (Mumbai) |
|
Ásia-Pacífico (Osaka) |
|
Ásia-Pacífico (Seul) |
|
Ásia-Pacífico (Singapura) |
|
Ásia-Pacífico (Sydney) |
|
Ásia-Pacífico (Tóquio) |
|
Canadá (Central) |
|
Oeste do Canadá (Calgary) |
|
China (Pequim) |
|
China (Ningxia); |
|
Europa (Frankfurt) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milão) |
|
Europe (Paris) |
|
Europa (Espanha) |
|
Europa (Estocolmo) |
|
Europa (Zurique) |
|
Israel (Tel Aviv) |
|
Oriente Médio (Barém) |
|
Oriente Médio (Emirados Árabes Unidos) |
|
South America (São Paulo) |
|
AWS GovCloud (Leste dos EUA) |
|
AWS GovCloud (Oeste dos EUA) |
|
ARNs para syn-python-selenium-2.1
A tabela apresentada a seguir lista os ARNs a serem usados para a versão syn-python-selenium-2.1
do runtime do CloudWatch Synthetics em cada região da AWS na qual ele está disponível.
Região | ARN |
---|---|
Leste dos EUA (Norte da Virgínia) |
|
Leste dos EUA (Ohio) |
|
Oeste dos EUA (N. da Califórnia) |
|
Oeste dos EUA (Oregon) |
|
África (Cidade do Cabo) |
|
Ásia-Pacífico (Hong Kong) |
|
Ásia-Pacífico (Hyderabad) |
|
Ásia-Pacífico (Jacarta) |
|
Ásia-Pacífico (Melbourne) |
|
Ásia-Pacífico (Mumbai) |
|
Ásia-Pacífico (Osaka) |
|
Ásia-Pacífico (Seul) |
|
Ásia-Pacífico (Singapura) |
|
Ásia-Pacífico (Sydney) |
|
Ásia-Pacífico (Tóquio) |
|
Canadá (Central) |
|
Oeste do Canadá (Calgary) |
|
China (Pequim) |
|
China (Ningxia); |
|
Europa (Frankfurt) |
|
Europa (Irlanda) |
|
Europa (Londres) |
|
Europa (Milão) |
|
Europe (Paris) |
|
Europa (Espanha) |
|
Europa (Estocolmo) |
|
Europa (Zurique) |
|
Israel (Tel Aviv) |
|
Oriente Médio (Barém) |
|
Oriente Médio (Emirados Árabes Unidos) |
|
South America (São Paulo) |
|
AWS GovCloud (Leste dos EUA) |
|
AWS GovCloud (Oeste dos EUA) |
|
Erros comuns
Erro: a execução local de projetos do AWS SAM requer o Docker. Você o instalou e conferiu que ele está funcionando?
Certifique-se de iniciar o Docker em seu computador.
Falha ao invocar o SAM localmente: ocorreu um erro (ExpiredTokenException) ao chamar a operação GetLayerVersion: o token de segurança incluso na solicitação expirou
Certifique-se de que o perfil padrão da AWS esteja configurado.
Erros mais comuns
Para obter mais informações sobre erros comuns relacionados ao SAM, consulte AWS SAM CLI troubleshooting.