You need to enable JavaScript to run this app. Lambda中调用getOpenIdTokenForDeveloperIdentity报PrincipalTags错误
优惠活动
大模型
产品
解决方案
定价
更多

Lambda中调用getOpenIdTokenForDeveloperIdentity报PrincipalTags错误

问题触发原因
  • 从错误堆栈的加载路径可以直接定位:报错触发时使用的AWS SDK是Lambda运行时目录(/var/runtime/node_modules/aws-sdk/)下的预装版本,并非你本地项目打包上传的SDK版本
  • 问题的核心是本地开发环境与Lambda运行时的AWS SDK版本存在明显代差:
    • 本地环境使用的AWS SDK版本较新,assumeRoleWithWebIdentity接口的参数校验规则已经将PrincipalTags纳入合法入参范围,本地运行时传参可正常通过校验
    • Lambda内置的预装AWS SDK是较早的历史版本,该版本的接口参数定义中尚未收录PrincipalTags字段(该参数是AWS SDK 2.825.0版本之后才正式加入STS接口支持范围的),SDK内置的参数校验器会将所有未在参数schema中声明的字段判定为非法入参,直接抛出UnexpectedParameter错误
解决办法
  • 方案1:部署时将项目依赖的AWS SDK和代码一同打包上传,强制覆盖Lambda内置的旧版SDK
    • 操作要求:将aws-sdk声明在项目的dependencies依赖项中,不要放在devDependencies分类下;打包部署包时完整包含项目依赖的node_modules目录,不要在打包配置中排除aws-sdk
    • 运行时效果:Lambda会优先加载项目包内的SDK版本,完全匹配本地开发环境的参数校验逻辑
  • 方案2:移除入参中的PrincipalTags字段,适配Lambda内置旧版SDK的参数要求
    • 注意:该方案仅适用于业务逻辑未依赖PrincipalTags实现权限管控、操作溯源、资源标签隔离的场景,避免移除参数后破坏原有鉴权规则
  • 方案3:升级Lambda函数的运行时版本
    • 选择Node.js 18及以上的Lambda运行环境,其预装的AWS SDK版本已经覆盖PrincipalTags的参数支持,可消除版本差导致的校验错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.05 04:36:10