ec2.requestSpotInstances 需要 IAM 权限吗?

ec2.requestSpotInstances 需要 IAM 权限吗?

我正在尝试为 IAM 角色设置权限,该角色将在需要时提交新的 Spot 实例请求。它将由 Lambda 函数使用。

该代码执行以下 AWS API 调用:

  • ec2.describeSpotInstanceRequests
  • ec2.requestSpotInstances
  • ec2.createTags

我为其制定了以下策略(在尝试了很多其他选项之后......):

{
"Version": "2012-10-17",
"Statement": [
    {
        "Sid": "Stmt1437749945000",
        "Effect": "Allow",
        "Action": [
            "ec2:Describe*",
            "ec2:RequestSpotInstances",
            "ec2:RunInstances",
            "ec2:CreateTags",
            "iam:List*"
        ],
        "Resource": [
            "*"
        ]
    }
]

}

如果我添加iam:*它就会起作用,但显然我不想这样做。

有人能帮我猜一下它真正需要什么权限吗?有人知道 AWS API 调用和所有必需权限之间的映射吗?

答案1

ec2 API 函数和权限之间通常存在一一对应关系。因此,策略中的大部分内容都是没问题的。

您需要添加iam:PassRole权限。这是因为您的现货请求可能正在为运行的新 EC2 实例提供 IAM 角色。

需要该iam:PassRole权限是因为您的 lambda 角色可能会创建一个权限高于其自身权限的实例。这可能会导致危险的安全情况。因此需要此额外权限,并且通常将其限制为可以使用该Resource属性分配的有限角色列表。

相关内容