Pourquoi l'exécution de mon script Canari CloudWatch a-t-elle cessé ?

Date de la dernière mise à jour : 13/10/2020

J'ai créé un script Canari dans Amazon CloudWatch par le biais d'AWS CloudFormation ou de l'interface de ligne de commande AWS (AWS CLI). L'exécution du script Canari a automatiquement cessé après un certain temps. Comment résoudre ce problème ?

Résolution

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous d'utiliser la version la plus récente d'AWS CLI.

Si votre script Canari CloudWatch cesse de s'exécuter, vérifiez la valeur « DurationInSeconds » que vous avez définie lors de la création de votre script Canari. Cette valeur spécifie la durée (en secondes) pendant laquelle le script Canari continue à s'exécuter de manière régulière, selon le calendrier de la valeur « Expression ». Si vous spécifiez 0, le script Canari continue de s'exécuter jusqu'à ce que vous l'arrêtiez. Si vous omettez ce champ, la valeur par défaut est 0.

Afin de vérifier la valeur du paramètre « DurationInSeconds » de votre script Canari, exécutez l'API GetCanary Amazon CloudWatch Synthetics :

aws synthetics  get-canary --name [canary_name]

Dans la sortie, 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": {}
    }
}

Note : dans la réponse, la valeur « DurationInSeconds » n'est pas égale à 0.

Si la valeur « DurationInSeconds » ne correspond pas à la durée prévue, exécutez l'API UpdateCanary CloudWatch Synthetics :

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

Remarque : pour que le script Canari s'exécute en continu, vous devez écrire l'expression du calendrier et définir la valeur « DurationInSeconds » sur 0.

Afin de vérifier vos modifications, exécutez la commande get-canary CloudWatch Synthetics par le biais de l'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": {}
    }
}

Dans la sortie, confirmez que la valeur « DurationInSeconds » est 0.</p


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?