2

我有一个包含多个 EC2 现货实例的应用程序负载均衡器。

我发现其中一个被终止的原因是BidEvictedEvent,即有人请求了一个价格高于我的竞价实例。

使BidEvictedEvent我的 Web 服务502 bad gateway在几秒钟内不可用 ( )。

所以我想执行一个脚本,在 EC2 终止之前将它从自动缩放组中分离出来。

现在我的问题是,我该如何模拟BidEvictedEvent才能确保我的脚本正确执行?

我尝试从 AWS 控制台终止 EC2 实例。但是,当 EC2 终止之前没有执行任何脚本时,这不会502 bad gateway为我的 Web 服务的客户端创建。

我使用这里提到的方法来监控 BidEvictedEvent 何时发生。

4

1 回答 1

0

您提供的链接是用于检测现场中断通知的旧方法。也许这正是您想要执行此操作的方式,但这些天您将使用CloudWatch 事件规则来处理EC2 Spot Instance Interruption Warning.

使用该规则,您可以设置一个 lambda 函数,该函数将对您计划终止的实例执行操作。这些操作可以包括从 ASG 中删除,或通过SSM Command Run.

此外,您可以轻松模拟事件,因为它具有已知格式,并且您可以使用测试事件调用 lambda。

有关这方面的更多信息,请参阅利用 Amazon EC2 Spot 实例中断通知。您的 lambda 函数需要处理/模拟的现场中断事件示例是:

{
  "version": "0",
  "id": "1e5527d7-bb36-4607-3370-4164db56a40e",
  "detail-type": "EC2 Spot Instance Interruption Warning",
  "source": "aws.ec2",
  "account": "123456789012",
  "time": "1970-01-01T00:00:00Z",
  "region": "us-east-1",
  "resources": [
    "arn:aws:ec2:us-east-1b:instance/i-0b662ef9931388ba0"
  ],
  "detail": {
    "instance-id": "i-0b662ef9931388ba0",
    "instance-action": "terminate"
  }
}
于 2020-11-13T05:45:48.477 回答