[英]Does Spark allow to use Amazon Assumed Role and STS temporary credentials for Glue cross account access on EMR
[英]how to auto-refresh AWS STS Temporary security credentials when it expires while accessing Amazon SQS?
我有 spring 引导应用程序,使用 QueueMessagingTemplate 作为客户端使用临时安全凭证 (STS) 访问 Amazon SQS。 使用 STS-AssumeRole 获取临时令牌。 你能帮我如何刷新/自动刷新 session 令牌过期吗?
错误:com.amazonaws.services.sqs.model.AmazonSQSException:请求中包含的安全令牌已过期
这是代码:
@Configuration
@Slf4j
public class QueueConfig {
@Bean
public QueueMessagingTemplate queueMessagingTemplate(@Autowired BasicSessionCredentials sessionCredentials) {
log.info("queueMessagingTemplate refresh");
return new QueueMessagingTemplate(amazonSQSAsync(sessionCredentials));
}
@Bean
@Primary
public AmazonSQSAsync amazonSQSAsync(BasicSessionCredentials sessionCredentials) {
return AmazonSQSAsyncClientBuilder
.standard()
.withRegion(Regions.US_WEST_1)
.withCredentials(new AWSStaticCredentialsProvider(sessionCredentials))
.build();
}
}
这是 AWS STS cred 的代码
@Configuration
@Slf4j
public class AwsRoleCredentials {
@Bean(name = "sessionCredentials")
public BasicSessionCredentials sessionCredentials(){
try {
String roleArn = "XXXX";
String roleSessionName = "XXX";
Region region = Region.US_WEST_1;
StsClient stsClient = StsClient.builder()
.region(region)
.build();
AssumeRoleRequest roleRequest = AssumeRoleRequest.builder()
.roleArn(roleArn)
.roleSessionName(roleSessionName)
.build();
AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest);
Credentials myCreds = roleResponse.credentials();
BasicSessionCredentials sessionCred = new BasicSessionCredentials(
myCreds.accessKeyId(),
myCreds.secretAccessKey(),
myCreds.sessionToken());
return sessionCred;
} catch (StsException e) {
log.error("ERROR while get token:"+ e.getMessage());
}
return null;
}
}
我正要自己实现它,然后我发现在 sdk 的版本 2 中它已经存在,您可以使用StsAssumeRoleCredentialsProvider
,它负责在令牌即将过期时刷新令牌。 我不知道旧的 SDK 中是否有等效的东西。
但是您也可以很容易地为较旧的 SDK 实现它,只需存储到期时间并在即将到期时发出另一个 assumeRole 请求
编辑-我很困惑,因为您将 v1 sdk 用于 SQS,但您确实将 V2 SDK 用于 STS,因此您可以简单地使用 StsAssumeRoleCredentialsProvider。 另外,我建议使用 V1 或 V2,但不能同时使用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.