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

Vercel部署NextJS遇权限问题:Lambda无Cognito AdminInitiateAuth权限

解决方案:Lambda角色缺少Cognito AdminInitiateAuth权限

问题核心

你的Lambda执行角色aws-lambda-execute未被授权对指定Cognito用户池执行cognito-idp:AdminInitiateAuth操作,这是部署后登录失败的直接原因。本地运行正常是因为开发环境使用了拥有足够权限的AWS凭证(比如个人IAM用户),而部署后Lambda使用的专用执行角色权限不足。

修复步骤

1. 为Lambda角色添加Cognito权限策略

  • 登录AWS控制台,进入IAM服务
  • 左侧菜单选择角色,搜索并找到aws-lambda-execute角色
  • 切换到权限标签页,点击添加权限 -> 创建内联策略
  • 选择JSON标签,粘贴以下策略(替换[你的用户池ARN]为完整的Cognito用户池ARN,比如arn:aws:cognito-idp:us-east-2:672624023363:userpool/us-east-2_XXXXXXX):
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cognito-idp:AdminInitiateAuth",
            "Resource": "[你的用户池ARN]"
        }
    ]
}
  • 点击下一步,为策略命名(比如Lambda-Cognito-AdminInitiateAuth),然后点击创建策略

2. 确认资源ARN的准确性

确保策略中的资源ARN完全匹配你的Cognito用户池ARN:

  • 进入Cognito服务,找到目标用户池
  • 在用户池概述页面复制完整ARN,替换策略中的占位符

3. 检查角色信任关系

确认aws-lambda-execute角色的信任关系允许AWS Lambda服务扮演该角色:

  • 在角色详情页切换到信任关系标签页
  • 确保信任策略包含以下内容:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "lambda.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

4. 验证修复效果

部署更新后的IAM策略后,重新通过Vercel前端发起登录请求。若问题仍存在:

  • 查看Lambda函数的CloudWatch日志,确认权限错误是否消失
  • 使用IAM Access Analyzer检查权限配置是否存在冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 04:44:57