Amplify Studio登录报错UnexpectedLambdaException权限不足排查
根因定位
两类报错为同一触发源导致的关联故障:账号因安全问题被限制期间,AWS风控机制自动收紧了账号下关联服务角色的权限,且风控解除后权限未自动回滚,具体问题点:
- Amplify Studio绑定的Cognito用户池,其DefineAuthChallenge认证触发器对应的Lambda执行角色权限被拦截,Cognito调用认证逻辑时触发
AccessDeniedException,直接阻断登录、团队成员邀请链路(邀请成员需写入Cognito用户池并触发通知,依赖同套认证权限),对应控制台抛出的400报错 AWSBackupDefaultServiceRole角色虽然挂载了备份、恢复的通用托管策略,但风控添加的显式拒绝规则/权限边界阻断了其对Amplify关联数据库、Cognito资源的访问,同时该角色默认未挂载Amplify专属备份策略,无法覆盖Amplify Studio资源的备份操作,对应备份操作的权限报错
解决方案
按以下顺序操作即可修复:
1. 修复Cognito认证链路权限
- 切换到Amplify Studio部署的us-west-1区域,打开Cognito服务控制台,定位到Amplify Studio关联的用户池
- 进入用户池的触发器配置页,找到DefineAuthChallenge项绑定的Lambda函数,记录函数信息
- 跳转到Lambda控制台,打开上述函数的权限配置页,检查绑定的执行角色:
- 确认角色已附加
AWSLambdaBasicExecutionRole托管策略,满足基础日志写入权限 - 逐一核查角色挂载的所有策略,删除风控流程自动生成的、对Cognito服务调用的显式Deny规则
- 编辑角色信任关系,确认信任实体包含
cognito-idp.amazonaws.com,保证Cognito有权限调用该Lambda,信任策略参考如下配置:
- 确认角色已附加
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "cognito-idp.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
- 保存配置后手动发起一次Lambda测试调用,确认无权限报错
2. 修复备份服务角色权限
- 打开IAM控制台,定位到角色
arn:aws:iam::278463271169:role/service-role/AWSBackupDefaultServiceRole - 检查角色的权限边界配置,若存在风控期间自动添加的限制级权限边界,直接移除,恢复为无权限边界状态
- 核查角色挂载的所有内联策略、托管策略,删除所有显式拒绝访问Amplify、DynamoDB、Cognito资源的规则
- 为角色附加
AWSBackupServiceRolePolicyForAmplify托管策略,补全Amplify Studio特有资源的备份权限(默认挂载的两个通用备份策略不覆盖该部分权限)
3. 功能验证
- 清除Chrome浏览器缓存,重新访问Amplify Studio登录页,使用原账号登录,确认控制台不再出现Cognito 400报错
- 登录成功后尝试发送团队成员邀请邮件,确认邀请流程正常下发
- 进入备份控制台重新触发数据库备份操作,确认不再返回权限不足提示
内容的提问来源于stack exchange,提问作者Nanf_bunan
相关产品推荐
相关产品推荐

