为什么我的 CloudWatch 金丝雀停止运行了?

2 分钟阅读
0

我使用 AWS CloudFormation 或 AWS 命令行界面(AWS CLI)在 Amazon CloudWatch 中创建了一个金丝雀。我想知道为什么这个金丝雀在一段时间后会自动停止运行。

解决方案

**注意:**如果在运行 AWS 命令行界面(AWS CLI)命令时收到错误,请参阅 Troubleshoot AWS CLI errors。此外,请确保您使用的是最新版本的 AWS CLI

如果您的 CloudWatch 金丝雀停止运行,请检查您在创建金丝雀时设置的 DurationInSeconds 值。该值指定金丝雀根据 Expression 值中的时间表定期运行时,持续运行的时间长度。时间长度以秒为单位。如果您指定 0,则金丝雀会持续运行,直到您停止金丝雀为止。如果您未设置 DurationInSeconds 值,则默认值将设置为 0

要查看金丝雀的 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

注意:要使金丝雀持续运行,必须编写将 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