【发布时间】:2019-05-31 16:09:12
【问题描述】:
AWS documentation 似乎仍然在 STS/承担角色身份验证方面引用 AWS Java SDK1。
如果我有:
- AWS Java SDK2 (v.2.5.49)
- 角色-arn
- 外部 ID
..有没有办法用这些来创建:
- 访问密钥
- 密钥
- 会话令牌
【问题讨论】:
标签: aws-sdk
AWS documentation 似乎仍然在 STS/承担角色身份验证方面引用 AWS Java SDK1。
如果我有:
..有没有办法用这些来创建:
【问题讨论】:
标签: aws-sdk
应该使用 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]
【讨论】: