使用 Java SDK2 获取临时 AWS 凭证

Getting temporary AWS credentials using Java SDK2

AWS documentation 似乎仍然参考 AWS Java SDK1 关于 STS / 承担角色身份验证。

如果我有:

..有没有办法用这些来创建:

应该使用 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 returns 时 AwsCredentials 不提供会话令牌。返回的值可以转换为 AwsSessionCredentials,它提供了所有三个。

val prov: AwsCredentialsProvider = ???
val creds: AwsSessionCredentials = prov.resolveCredentials().asInstanceOf[AwsSessionCredentials]