使用 Java SDK2 获取临时 AWS 凭证
Getting temporary AWS credentials using Java SDK2
AWS documentation 似乎仍然参考 AWS Java SDK1 关于 STS / 承担角色身份验证。
如果我有:
- AWS Java SDK2 (v.2.5.49)
- 角色学习
- 外部 ID
..有没有办法用这些来创建:
- 访问密钥
- 密钥
- sessionToken
应该使用 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]
AWS documentation 似乎仍然参考 AWS Java SDK1 关于 STS / 承担角色身份验证。
如果我有:
- AWS Java SDK2 (v.2.5.49)
- 角色学习
- 外部 ID
..有没有办法用这些来创建:
- 访问密钥
- 密钥
- sessionToken
应该使用 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]