私のCognitoユーザープールでユーザーをsubで検索したいのですが、これは私が知る限り、単なるUUIDです。 Lambda関数内のJavaでこれを実行したいのですが、AWSのドキュメントでこれを行う方法を見つけることができません。
現在のところ、これはCognitoユーザープールでは不可能です。
ユーザーは、ユーザー名またはエイリアスを使用してのみ検索できます。 ListUsers APIでは、一部の 標準属性 に検索フィルターを提供してユーザーを検索することもできますが、subはそれらの1つではありません。
今では動作します。 http://docs.aws.Amazon.com/cognito-user-identity-pools/latest/APIReference/API_ListUsers.html
サポートされている属性のリストの「sub」。 JavaScriptの例:
var cog = new AWS.CognitoIdentityServiceProvider();
var filter = "sub = \"" + userSub + "\"";
var req = {
"Filter": filter,
"UserPoolId": "your pool id" // looks like us-east-9_KDFn1cvys
};
cog.listUsers(req, function(err, data) {
if (err) {
console.log(err);
}
else {
if (data.Users.length === 1){ //as far as we search by sub, should be only one user.
var user = data.Users[0];
var attributes = data.Users[0].Attributes;
} else {
console.log("Something wrong.");
}
}
});
// class var
protected final AWSCognitoIdentityProviderClient identityUserPoolProviderClient;
// initialize the Cognito Provider client. This is used to talk to the user pool
identityUserPoolProviderClient = new AWSCognitoIdentityProviderClient(new BasicAWSCredentials(AWS_ACCESS_KEY, AWS_SECRET_KEY));
identityUserPoolProviderClient.setRegion(RegionUtils.getRegion(USER_POOL_REGION));
// ...some init code omitted
// build the request
AdminGetUserRequest idRequest = new AdminGetUserRequest();
idRequest.withUserPoolId(USER_POOL_ID);
idRequest.withUsername(username);
// call cognito for the result
AdminGetUserResult result = identityUserPoolProviderClient.adminGetUser(idRequest);
// loop through results
List<UserType> userTypeList = result.getUsers();
// loop through them
for (UserType userType : userTypeList) {
List<AttributeType> attributeList = userType.getAttributes();
for (AttributeType attribute : attributeList) {
String attName = attribute.getName();
String attValue = attribute.getValue();
System.out.println(attName + ": " + attValue);
}
}