【问题标题】:Getting temporary AWS credentials using Java SDK2使用 Java SDK2 获取临时 AWS 凭证
【发布时间】:2019-05-31 16:09:12
【问题描述】:

AWS documentation 似乎仍然在 STS/承担角色身份验证方面引用 AWS Java SDK1。

如果我有:

  • AWS Java SDK2 (v.2.5.49)
  • 角色-arn
  • 外部 ID

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

  • 访问密钥
  • 密钥
  • 会话令牌

【问题讨论】:

    标签: aws-sdk


    【解决方案1】:

    应该使用 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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 2020-04-25
      • 2019-12-06
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      相关资源
      最近更新 更多