You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IAM用户无法附加ssm-role启动EC2实例问题求助

问题排查与解决方案

我来帮你一步步定位这个问题,核心原因大概率是权限配置的细节没踩对——咱们从几个关键环节入手:

1. 最关键:缺少iam:PassRole权限

你当前给test-user配置的sts:AssumeRole权限是让用户自己扮演ssm-role的,但启动EC2时附加角色的动作,本质是把角色“传递”给EC2服务,让EC2去扮演它,这需要的是iam:PassRole权限,而非sts:AssumeRole。

请把test-user的内联策略替换成如下内容(替换<ACC_ID>为你的实际AWS账号ID):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowPassSSMRoleToEC2",
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": "arn:aws:iam::<ACC_ID>:role/ssm-role"
    }
  ]
}

2. 调整ssm-role的信任关系

你的信任关系里添加了test-user的ARN是多余的——因为是EC2服务需要扮演这个角色,不是test-user直接扮演。保留服务主体即可,修正后的信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ec2.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

3. 验证ARN的准确性

仔细检查所有配置中的ARN:

  • 确认<ACC_ID>是你的实际12位AWS账号ID(没有多余符号或大小写错误)
  • 角色名称ssm-role完全匹配,没有拼写错误

4. 排查策略冲突

检查test-user是否被附加了拒绝(Deny)类型的策略(比如权限边界、托管策略或其他内联策略),Deny权限会优先覆盖Allow权限。你可以通过IAM控制台的策略模拟功能,验证test-user是否拥有iam:PassRole权限,目标资源为ssm-role的ARN。

按照以上步骤调整后,应该就能正常启动EC2并附加ssm-role了。

内容的提问来源于stack exchange,提问作者Reyansh Kharga

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:10:42