我设置了一个aws身份池,并附加了以下策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "iam:*",
"Resource": "*"
}
]
}
然而,当我尝试调用"getuser"方法时,我会得到以下错误:
AccessDenied: User: {/*the identitypool*/} is not authorized to perform: iam:GetUser on resource: user foo
这是代码:
var AWS = require('aws-sdk');
AWS.config.update({ region: 'us-west-2' });
AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'my user pool id' });
var iam = new AWS.IAM({ apiVersion: '2010-05-08' });
var params = {
UserName: "foo"
};
iam.getUser(params, function (err, data) {
if (err && err.code === 'NoSuchEntity') {
console.log("no such entity");
} else {
console.log("err, data", err, data);
}
我错过了什么?我是AWS的新手,所以我们非常感谢您的帮助。提前感谢!
看起来您正在使用增强流。您必须在身份池中启用基本身份验证流。我真的不确定代码(不是JS的人(,但如果你使用的是Unath角色,这就是错误背后的原因。
"为了获得额外的安全保护,Amazon Cognito对GetCredentialForIdentity提供的凭据应用范围缩小策略,以防止未经身份验证的用户访问大多数服务">
看看这里的医生:https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-政策