amazon-web-services - AWS IAM : Allow EC2 instance to stop itself

标签 amazon-web-services amazon-ec2 amazon-iam

我正在尝试允许我们 AWS 账户中的所有 EC2 实例自行停止(使用使用 aws cli 的自动化脚本)。我尝试通过使用适当的策略创建 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}
有没有办法让实例停止自己(并且只有自己)?如果是这样,我应该怎么做?

最佳答案

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

关于amazon-web-services - AWS IAM : Allow EC2 instance to stop itself,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39018803/

相关文章:

mysql - MySQL 中的 CASE 强制列数据类型为 BIGINT 而不是 INT

node.js - 将 ReactJs 前端 + NodeJs 后端部署到 AWS

docker - 我无法从 AWS Fargate 任务中查询 dynamodb 表

mysql - 无法使用 terraform 使用 AWSAuthenticationPlugin 创建 mysql 用户

amazon-web-services - Ansible Cloudformation,如果资源已经存在,如何不中断?

php - 获取文件名中包含空格的 AWS S3 对象

amazon-web-services - AWS Dynamodb 吞吐量

node.js - AWS EC2 上的 Nginx、Socket.io 无访问控制允许请求资源中存在源

amazon-web-services - AWS ELB 不填充 x-forwarded-for header

amazon-web-services - 如何确定 ResourceTag 命名空间 (ec2 :ResourceTag vs aws:ResourceTag vs iam:ResourceTag)