调用adminDeleteUser()删除AWS Cognito用户需何种AWS访问密钥?
AWS Cognito adminDeleteUser() 所需访问密钥配置详解
一、什么是AWS访问密钥?
AWS访问密钥分为Access Key ID和Secret Access Key,是AWS用于验证请求身份的核心凭证。你之前配置的AWS_COGNITO_USER_POOL_ID和AWS_COGNITO_APP_CLIENT_ID仅为Cognito资源的标识信息,无法提供调用adminDeleteUser()所需的权限验证,必须搭配具备对应权限的AWS访问密钥才能生效。
二、获取并配置AWS访问密钥的步骤
创建具备权限的IAM用户
- 登录AWS控制台,进入IAM服务
- 新建IAM用户,为其分配权限:
- 快速方案:直接附加
AmazonCognitoPowerUser托管策略(包含Cognito全操作权限) - 安全方案:创建自定义权限策略,仅允许对目标用户池执行
adminDeleteUser操作,示例策略如下:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cognito-idp:AdminDeleteUser", "Resource": "arn:aws:cognito-idp:你的区域ID:你的AWS账号ID:userpool/你的用户池ID" } ] }
- 快速方案:直接附加
- 生成并下载该用户的Access Key ID和Secret Access Key(注意:Secret Access Key仅会显示一次,请妥善保存)
在Node.js项目中配置凭证
在你的.env文件中添加以下配置:AWS_ACCESS_KEY_ID=你的Access Key ID AWS_SECRET_ACCESS_KEY=你的Secret Access Key AWS_REGION=us-west-2然后在代码中加载环境变量并配置AWS SDK:
require('dotenv').config(); const AWS = require('aws-sdk'); AWS.config.update({ region: process.env.AWS_REGION, accessKeyId: process.env.AWS_ACCESS_KEY_ID, secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY }); const cognitoIdentityServiceProvider = new AWS.CognitoIdentityServiceProvider(); const params = { UserPoolId: process.env.AWS_COGNITO_USER_POOL_ID, Username: '目标用户的用户名', }; cognitoIdentityServiceProvider.adminDeleteUser(params, function (err, data) { if (err) { console.log('Error:', err); } else { console.log('User deleted successfully'); } });
三、生产环境最佳实践
- 绝对不要将访问密钥硬编码到代码中,也不要提交到版本仓库(确保
.env加入.gitignore) - 如果部署在AWS托管服务(如Lambda、EC2)上,优先使用IAM角色而非硬编码密钥,AWS SDK会自动获取角色的临时凭证,安全性更高
内容的提问来源于stack exchange,提问作者Michael Hayashi
相关产品推荐
相关产品推荐

