Amazon web services aws lambda-用户无权在资源上执行:cognito idp:ListUsers

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-

在Lambda中测试期间,当我试图获取用户池中的所有用户时,我遇到了以下错误

"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"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },