Eu criei um canário no Amazon CloudWatch usando o AWS CloudFormation ou a AWS Command Line Interface (AWS CLI). Quero saber por que o canário para de funcionar automaticamente após um período de tempo.
Resolução
**Observação:**Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solucionar erros da AWS CLI. Além disso, verifique se você 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 o canário continua fazendo execuções regulares de acordo com o cronograma no valor Expression. O período de tempo é em segundos. Se você especificar 0, o canário continuará funcionando até você parar o canário. Se você não definir o valor DurationInSeconds, o valor padrão será definido como 0.
Para verificar o valor do parâmetro DurationInSeconds do seu canário, execute a API GetCanary do 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 saída anterior, 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.
Para verificar suas alterações, use a AWS CLI para executar o comando get-canary:
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.