当前位置: 首页 > 知识库问答 >
问题:

CloudWatch事件规则和SNS用于更新ECS服务

司空坚
2023-03-14

每次更新ECS服务时(更新完成或达到所需状态后),我都希望收到一封电子邮件

我考虑过CloudWatch事件规则将SNS主题设置为目标(即确认的电子邮件地址)。然而,它不起作用。

这是我的自定义事件模式:

{
  "detail-type": [
    "ECS Update"
  ],
  "resources": [
    "arn:aws:ecs:us-east-1:aws-account:service/myService"
  ],
  "source": [
    "aws.ecs"
  ],
  "detail": {
    "clusterArn": [
      "arn:aws:ecs:us-east-1:aws-account:cluster/myCluster"
    ],
    "eventName": [
      "SERVICE_STEADY_STATE"
    ],
    "eventType": [
      "INFO"
    ]
  }
}

我也尝试过:

  • TASKSET_STEADY_STATE
  • CAPACITY_PROVIDER_STEADY_STATE
  • SERVICE_DESIRED_COUNT_UPDATED

我正在通过中情局更新服务

aws ecs update-service --cluster myCluster --service myService --task-definition myTaskDef --force-new-deployment --desired-count 2

事件规则的状态为启用,目标为SNS主题。输入为匹配事件。

我不知道。我用错活动名称了吗?

共有1个答案

庄浩言
2023-03-14

您还可以在任务上设置电子邮件通知,而不是在服务上设置电子邮件通知,而且ECS通知也有问题。

我无法使其基于ECS状态更改,我控制了lambda级别的通知。您可以设置此规则并为我工作。

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

您可以期待有点延迟,因为我已经经历过这种情况,并且在GitHub问题中也有报道。

下面是您将收到的用于上述规则的JSON事件。

{
  "version": "0",
  "id": "c3c27e7b-abcd-efgh-c84e-highgclkl",
  "detail-type": "ECS Service Action",
  "source": "aws.ecs",
  "account": "1234567890",
  "time": "2020-06-27T00:00:00.00Z",
  "region": "us-west-2",
  "resources": [
    "arn:aws:ecs:us-west-2:1234567890:service/test"
  ],
  "detail": {
    "eventType": "INFO",
    "eventName": "SERVICE_STEADY_STATE",
    "clusterArn": "arn:aws:ecs:us-west-2:123456789:cluster/mycluster",
    "createdAt": "2020-06-27T00:00:00.00Z"
  }
}

ecs\U cwe\U事件

或者另一种选择是这样您就可以尝试基于任务的更改。

{
  "source": [
    "aws.ecs"
  ],
  "detail-type": [
    "ECS Task State Change"
  ],
  "detail": {
    "lastStatus": [
      "STOPPED",
      "RUNNING"
    ],
    "clusterArn": [
      "arn:aws:ecs:us-west-2:123456789:cluster/my_cluster",
        ]
  }
}
 类似资料:
  • 我正在尝试创建一个AWS Cloudwatch事件规则,以便在运行特定任务的容器成功完成运行时发送SNS电子邮件通知。我已经浏览了Terraform文档,但找不到一种动态注入taskArn的好方法: 例如,这里的文档示例提供了相同的硬编码<代码> 是否有一种模板文件方法可以动态插入我的ARN而无需硬编码?

  • 我正在尝试配置cloudwatch事件规则,这将触发sns主题。我一直面临着从cloutwatch规则和terraform创建的事件模式触发sns主题的问题。下面是我的地形代码: 在aws用户界面上应用选中的事件模式后,如下所示: 它在创建s3 bucket时出现调用失败错误。然后我从aws控制台重新保存为: 然后就过去了。 有人能建议我如何禁用地形重新安排事件模式。

  • 我正在尝试设置Cloudwatch事件规则来通知任何AWS IAM操作,例如DeleteUser或CreateUser。但是当我尝试创建事件模式时,我在服务名称列表中找不到IAM,即使当我在AWS留档中搜索时,我找不到Cloudwatch事件规则不支持IAM的提及。所以我尝试创建一个自定义事件,但我没有收到来自SNS(我的目标)的任何电子邮件,是的,我确保Cloudwatch具有调用SNS的权限,

  • 我正在学习TF并尝试应用一个架构体系来创建: 一个简单的lambda函数 一个SNS话题 让lambda订阅SNS主题 以一定间隔向主题发布消息的Cloud Watch事件 一个Cloud Watch日志组,用于检查lambda是否收到SNS的通知 允许来自SNS的调用的lambda权限 我能够成功地应用它。基础架构看起来非常好(当我通过可视化aws控制台自己创建时,它具有相同的方面) 但云观察事

  • 我正在使用AWS Clouwatch事件规则调用一个基于Cron调度的python lambda函数,该函数运行良好。现在,我可以使用AWS Cloudformation将参数从cloudwatch偶数规则传递到这个lambda函数中吗?请你带路好吗?请参见以下我的cfn模板:

  • 我想使用针对SNS主题的CloudWatch事件规则获取AWS Health的所有事件。 个人健康仪表板(AWS Health)在全球范围内运行,但CloudWatch事件规则设置在特定区域,例如EU-Central-1。 这里的问题是:我应该从AWS运行状况中检索所有区域的所有事件,还是将事件的范围限定到CloudWatch事件规则所在的区域?