当我启动某种类型的实例时,userdata-script通过Boto创建一个指标+警报。 该指标正确地将其数据传送到CloudWatch。 如果基于度量的某些条件匹配,则警报应将实例作为操作终止。 在CloudWatch中,似乎可以正确创建警报,并根据需要切换警报状态。
BUT: 在执行操作时,它失败并带有以下“历史”条目: 警报已从
更新
我已经将策略“AdministratorAccess”授予附加到实例的“userdata”-Role。
任何提示?
此致 汤姆
答案 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停止实例功能就可以了!