我正在尝试允许我们的AWS账户中的所有EC2实例自行停止(使用使用aws cli的自动脚本)。我尝试通过使用propper策略创建AWS IAM角色来实现此目的。但是,我找不到如何将策略定义为仅允许实例自行停止(而不是其他实例)。
我尝试了以下政策
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:StopInstances"
],
"Resource": [
"${ec2:SourceInstanceARN}"
]
}
]
}
但是在验证时,这给了我错误This policy contains the following error: The following resources are invalid : ${ec2:SourceInstanceARN}
有没有办法允许实例自行停止(只有自己)?如果是这样,我该怎么做?
答案 0 :(得分:1)
关机行为可以解决终止问题,但在其他情况下,可能需要限制对API请求的访问(即自标记)。因此,这是使用IAM策略的解决方案:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"ec2:DeleteTags",
"ec2:DescribeTags",
"ec2:CreateTags",
"ec2:TerminateInstances",
"ec2:StopInstances"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:ARN": "${ec2:SourceInstanceARN}"
}
}
}
]
}
答案 1 :(得分:0)
正如Mark B在评论中所说,我通过将脚本更改为使用shutdown
而不是aws ec2 stop-instances
来解决了我的问题。这使得任何策略的使用都不必要,因为任何系统都可以自己执行shutdown(并且只能自己执行)。