AWS IAM:允许 EC2 实例自行停止

use*_*095 5 amazon-ec2 amazon-web-services amazon-iam

我正在尝试允许我们 AWS 账户中的所有 EC2 实例自行停止(使用使用 aws cli 的自动化脚本)。我尝试通过使用适当的策略创建 AWS IAM 角色来实现此目的。但是,我找不到如何定义仅允许实例停止自身(而不是其他实例)的策略。

我尝试了以下政策

{
     "Version": "2012-10-17",
     "Statement": [
         {
             "Effect": "Allow",
             "Action": [
                 "ec2:StopInstances"
             ],
             "Resource": [
                 "${ec2:SourceInstanceARN}"
             ]
         }
     ]
}
Run Code Online (Sandbox Code Playgroud)

但是在验证时,这给了我错误 This policy contains the following error: The following resources are invalid : ${ec2:SourceInstanceARN}

有没有办法让实例停止自己(并且只有自己)?如果是这样,我应该怎么做?

Mob*_*y04 6

关闭行为解决了终止问题,但可能还有其他场景需要对 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}"
                }
            }
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • 这不再起作用:https://docs.aws.amazon.com/IAM/latest/UserGuide/access-analyzer-reference-policy-checks.html#access-analyzer-reference-policy-checks-error-unsupported -全局条件键 (2认同)

use*_*095 0

正如 Mark B 在评论中建议的那样,我通过将脚本更改为使用shutdown而不是aws ec2 stop-instances. 这使得无需使用任何策略,因为任何系统都可以对自身(并且仅对自身)执行关闭。