принять другую роль в aws, используя java SDK на ec2, который использует назначенный IAM для доступа - PullRequest
0 голосов
/ 24 апреля 2020

Я запускаю простое приложение Java в контейнере docker на экземпляре EC2. Само приложение java не имеет жестко закодированных учетных данных, а aws sdk принимает учетные данные, назначенные экземпляру EC2.

Это работает нормально, но теперь мне нужно, чтобы он динамически взял на себя другую роль во время среднего исполнения. Я пытаюсь заставить приведенный ниже код работать, чтобы помочь сделать это, но я нажимаю исключение на второй последней строке *

Exception in thread "main" java.lang.IllegalArgumentException: No AWS profile named 'default'

переменные, через которые я прохожу, имеют следующий формат:

roleARN=arn:aws:iam::account-id
roleName=role/role-name-with-path

Я не знаю, как указать профиль по умолчанию, поскольку в контейнере docker, на котором запущено приложение, нет учетных данных , даже нет папки. aws для размещения конфигураций, и я не смогу, так как мы не разрешаем кодирование учетных данных.

Есть ли способ реализовать переключение ролей в моем случае?

Я запускаю приложение в настоящее время в intellij, используя временно сгенерированные учетные данные, которые передаются как переменные среды, в попытке воспроизвести то, что приложение увидит во время работы в контейнере docker, но я не знаю, насколько точно это с точки зрения репликации, как приложение будет работать в то время как в контейнере docker на E Экземпляр C2.

Я также очень плохо знаком с AWS ролями, и смена ролей, пожалуйста, простите за любую неправильно используемую терминологию.

Большое спасибо

1 Ответ

0 голосов
/ 24 апреля 2020

На основании комментариев было две проблемы:

  1. Неправильный формат roleARN. Это должен быть полный арн роли.
  2. Использование ProfileCredentialsProvidergets вместо EnvironmentVariableCredentialsProvider.
...