為什麼我的 CloudWatch Canary 停止執行?

2 分的閱讀內容
0

我使用 AWS CloudFormation 或 AWS Command Line Interface (AWS CLI) 在 Amazon CloudWatch 中建立 Canary。我想知道為什麼 Canary 在一段時間之後自動停止執行。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshoot AWS CLI errors。此外,請確認您使用的是最新的 AWS CLI 版本

如果您的 CloudWatch Canary 停止執行,請檢查您在建立 Canary 時設定的 DurationInSeconds 值。此值會根據 Expression 值中的排程指定 Canary 繼續進行一般執行的時間長度。時間長度以秒為單位。如果您指定為 0,Canary 會繼續執行,直至您將其停止。如果您未設定 DurationInSeconds 值,預設值將設定為 0

若要檢查 Canary 的 DurationInSeconds 參數值,請執行 CloudWatch Synthetics GetCanary API:

aws synthetics  get-canary --name [canary_name]

在下列輸出結果中,檢查 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": {}
    }
}

**注意:**在上述輸出結果中,DurationInSeconds 不等於 0

如果 DurationInSeconds 值與您預期的持續時間不相符,請執行 CloudWatch Synthetics UpdateCanary API:

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

注意:若要讓 Canary 繼續執行,您必須寫入將 DurationInSeconds 設定為 0排程表達式

若要確認您的變更,請使用 AWS CLI 執行 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": {}
    }
}

在輸出結果中,確認 DurationInSeconds 值為 0

AWS 官方
AWS 官方已更新 8 個月前