Amazon web services aws lambda-用户无权在资源上执行:cognito idp:ListUsers
在Lambda中测试期间,当我试图获取用户池中的所有用户时,我遇到了以下错误Amazon web services aws lambda-用户无权在资源上执行:cognito idp:ListUsers,amazon-web-services,aws-lambda,amazon-iam,Amazon Web Services,Aws Lambda,Amazon Iam,在Lambda中测试期间,当我试图获取用户池中的所有用户时,我遇到了以下错误 "errorType": "AccessDeniedException", "errorMessage": "User: arn:aws:iam::123456789:user/xxxxx is not authorized to perform: cognito-idp:ListUsers on resource: arn:aws:cognito-
"errorType": "AccessDeniedException",
"errorMessage": "User: arn:aws:iam::123456789:user/xxxxx is not authorized to perform: cognito-idp:ListUsers on resource: arn:aws:cognito-idp:us-west-2:123456789:userpool/us-west-2_abcdefg",
我的lambda代码:
var AWS = require('aws-sdk');
exports.handler = () => {
var params = {
UserPoolId: 'us-west-2_abcdefg',
}
return new Promise((resolve, reject) => {
AWS.config.update({ region: 'us-west-2', 'accessKeyId': 'accesskey', 'secretAccessKey': 'secretkey' });
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.listUsers(params, (err, data) => {
if (err) {
console.log(err);
reject(err)
}
else {
console.log("data", data);
resolve(data)
}
})
});
};
我试图在IAM中添加内联策略,但仍然出现相同错误:
更新:Lambda IAM角色
检查json(第二个选项卡),并在“lambdaexecutionpolicy”上面添加以下内容
您已经从Cognito Identity分配了权限,而您需要的权限来自Cognito用户池 在我看来,通过控制台更新策略的最佳方法是使用JSON视图。这使您可以创建一条语句,其中包含错误消息中显示的确切操作,而无需猜测服务
您还应该熟悉IAM的页面。它详细说明了每个服务的可用操作,并从告诉您服务名称开始。如果您对哪项服务感到困惑,您可以检查您认为适用的服务,直到找到正确的服务(在本例中为“cognito idp”)。可以为该步骤做更多解释吗?我不使用aws框架。我只在控制台中管理IAM,而不使用CLI。您是否可以单击json(第二个选项卡)?并搜索lambdaexecutionpolicy我更新了上面的IAM角色权限。你能告诉我应该把代码放在哪里吗?我是AWS的绝对初学者。Lambda的IAM角色是什么?更新如上。谢谢你的建议@CCCC-这不仅仅是建议。我还指出,您使用了错误的权限(用于完全不同的服务)。
"lambalistuserspolicy": {
"DependsOn": [
"LambdaExecutionRole"
],
"Type": "AWS::IAM::Policy",
"Properties": {
"PolicyName": "lambda-list-users-policy",
"Roles": [
{
"Ref": "LambdaExecutionRole"
}
],
"PolicyDocument": {
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"cognito-idp:ListUsers"
],
"Resource": {
"Fn::Sub": [
"arn:aws:cognito-idp:${region}:${account}:*",
{
"region": {
"Ref": "AWS::Region"
},
"account": {
"Ref": "AWS::AccountId"
},
"lambda": {
"Ref": "LambdaFunction"
}
}
]
}
}
]
}
}
},