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

AWS Lambda调用boto3的ec2.run_instances未授权问题排查

问题原因及解决办法

1. iam:PassRole权限的资源配置不精准

虽然你添加了iam:PassRole权限,但这个权限要求必须指定具体的实例角色ARN作为资源,仅用通配符*可能因为IAM的隐性限制不生效。Lambda执行角色的策略里,需要明确写你要传递的实例角色ARN,示例如下:

{
    "Effect": "Allow",
    "Action": "iam:PassRole",
    "Resource": "arn:aws:iam::123456789012:role/your-ec2-instance-role"
}

同时要确认这个实例角色的信任关系允许EC2服务扮演它,信任策略需包含:

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

2. 标签操作所需权限缺失

使用TagSpecifications时,Lambda执行角色需要明确的ec2:CreateTags权限——哪怕你配置了ec2:*,部分场景下通配符无法覆盖标签创建的上下文。建议在策略中单独添加该权限,同时确保RunInstances的资源覆盖EC2实例、卷、网卡等关联资源(创建实例时会自动生成这些资源,标签会同步应用):

{
    "Effect": "Allow",
    "Action": [
        "ec2:RunInstances",
        "ec2:CreateTags",
        "iam:PassRole"
    ],
    "Resource": [
        "arn:aws:ec2:*:*:instance/*",
        "arn:aws:ec2:*:*:volume/*",
        "arn:aws:ec2:*:*:network-interface/*",
        "arn:aws:iam::123456789012:role/your-ec2-instance-role"
    ]
}

3. Lambda执行角色的权限边界限制

如果你的Lambda执行角色设置了权限边界,即使附加了全量权限策略,权限边界也会限制实际可用权限。检查角色的权限边界配置,确保它包含iam:PassRole、ec2:CreateTags及对应资源的访问权限。

4. 启动模板的资源权限(若使用启动模板)

如果代码基于启动模板创建实例,Lambda执行角色的ec2:RunInstances权限需要包含启动模板的ARN作为资源:

arn:aws:ec2:*:*:launch-template/lt-xxxxxxxxxxxxxxxxx

快速验证步骤

  • 单独测试仅添加IamInstanceProfile参数,定位是否是该参数导致的权限问题
  • 用IAM Access Analyzer或Lambda角色的权限模拟工具,验证iam:PassRole和ec2:CreateTags操作是否被允许
  • 查看CloudTrail中的RunInstances调用日志,里面会显示具体的未授权细节(比如缺失的权限、不匹配的资源)

内容的提问来源于stack exchange,提问作者ashraf minhaj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:33