使用AWS CLI启动EC2实例遇未授权错误求助
解决EC2 RunInstances未授权错误的核心原因
你遇到的问题其实很典型——ec2:RunInstances操作不止需要EC2实例本身的权限。从你提供的解码授权信息能看到,权限检查失败时对应的资源是arn:aws:ec2:us-east-2:55532131:network-interface/*,但你的IAM策略里只给了instance/*的资源权限,这就是关键遗漏点。
为什么会这样?
当你调用RunInstances启动实例时,AWS会自动帮你创建一系列关联资源,包括但不限于:
- 弹性网络接口(ENI)
- 根卷(EBS卷)
- 关联子网、安全组的访问权限
- 使用的AMI镜像的读取权限
你的策略只授权了对实例的操作,但没有允许操作这些关联资源,所以AWS会判定你没有足够权限执行完整的启动流程。
修正后的IAM策略
你需要扩展RunInstances对应的资源范围,把启动实例时涉及的资源都包含进去。这里给出一个最小权限的示例(你也可以根据实际需求替换成具体资源ARN,比如指定你的子网、安全组ARN):
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:StartInstances", "ec2:CreateTags", "ec2:RunInstances", "ec2:StopInstances" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:network-interface/*", "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*:*:image/*", "arn:aws:ec2:*:*:volume/*" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "sts:DecodeAuthorizationMessage" ], "Resource": "*" } ] }
验证步骤
- 更新IAM角色的权限策略后,等待2-5分钟让权限生效(AWS IAM权限有时会有延迟)
- 重新运行你的CLI启动命令:
aws --region us-east-2 ec2 run-instances --image-id ami-02e680c45XXX351e \ --subnet-id subnet-2e0254 \ --security-group-ids sg-094a23e956177 \ --count 1 \ --instance-type t2.micro \ --key-name MyOhioKeyPair \ --query "Instances[0].InstanceId" \ --tag-specifications 'ResourceType=instance,Tags=[{Key='Application',Value="wu-digital-eai"}]'
这样应该就能成功启动实例了。
内容的提问来源于stack exchange,提问作者Naxi
相关产品推荐
相关产品推荐

