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

使用带External ID的IAM角色后,AWS NodeJS SDK无法创建Lambda函数

问题原因及解决方案

核心问题

你的IAM角色信任策略存在逻辑错误:将第三方IAM用户(需要External ID验证)和Lambda服务主体放在了同一条信任声明中,并统一附加了sts:ExternalId条件。但Lambda服务在尝试扮演该角色时无法提供External ID,导致这条声明对Lambda服务不生效,进而触发"无法被Lambda扮演"的错误。

修正后的信任策略

将信任策略拆分为两条独立的Statement,分别处理第三方用户的角色委托和Lambda服务的角色扮演:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": [
                    "arn:aws:iam::000000000000:user/admin"
                ]
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "sts:ExternalId": "abcde"
                }
            }
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

原理说明

  • 第三方用户通过STS AssumeRole获取临时凭证时,必须携带External ID,匹配第一条声明的条件,确保只有授权的外部实体能获取角色权限。
  • Lambda服务在执行函数时扮演角色,不需要提供External ID,第二条声明专门为Lambda服务开放权限,无额外条件限制,满足Lambda的角色扮演要求。

验证步骤

  1. 更新第三方账号中Third-party角色的信任策略为上述内容。
  2. 重新执行你的STS AssumeRole和Lambda创建代码,即可正常完成函数创建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 07:52:27