Eu criei um canário no Amazon CloudWatch usando o AWS CloudFormation ou a AWS Command Line Interface (AWS CLI). O canário parou de funcionar automaticamente após um período de tempo. Como posso solucionar este problema?
Resolução
Observação: se você receber erros ao executar comandos da AWS CLI, verifique se está usando a versão mais recente da AWS CLI.
Se o canário do Amazon CloudWatch parar de funcionar, verifique o valor "DurationInSeconds" definido durante a criação do canário. Esse valor especifica por quanto tempo (em segundos) o canário continua fazendo execuções regulares de acordo com o cronograma no valor "Expression". Se você especificar 0, o canário continuará fazendo execuções até ser interrompido. Se você omitir esse campo, o padrão de 0 será usado.
Verifique o valor do parâmetro "DurationInSeconds" do canário executando a API GetCanary do Amazon CloudWatch Synthetics:
aws synthetics get-canary --name [canary_name]
Na saída, verifique o valor "DurationInSeconds":
{
"Canary": {
"Id": "a1495b85-1c60-4f29-92c1-540f62fa34e3",
"Name": "canary_name",
"Code": {
"SourceLocationArn": "arn:aws:lambda:eu-west-1:YourAccount:layer:cwsyn-canary_name-a1495b85-1c60-4f29-92c1-540f62fa34e3:1",
"Handler": "CanaryFunction.handler"
},
"ExecutionRoleArn": "arn:aws:iam::YourAccount:role/CanaryRoleName",
"Schedule": {
"Expression": "rate(2 minutes)",
"DurationInSeconds": 360
},
"RunConfig": {
"TimeoutInSeconds": 120
},
"SuccessRetentionPeriodInDays": 31,
"FailureRetentionPeriodInDays": 31,
"Status": {
"State": "READY"
},
"Timeline": {
"Created": 1594481063.96,
"LastModified": 1594481063.96
},
"ArtifactS3Location": "S3_Bucket_for_artifacts",
"EngineArn": "arn:aws:lambda:eu-west-1:YourAccount:function:cwsyn-canary_name-a1495b85-1c60-4f29-92c1-540f62fa34e3:1",
"RuntimeVersion": "syn-1.0",
"Tags": {}
}
}
Observação: na resposta, "DurationInSeconds" não é igual a 0.
Se o valor "DurationInSeconds" não corresponde à duração pretendida, execute a API UpdateCanary do Amazon CloudWatch Synthetics:
aws synthetics update-canary --name canary_cli --schedule Expression="rate(2 minutes)",DurationInSeconds=0
Observação: para que o canário seja executado continuamente, escreva a expressão de agendamento com "DurationInSeconds" definido como 0.
Verifique suas alterações executando o comando get-canary do Amazon CloudWatch Synthetics usando a AWS CLI:
aws synthetics get-canary --name [canary_name]
{
"Canary": {
"Id": "a1495b85-1c60-4f29-92c1-540f62fa34e3",
"Name": "canary_name",
"Code": {
"SourceLocationArn": "arn:aws:lambda:eu-west-1:YourAccount:layer:cwsyn-canary_name-a1495b85-1c60-4f29-92c1-540f62fa34e3:1",
"Handler": "CanaryFunction.handler"
},
"ExecutionRoleArn": "arn:aws:iam::YourAccount:role/CanaryRoleName",
"Schedule": {
"Expression": "rate(2 minutes)",
"DurationInSeconds": 0
},
"RunConfig": {
"TimeoutInSeconds": 120
},
"SuccessRetentionPeriodInDays": 31,
"FailureRetentionPeriodInDays": 31,
"Status": {
"State": "READY"
},
"Timeline": {
"Created": 1594481063.96,
"LastModified": 1594481063.96
},
"ArtifactS3Location": "S3_Bucket_for_artifacts",
"EngineArn": "arn:aws:lambda:eu-west-1:YourAccount:function:cwsyn-canary_name-a1495b85-1c60-4f29-92c1-540f62fa34e3:1",
"RuntimeVersion": "syn-1.0",
"Tags": {}
}
}
Na saída, confirme se o valor "DurationInSeconds" é 0.