Perché la mia canary CloudWatch ha smesso di funzionare?

2 minuti di lettura
0

Ho creato una canary in Amazon CloudWatch utilizzando AWS CloudFormation o l'interfaccia della linea di comando di AWS (AWS CLI). Voglio sapere perché la canary smette automaticamente di funzionare dopo un certo periodo di tempo.

Risoluzione

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Se CloudWatch Canary smette di funzionare, controlla il valore DurationInSeconds che hai impostato quando hai creato la tua canary. Questo valore specifica il periodo di tempo (in secondi) in cui la canary continua a eseguire regolarmente secondo la pianificazione nel valore Expression. La durata è espressa in secondi. Se si specifica 0, la canary continua a funzionare finché non si ferma la canary. Se non imposti il valore DurationInSeconds, il valore predefinito è impostato su 0.

Per controllare il valore del parametro DurationInSeconds della canary, esegui l'API GetCanary di CloudWatch Synthetics:

aws synthetics  get-canary --name [canary_name]

Nell'output, controlla il valore 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": {}
    }
}

Nota: Nell'output precedente, DurationInSeconds non è uguale a 0.

Se il valore DurationInSeconds non corrisponde alla durata desiderata, esegui l'API UpdateCanary di CloudWatch Synthetics:

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

Nota: affinché la canary funzioni continuamente, è necessario scrivere l'espressione di pianificazione con DurationInSeconds impostato su 0.

Per verificare le modifiche, utilizza l'interfaccia della linea di comando AWS per eseguire il 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": {}
    }
}

Nell'output, conferma che il valore DurationInSeconds sia 0.