Получение временных учетных данных AWS с использованием Java SDK2 - PullRequest
1 голос
/ 24 мая 2019

Документация AWS , похоже, все еще ссылается на AWS Java SDK1 в отношении аутентификации STS / предполагаемой роли.

Если у меня есть:

  • AWS JavaSDK2 (v.2.5.49)
  • role-arn
  • external-id

.. есть ли способ создать с такими:

  • accessKey
  • secretKey
  • sessionToken

1 Ответ

0 голосов
/ 27 мая 2019

Следует использовать StsAssumeRoleCredentialsProvider, который обновляет временные токены для вас.

def apply(roleArn: String, externalId: String, expires: FiniteDuration, sessionName: String): StsAssumeRoleCredentialsProvider = {
    val durationSecs: Int = expires.toSeconds.toInt

    val stsClient: StsClient = StsClient.builder.build()

    val req: AssumeRoleRequest = AssumeRoleRequest.builder
      .roleArn(roleArn)
      .externalId(externalId)
      .durationSeconds(durationSecs)
      .roleSessionName(sessionName)
      .build()

    StsAssumeRoleCredentialsProvider.builder
      .stsClient(stsClient)
      .refreshRequest(req)
      .build()
  }

Обратите внимание, что при вызове .resolveCredentials() AWS SDK 2 возвращает AwsCredentials, который не обеспечивает сеансмаркер.Возвращаемое значение можно просто преобразовать в AwsSessionCredentials, что обеспечивает все три.

val prov: AwsCredentialsProvider = ???
val creds: AwsSessionCredentials = prov.resolveCredentials().asInstanceOf[AwsSessionCredentials]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...