AWS cognito «завершение работы пула соединений`

#amazon-web-services #amazon-cognito #aws-userpools

#amazon-веб-сервисы #amazon-cognito #aws-пользовательские бассейны

Вопрос:

В моем проекте spring boot я сначала создаю пул пользователей в cognito, а затем добавляю пользователя в пул пользователей. при добавлении пользователя в пул пользователей мне нужно создать userPoolClient

Я создаю пользовательский клиент со всеми необходимыми параметрами с помощью

 CreateUserPoolClientResponse response = cognitoClient.createUserPoolClient(clientRequest);
 

но он ведет себя странно. когда я запускаю код, он выбрасывается connection pool shut down , но когда я запускаю свой код в режиме отладки с точкой останова, он может успешно создать user pool client . Я не уверен, является ли создание пула соединений асинхронным процессом, и поэтому с помощью отладчика требуется некоторое время перед его созданием?

Кто-нибудь сталкивался с этой проблемой? был бы признателен за любую помощь. Спасибо

Ответ №1:

Попробуйте запустить AWS SDK Java V2 для этого варианта использования. Вот код для версии 2.

 package com.example.cognito;

//snippet-start:[cognito.java2.user_pool.create_user_pool_client.import]
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.cognitoidentityprovider.CognitoIdentityProviderClient;
import software.amazon.awssdk.services.cognitoidentityprovider.model.CognitoIdentityProviderException;
import software.amazon.awssdk.services.cognitoidentityprovider.model.CreateUserPoolClientRequest;
import software.amazon.awssdk.services.cognitoidentityprovider.model.CreateUserPoolClientResponse;
//snippet-end:[cognito.java2.user_pool.create_user_pool_client.import]

/**
 * To run this Java V2 code example, ensure that you have setup your development environment, including your credentials.
 *
 * For information, see this documentation topic:
 *
 * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html
 */
public class CreateUserPoolClient {

    public static void main(String[] args) {
        final String USAGE = "n"  
                "Usage:n"  
                "    <clientName> <userPoolId> nn"  
                "Where:n"  
                "    clientName - the name for the user pool client to create.nn"  
                "    userPoolId - the ID for the user pool.nn" ;

        if (args.length != 2) {
            System.out.println(USAGE);
            System.exit(1);
        }

        String clientName = args[0];
        String userPoolId = args[1];

        CognitoIdentityProviderClient cognitoClient = CognitoIdentityProviderClient.builder()
                .region(Region.US_EAST_1)
                .build();

        createPoolClient (cognitoClient, clientName, userPoolId) ;
        cognitoClient.close();
    }

    //snippet-start:[cognito.java2.user_pool.create_user_pool_client.main]
    public static void createPoolClient ( CognitoIdentityProviderClient cognitoClient,
                                          String clientName,
                                          String userPoolId ) {

        try {

            CreateUserPoolClientResponse response = cognitoClient.createUserPoolClient(
                    CreateUserPoolClientRequest.builder()
                            .clientName(clientName)
                            .userPoolId(userPoolId)
                            .build()
            );

            System.out.println("User pool "   response.userPoolClient().clientName()   " created. ID: "   response.userPoolClient().clientId());

        } catch (CognitoIdentityProviderException e){
            System.err.println(e.awsErrorDetails().errorMessage());
            System.exit(1);
        }
    }
    //snippet-end:[cognito.java2.user_pool.create_user_pool_client.main]
}
 

Я только что запустил это в модульном тестировании, и оно сработало нормально.

введите описание изображения здесь

Вы можете найти этот и другие примеры кода для этой службы здесь:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/cognito

Комментарии:

1. Спасибо. позвольте мне попробовать.

2. Amazon рекомендует использовать версию V2 вместо версии V1. Весь код версии V2 был многократно протестирован в модульных тестах и т. Д.