#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 был многократно протестирован в модульных тестах и т. Д.