首页 > 解决方案 > 服务更新完成时 ECS 收到通知?

问题描述

更新 ECS 服务时,会一个一个部署新的 docker 容器,直到每个容器都被新版本替换。

我们想知道新版本何时完全部署,我想这可能意味着其中任何一个

我们可以得到这两个事件中的任何一个的通知吗?

(可能通过堆栈)

标签: amazon-web-servicesamazon-ecs

解决方案


这两个事件似乎都与任务状态更改事件相关,因为两者都与任务级别事件相关。

所有旧版本任务已注销,并且至少有一个新版本任务已注册

由于注销过程、容器已停止或已终止,您似乎需要将状态从RUNNING 更改为 STOPPED 。

为此,您可以创建云监视规则,它会在发生 STOPPED 事件时触发。

{
  "source": [
    "aws.ecs"
  ],
  "detail-type": [
    "ECS Task State Change"
  ],
  "detail": {
    "lastStatus": [
      "STOPPED"
    ],
    "clusterArn": [
      "arn:aws:ecs:us-west-2:123456789:cluster/cluster-a",
      "arn:aws:ecs:us-west-2:123456789:cluster/cluster-b"
       ]
  }
}

将目标 SNS 或 lambda 设置为接收事件,这将在上述两个集群中的任务状态发生变化时触发通知。

每个旧版本任务都已替换为新版本

此事件与服务级别事件更相关,AWS 最近宣布了此功能,因为您对 profer 部署事件感兴趣,而服务仅SERVICE_STEADY_STATE在任务启动并在服务中运行时才会触发。

以前,客户可以接收 ECS 任务和实例的 CloudWatch 事件,但 ECS 服务事件只能通过 ECS API 获得,这需要客户轮询 API 并实现自己的逻辑以实现服务事件的自动化和日志记录。借助 CloudWatch Events 中的 ECS 服务操作事件,客户可以轻松地在事件发生时自动对其进行实时响应。例如,客户可以自动触发 AWS Lambda 函数以响应特定的 ECS 服务操作。或者,客户可以将所有 ECS 服务操作事件流式传输到 CloudWatch Logs 组,从而实现事后取证分析。

amazon-ecs-service-events-now-available-as-cloudwatch-events-2019-11

SERVICE_STEADY_STATE

该服务是健康的并且具有所需的任务数量,因此达到了稳定状态。

你可以尝试类似的东西

{
    "source": [
        "aws.ecs"
    ],
    "detail-type": [
        "ECS Service Action"
    ],
  "detail": {
    "eventName": [
      "SERVICE_STEADY_STATE"
    ]
}

ecs_service_events


推荐阅读