【问题标题】:Creating an CloudWatch Event Rule for failed ECS tasks为失败的 ECS 任务创建 CloudWatch 事件规则
【发布时间】:2019-08-06 03:42:42
【问题描述】:

我目前有一个 ECS 任务不时失败,并带有不同的错误代码。我想创建一个在此类故障时触发的 CloudWatch 事件规则。我目前有以下云监视事件规则,仅在退出代码 1 上触发。我希望收到所有非零错误退出代码的通知。

{
  "source": [
    "aws.ecs"
  ],
  "detail-type": [
    "ECS Task State Change"
  ],
  "detail": {
    "lastStatus": [
      "STOPPED"
    ],
    "stoppedReason": [
      "Essential container in task exited"
    ],
    "containers": {
      "exitCode": [
        "1"
      ]
    }
  }
}

【问题讨论】:

    标签: amazon-ecs amazon-cloudwatch


    【解决方案1】:

    现在您可以在CW rules 中使用“anything-but”。

    {
      "source": [
        "aws.ecs"
      ],
      "detail-type": [
        "ECS Task State Change"
      ],
      "detail": {
        "lastStatus": [
          "STOPPED"
        ],
        "containers": {
          "exitCode": [
            {
              "anything-but": 0
            }
          ]
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      事件模式中没有否定函数。它只是完全匹配。来自here

      请务必记住以下有关事件模式的内容 匹配:

      • 对于匹配事件的模式,事件必须包含模式中列出的所有字段名称。字段名称必须出现在 具有相同嵌套结构的事件。

      • 模式中未提及的事件的其他字段被忽略;实际上,没有提到的字段有一个“”:“”通配符。

      • 匹配是精确的(逐个字符),没有大小写折叠或任何其他字符串规范化。

      • 要匹配的值遵循 JSON 规则:用引号括起来的字符串、数字以及不带引号的关键字 true、false 和 null。

      • 数字匹配在字符串表示级别。例如,300、300.0 和 3.0e2 不被视为相等。

      如果您有已知数量的退出代码,来自here,您可以在规则中包含一个退出代码数组。比如:

      {
        "source": [
          "aws.ecs"
        ],
        "detail-type": [
          "ECS Task State Change"
        ],
        "detail": {
          "lastStatus": [
            "STOPPED"
          ],
          "stoppedReason": [
            "Essential container in task exited"
          ],
          "containers": {
            "exitCode": [1, 2, 3, and so on...]
          }
        }
      }
      

      由于退出代码数量有限 (0-255),您可以将它们全部输入到数组中。

      显然,这看起来很愚蠢。对于更优雅(并且可以说是健壮)的解决方案,您需要修改事件规则以触发任何“STOPPED”事件,并创建自定义 lambda 函数。

      1. 创建 lambda 函数以使用否定 exitCode != 0 询问事件代码。如果为 true,则发送通知(SNS、SES、无论您使用什么...)。
      2. 重新配置事件模式以触发任何 STOPPED 事件。
      3. 重新配置事件规则以发送到您在步骤 1 中创建的 lambda 函数。

      【讨论】:

        猜你喜欢
        • 2019-08-27
        • 1970-01-01
        • 2019-08-29
        • 1970-01-01
        • 2019-02-11
        • 1970-01-01
        • 1970-01-01
        • 2021-04-27
        • 2017-09-07
        相关资源
        最近更新 更多