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

Lambda调用Cognito AdminGetUser接口报权限拒绝错误如何解决

Cognito权限报错排查与修复方案

报错核心原因是线上Lambda执行角色缺少目标Cognito用户池的cognito-idp:AdminGetUser操作授权,本地运行正常是因为本地调用使用的是你本地配置的AWS凭证对应权限,和线上Lambda执行角色的权限体系完全独立,不能作为线上权限配置正确的依据。

排查步骤

按优先级依次排查以下常见配置错误:

  • 确认角色匹配:核对你添加权限的角色,是否和报错信息里的角色ARN完全一致,常见错误是给测试环境角色、同服务下其他函数的角色加了权限,生产环境对应角色根本没修改。
  • 核对策略资源范围:找到对应Lambda执行角色挂载的身份策略,检查cognito-idp:AdminGetUser动作关联的资源配置,必须和报错里的用户池ARNarn:aws:cognito-idp:ap-south-1:XXXXXXXXXX:userpool/ap-south-1_ZwSEBspSk完全匹配,常见配置错误包括:
    • 区域填写错误,比如填了us-east-1,和用户池实际所在的ap-south-1不匹配
    • 账号ID、用户池ID填写错误,和实际生产环境资源ID不一致
    • 资源字段只写了用户池前缀,没有补全完整用户池ID
  • 检查策略语法与生效逻辑:确认策略的Effect字段是Allow而非Deny,Action字段拼写正确(注意AdminGetUser没有末尾的s),JSON语法没有格式错误。如果策略里配置了Condition限制(比如IP白名单、VPC端点限制、MFA要求),确认Lambda调用场景下这些条件都能满足。
  • 检查权限边界:如果该Lambda角色配置了权限边界(Permissions Boundary),需要确认权限边界规则里也允许cognito-idp:AdminGetUser操作对应用户池,否则即使身份策略放通,请求也会被拦截。
  • 确认部署生效:如果你是用CDK、Terraform、Serverless Framework等IaC工具部署资源,确认权限修改已经成功执行部署同步到云端,仅修改本地配置文件不会更新云端IAM角色规则。

修复方案

给报错对应的Lambda执行角色附加以下最小权限策略,将占位符替换为你实际的账号ID、用户池ID即可:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "cognito-idp:AdminGetUser",
            "Resource": "arn:aws:cognito-idp:ap-south-1:替换为你的账号ID:userpool/替换为你的用户池ID"
        }
    ]
}

配置完成后等待1-2分钟,等IAM权限全局同步生效后再重新触发接口测试即可。生产环境不要为了省事将Resource配置为*,遵循最小权限原则仅授权必要资源的操作权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 09:48:20