繁体   English   中英

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

[英]Alarm Action “Terminate EC2 Instance” failed

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

但是:执行该操作时,它失败,并显示以下“历史记录”条目:警报从

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

警报历史记录的屏幕截图

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

有什么提示吗?

问候汤姆

我相信这是问题所在。 开发人员指南中

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

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

我刚出现这个问题,似乎已经解决了。
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"
    }
  ]
}

它将event.amazonaws.com的受信任实体添加到该角色。
然后,CloudWatch Alarm停止实例功能就可以了!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM