我在为特定用户创建 IAM 策略以授予启动和停止 EC2 实例的权限时遇到了麻烦。
我尝试了几种方法但找不到错误。
这是我的政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1468227127000",
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances"
],
"Resource": [
"*"
]
},
{
"Sid": "Stmt1468227157000",
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances"
],
"Resource": [
"arn:aws:ec2:region:user:instance/instance-ID"
]
}
]
}
正如我所读到的,我无法仅描述一个实例,在第一部分中我描述了我的所有 ec2 实例并且它可以工作,但在第二部分中我允许用户启动和停止一个实例,但我无法启动它。
答案1
这个对我来说很好用。请注意,我添加了一些非常有用(从我的角度来看)的操作,当然,如果不需要,您可以随意删除它们:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstances",
"ec2:DescribeInstanceStatus",
"ec2:DescribeTags"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances"
],
"Resource": "arn:aws:ec2:us-east-1:361111111111:instance/i-0e411111111111111"
}
]
}
这361111111111
是您在账户设置中看到的账户ID,
i-0e411111111111111
也就是实例ID,应该以 开头i-
,可以在实例描述选项卡最左上角找到。
请注意,该地区没有可用区。
对于好奇的人:我试图将ec2:Describe*
操作限制为arn:aws:ec2:us-east-1:361111111111:instance/*
,但这不起作用。我删除了最右边的部分直到它起作用,结果发现"*"
只有它起作用。
答案2
尝试 Putnik 的建议对我没有用,这样的事情也没有用。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [ "ec2:*" ],
"Resource": "*"
]
}
我无法启动或停止 EC2 实例,已停止的实例会短暂地转换为待处理状态,然后最终重新变为已停止状态,并显示一条相当无用的Client.InternalError
消息。
但是,添加PassRole
到我的政策中就起作用了。
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [ "ec2:Describe*" ],
"Resource": [ "*" ],
"Effect": "Allow"
},
{
"Action": [
"ec2:StartInstances",
"ec2:StopInstances",
"ec2:RebootInstances"
],
"Resource": [
"arn:aws:ec2:us-east-1:361111111111:instance/i-0e411111111111111"
],
"Effect": "Allow"
},
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "*"
}
]
}
答案3
检查您的 ARN。其格式应与本页所示一致http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-ec2
当它说帐户是。这是要 ID 的数字 AWS 帐户