【问题标题】:Alarm Action "Terminate EC2 Instance" failed警报操作“终止 EC2 实例”失败
【发布时间】:2019-01-17 18:57:33
【问题描述】:

当我启动某种类型的实例时,用户数据脚本会通过 Boto 创建一个指标 + 警报。 该指标正确地将其数据传送到 CloudWatch。 如果基于指标的某些条件匹配,则警报应将实例作为操作终止。 在 CloudWatch 中,警报似乎已正确创建,它会根据需要切换警报状态。

但是: 在执行该操作时,它会因以下“历史”条目而失败: 警报更新自

  • 可以报警。原因:超过阈值:5 个数据点大于阈值 (200.0)。最新数据点:999.0、999.0。
  • arn:aws:automate:eu-west-1:ec2:terminate 正在进行中。
  • 终止 EC2 实例“i-xxx”操作失败。 AWS 无法验证提供的访问凭证。

我已将策略“AdministratorAccess”授予附加到实例的“userdata”-Role。

有什么提示吗?

问候 汤姆

【问题讨论】:

  • 您是否尝试过使用与 AdministratorAccess 策略关联的访问凭证手动终止实例?
  • 是的,我做到了,没有问题。

标签: python amazon-web-services boto amazon-cloudwatch


【解决方案1】:

我相信这是问题所在。来自developer guide

如果您使用 IAM 角色(例如,Amazon EC2 实例配置文件), 您无法使用警报操作停止或终止实例。 但是,您仍然可以查看警报状态并执行任何其他操作 Amazon SNS 通知或 Auto Scaling 策略等操作。

我最近在 AWS 论坛上发帖讨论了这个问题: https://forums.aws.amazon.com/message.jspa?messageID=601951

【讨论】:

    【解决方案2】:

    我刚刚遇到了这个问题,看来我已经解决了。
    CloudWatch 警报的服务相关 IAM 角色是 AWSServiceRoleForCloudWatchEvents。 我发现它的受信任实体是 events.amazonaws.com。以及其信任关系标签中的政策文件,

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "events.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    以及信任关系标签中我的ec2实例的角色策略文档

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    然后将 Trusted entity,events.amazonaws.com 内容添加到 ec2 实例的角色策略文档中,如下:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "ec2.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        },
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "events.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    

    它将 events.amazonaws.com 的受信任实体添加到角色中。
    那么,CloudWatch报警停止实例功能就OK了!

    【讨论】:

      猜你喜欢
      • 2020-03-26
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 2019-12-16
      • 2018-06-23
      • 1970-01-01
      • 2018-10-07
      相关资源
      最近更新 更多