警报操作“终止EC2实例”失败

时间:2013-05-14 10:06:29

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

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

BUT: 在执行操作时,它失败并带有以下“历史”条目: 警报已从

更新
  • 确定要报警。原因:阈值交叉:5个数据点大于阈值(200.0)。最新数据点:999.0,999.0。
  • arn:aws:automate:eu-west-1:ec2:terminate正在进行中。
  • 终止EC2实例'i-xxx'操作失败。 AWS无法验证提供的访问凭据。

Screenshot of alarm history

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

任何提示?

此致 汤姆

2 个答案:

答案 0 :(得分:2)

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

  

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

我最近在AWS论坛上发布了有关此问题的信息: https://forums.aws.amazon.com/message.jspa?messageID=601951

答案 1 :(得分:0)

我刚遇到这个问题,似乎已经解决了。
CloudWatch Alarm的与服务相关的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实体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 Alarm停止实例功能就可以了!