Используйте AWSSecurityTokenServiceClientBuilder для загрузки профиля и учетных данных для принятия роли - PullRequest
0 голосов
/ 13 марта 2020

Я столкнулся с проблемой, когда мне нужно взять на себя роль для подключения к SQS. Читая документы, это кажется прямым. Учитывая настройки среды, я должен использовать указанный c профиль в .aws / config

. Я пытаюсь использовать ProfileCredentialsProvider, но я не уверен, что он будет работать, глядя на его код. Есть ли какая-либо другая опция с учетом моих настроек?

Когда я запускаю приведенный ниже код, я получаю сообщение об ошибке: Невозможно загрузить исходный профиль [профиль msi-stg]: Исходный профиль не найден [основной]

Если я перемещаю определения профиля в файл учетных данных, я получаю ошибку: Невозможно загрузить учетные данные в профиль [профиль msi]: AWS Идентификатор ключа доступа не указан

Я использую aws - java -sdk v1.11.742 вместе с Spring Cloud.

Я очень ценю любые ваши предложения. Спасибо !!

Вот моя попытка:

AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(new ProfileCredentialsProvider("/Users/home/.aws/config","profile msi-stg"))
.withRegion(Regions.EU_WEST_1).build();

AssumeRoleRequest roleRequest = new AssumeRoleRequest().withRoleArn("arn:aws:iam::5623221063223:role/msi-data-stg").withRoleSessionName("AssumedRoleSession");
AssumeRoleResult roleResponse = stsClient.assumeRole(roleRequest);
Credentials sessionCredentials = roleResponse.getCredentials();

BasicSessionCredentials awsCredentials = new BasicSessionCredentials(sessionCredentials.getAccessKeyId(),
                sessionCredentials.getSecretAccessKey(), sessionCredentials.getSessionToken());

AmazonSQSAsync sqsClient = AmazonSQSAsyncClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).withRegion(Regions.EU_WEST_1).build();

ReceiveMessageResult result = sqsClient.receiveMessage("queue-url");

Файл учетных данных

[main]
aws_access_key_id=xxxxxx
aws_secret_access_key=xxxxx

Файл конфигурации

  [profile msi]
  role_arn = arn:aws:iam::5623221063223:role/dev
  source_profile = main
  region = eu-west-1


  [profile msi-stg]
  role_arn = arn:aws:iam::5623221063223:role/msi-data-stg
  source_profile = profile msi
  region = eu-west-1
...