Проблема с BasicAWSCredentials при выполнении на основе потоков - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь принять роль внутри потока, используя AWS Assume Role.Тем не менее, это дает ошибку, которая не имеет отношения к принятию роли.

Ниже приведен код run() функции

@Override
            public void run() {
                Session session = null;
                try {
                    session = sessionFactory.openSession();
                    RmlWorkspace rmlWorkspace = session.get(RmlWorkspace.class, id);
                    logger.info("Starting Status check for "+id);
                    if (rmlWorkspace.getCloudStack().getStatus() == RUNNING_STATUS.STARTING) {
                        while (rmlWorkspace.getCloudStack().getStatus() != RUNNING_STATUS.ON) {
                            logger.info("Checking Status for "+id);
                            rmlWorkspace = checkStatus(session, rmlWorkspace);
                            TimeUnit.SECONDS.sleep(5);
                        }
                    } else if (rmlWorkspace.getCloudStack().getStatus() == RUNNING_STATUS.STOPPING) {
                        while (rmlWorkspace.getCloudStack().getStatus() != RUNNING_STATUS.OFF) {
                            rmlWorkspace = checkStatus(session, rmlWorkspace);
                            TimeUnit.SECONDS.sleep(5);
                        }
                    }
                    session.close();
                } catch (Exception e) {
                    logger.info(e.getMessage());
                    if (session != null)
                        session.close();
                }
            }

Предполагаемая роль функции показана ниже:

private AssumeRoleResult assumeRole() {
                try {
                    BasicAWSCredentials credentials = new BasicAWSCredentials(configAttributeService.getAttribute("aws.iamkey"),
                            configAttributeService.getAttribute("aws.iampass"));
                    AWSSecurityTokenService client = AWSSecurityTokenServiceClientBuilder.standard()
                            .withRegion(Regions.US_WEST_2).withCredentials(new AWSStaticCredentialsProvider(credentials))
                            .build();
                    AssumeRoleRequest request = new AssumeRoleRequest()
                            .withRoleArn(configAttributeService.getAttribute("aws.assumerole"))
                            .withRoleSessionName(UUID.randomUUID().toString()).withDurationSeconds(900);
                    AssumeRoleResult assumeRoleResult = client.assumeRole(request);
                    return assumeRoleResult;
                } catch (Exception e) {
                    throw e;
                }
            }

Исключение e показывает ошибку, о которой я упоминалвыше.У кого-нибудь есть идея относительно того, почему это может произойти?

Я использую Spring Boot с менеджером транзакций Hibernate.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...