gpt4 book ai didi

amazon-web-services - SQS 过期 token : The security token included in the request is expired status code:

转载 作者:行者123 更新时间:2023-12-02 16:57:09 25 4
gpt4 key购买 nike

我在采用规则后尝试连接到 AWS sqs,但我在一个小时后收到过期的安全 token 错误,我该如何自动刷新连接?

@Bean
public QueueMessagingTemplate queueMessagingTemplate(){
return new QueueMessagingTemplate(amazonSQSAsync());
}

private AmazonSQSAsync amazonSQSAsync(){
try {
logger.info("Start amazonSQSAsync");

AWSSecurityTokenService stsClient = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(new DefaultAWSCredentialsProviderChain())
.withRegion(AWS_REGION)
.build();
logger.info("stsClient created successfully");
AssumeRoleRequest roleRequest = new AssumeRoleRequest()
.withRoleArn(ROLE_ARN)
.withRoleSessionName(ROLE_SESSION_NAME)
.withDurationSeconds(3600);
AssumeRoleResult assumeRoleResult = stsClient.assumeRole(roleRequest);
logger.info("assumeRoleResult created successfully");
BasicSessionCredentials basicSessionCredentials = new BasicSessionCredentials(
assumeRoleResult.getCredentials().getAccessKeyId(),
assumeRoleResult.getCredentials().getSecretAccessKey(),
assumeRoleResult.getCredentials().getSessionToken());
logger.info("basicSessionCredentials created successfully");
AmazonSQSAsync amazonSQSAsync = AmazonSQSAsyncClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(basicSessionCredentials))
.withRegion(AWS_REGION).build();
// .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(SQS_URL,"us-east-2"))
logger.info("amazonSQSAsync created successfully");
return amazonSQSAsync;
} catch (Exception e){
logger.error("Failed to create Amazon sqs client", e);
throw e;
}
}

最佳答案

您可以从 STSAssumeRoleSessionCredentialsProvider 获取自动更新凭证:

AWSSecurityTokenService stsClient 
= AWSSecurityTokenServiceClientBuilder.defaultClient();

STSAssumeRoleSessionCredentialsProvider assumedRoleCredentialsProvider
= new STSAssumeRoleSessionCredentialsProvider.Builder(ROLE_ARN, SESSION_ID)
.withStsClient(stsClient)
.build();

AmazonSQS sqsClient
= AmazonSQSClientBuilder.standard()
.withCredentials(assumedRoleCredentialsProvider)
.build();

请注意,您不能在使用派生客户端时关闭 stsClient。根据 AWS 的建议,创建一个持续程序生命周期的单例实例。

关于amazon-web-services - SQS 过期 token : The security token included in the request is expired status code:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com