我正在尝试为刚刚创建的用户获取AWS凭据。
谁能告诉我identityId
应该是什么?我尝试将该区域与用户sub连接起来,但它没有:
var params = {
UserPoolId: process.env.USER_POOL_ID,
Username: 'xxx@gmail.com',
TemporaryPassword: 'Passw0rd!'
};
var cognitoidentityserviceprovider = new AWS.CognitoIdentityServiceProvider();
cognitoidentityserviceprovider.adminCreateUser(params, function(err, data) {
if (err) {
callback(null, failure(err));
}else
var identityId = "us-east-1:" + data.User.Username //user sub
var cognitoidentity = new AWS.CognitoIdentity();
cognitoidentity.getCredentialsForIdentity(
{"IdentityId": identityId},
(err, credResult) => {
if(err){
callback(null, failure(err));
}
callback(null, success(credResult));
})
});
我得到:
{
"message":"Identity 'us-east-1:8ce7ee63-d9ae-4f12-9xxxxxx' not found.",
"code":"ResourceNotFoundException","t": "..."
}
答案 0 :(得分:1)
您似乎将Cognito用户池与Cognito联合身份混合。 Cognito User Pool是您管理用户的地方,而Federated Identities是您授予外部用户AWS凭据访问权限的地方。
说,您必须确保将您的身份池(来自联合身份)配置为允许从您的用户池访问用户。这可能会帮助您https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-integrating-user-pools-with-identity-pools.html
设置完毕后,您可以拨打CognitoIdentity.getId,只有在您获得凭据后才会提供您的IdentityId。
总结:IdentityId是Cognito Federated Identities在身份池中的用户ID。