CloudWatch Synthetics Canary 失败时如何重启 ec2 服务器?

How to restart an ec2 server when CloudWatch Synthetics Canary fails?

我有一个正在处理的站点,其中一个页面从另一台服务器检索数据,我们称它为服务器 B。

偶尔服务器B无法return数据,主站会报500错误

我想在发生这种情况时重新启动服务器 B,我想我可以使用 CW 合成来做到这一点。我已经创建了一个 CW 警报来触发,但我没有直接重启 ec2 服务器的方法,因为它没有直接关联到一个服务器。

我想过调用一个 lambda 来重启服务器,但我想知道是否有更简单的 configuration/solution 我可以使用。

谢谢

Create an Event Bridge rule for a failed canary run,即触发 Lambda 函数。让 Lambda 函数通过 AWS API/SDK.

重新启动 EC2 服务器

您可以通过 selecting Synthetics Canary TestRun FailureAWS events 然后在 Event pattern -> AWS service select 中为失败的金丝雀 运行 创建事件桥规则Cloudwatch SyntheticsEvent type select Synthetics Canary TestRun Failure。从 Target select AWS service -> Select a target select EC2 Rebootinstances API call 并给出实例 ID。

更新: 您可以使用 custom patterns 并传递可以匹配失败模式的 json 。 在你的情况下,我会使用类似

{
  "source": ["aws.synthetics"],
  "detail-type": ["Synthetics Canary TestRun Failure"],
  "region": ["us-east-1"],
  "detail": {
  "account-id": ["123456789012"],
  "canary-id": ["EXAMPLE-dc5a-4f5f-96d1-989b75a94226"],
  "canary-name": ["events-bb-1"]
  }
}