Pour quelles raisons mon script canary CloudWatch cesse-t-il de fonctionner ?

Lecture de 3 minute(s)
0

J’ai créé un script canary dans Amazon CloudWatch avec AWS CloudFormation ou l’interface de la ligne de commande AWS (AWS CLI). Je souhaite savoir pour quelles raisons le script canary cesse automatiquement de fonctionner après un certain temps.

Résolution

Remarque : si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez la version la plus récente d’AWS CLI.

Si votre script canary CloudWatch cesse de fonctionner, vérifiez la valeur du paramètre DurationInSeconds que vous avez définie lors de la création du script canary. Cette valeur indique la durée pendant laquelle le script canary continue de s’exécuter conformément au programme indiqué dans la valeur Expression. La durée est exprimée en secondes. Si vous spécifiez 0, le script canary continue de s’exécuter jusqu’à ce que vous l’arrêtiez. Si vous ne définissez pas de valeur DurationInSeconds, la valeur par défaut 0 est utilisée.

Pour vérifier la valeur du paramètre DurationInSeconds du script canary, exécutez l’API CloudWatch Synthetics GetCanary :

aws synthetics  get-canary --name [canary_name]

Dans la sortie suivante, vérifiez la valeur 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": {}
    }
}

Remarque : dans la sortie précédente, la valeur DurationInSeconds n’est pas égale à 0.

Si la valeur DurationInSeconds ne correspond pas à la durée souhaitée, exécutez l’API CloudWatch Synthetics UpdateCanary suivante :

aws synthetics  update-canary --name canary_cli --schedule Expression="rate(2 minutes)",DurationInSeconds=0

Remarque : pour que le script canary continue de s’exécuter, vous devez écrire l’expression de programmation en définissant DurationInSeconds sur 0.

Pour vérifier les modifications, utilisez l’interface AWS CLI pour exécuter la commande 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": {}
    }
}

Dans la sortie, vérifiez que la valeur DurationInSeconds est égale à 0.