web-dev-qa-db-fra.com

Erreur AWS Cognito: 'identityPoolId' n'a pas réussi à satisfaire la contrainte

Je suis nouveau Cognito. J'essaie d'implémenter AWS Cognito à l'aide de Lambda. Ceci est le tutoriel je suis.

AmazonCognitoIdentityClient client =
                new AmazonCognitoIdentityClient();
    GetOpenIdTokenForDeveloperIdentityRequest tokenRequest = new GetOpenIdTokenForDeveloperIdentityRequest();
    tokenRequest.setIdentityPoolId("us-east-1_XXXXXXX");

Il s'agit de l'ID de pool que j'utilise dans le setIdentityPoolId

enter image description here

Ceci est le test JUnit

public class AuthenticateUser implements RequestHandler<Object, Object> {

@Override
public Object handleRequest(Object input, Context context) {

    AuthenticateUserResponse authenticateUserResponse = new AuthenticateUserResponse();
    @SuppressWarnings("unchecked")
    LinkedHashMap inputHashMap = (LinkedHashMap)input;
    User user = authenticateUser(inputHashMap);
    return null;
}

public User authenticateUser(LinkedHashMap input){
    User user = null;
    String userName = (String) input.get("userName");
    String passwordHash = (String) input.get("passwordHash");

    try {
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(Regions.US_EAST_1));
        DynamoDBMapper mapper = new DynamoDBMapper(client);
        user = mapper.load(User.class, userName);

        if(user != null){
            System.out.println("user found");
            if(user.getPasswordHash().equals(passwordHash)){
                System.out.println("user password matched");
                String openIdToken = getOpenIdToken(user.getUserId());
                user.setOpenIdToken(openIdToken);
                return user;
            } else {
                System.out.println("password unmatched");
            }
        } else {
            System.out.println("user not found");
        }
    } catch (Exception e) {
        System.out.println("Error: " + e.toString());
    }

    return user; 
}

Ceci est la sortie

user found
user password matched

Mais je reçois l'erreur suivante et, par conséquent, le return user l'instruction échoue

1 validation error detected: Value 'us-east-1_XXXXXX' at 'identityPoolId' 
failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]+:[0-9a-f-]+ 
(Service: AmazonCognitoIdentity; Status Code: 400; Error Code: ValidationException; 
34
suku

Vous utilisez un identifiant de pool d'utilisateurs Cognito comme identifiant de pool d'identités. Ce sont deux choses différentes. Les identifiants de pool d'identité sont au format us-east-1: XXXX-XXXXXX-XXXX-XXXX.

Pour obtenir un identifiant de pool d'identités, vous devez utiliser les parties "Gérer les identités fédérées" de la console Cognito et non la section "Gérer les pools d'utilisateurs". J'espère que cela t'aides.

113
Chetan Mehta