gpt4 book ai didi

java - Java Spring 中的多个 AWS 信用

转载 作者:行者123 更新时间:2023-11-30 05:31:59 25 4
gpt4 key购买 nike

在我的 POC 项目中,我们希望使用一个 AWS 用户账户(AWS api key 集 1)中的 S3 和其他 AWS 用户账户(AWS api key 集 2)中的 SQS?

我检查了下面的文章: https://docs.aws.amazon.com/sdk-for-java/v2/developer-guide/credentials.html

根据本文,我们可以构建凭证提供程序,但是(根据我的理解)凭证提供程序通常在 java 应用程序中是全局值...我们可以在单个 Spring boot 应用程序中使用多个 key 集吗?

最佳答案

Spring 中的凭据提供程序不是全局的,但您可以通过创建 Bean 使它们全局化。

相反,您可以创建两个单独的组件:一个用于 SQSClient,另一个用于 S3Client,这两个组件都使用不同的 AWS 账户进行配置,然后根据需要 Autowiring 它们。

import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.AmazonSQSClientBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

@Configuration
public class AwsClientConfig {

//AWS Account 1: region1/accessKey1/secretKey1
@Bean
public AmazonSQS awsSQSClient(SqsConfig sqsConfig) {
AmazonSQS sqs = AmazonSQSClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey1, secretKey1)))
.withRegion(Regions.fromName(region1))
.build();
return sqs;
}

//AWS Account 2: region2/accessKey2/secretKey2
@Bean
public AmazonS3 s3Client() {
AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey2, secretKey2)))
.withRegion(region2)
.build();
return s3Client;
}

}

如果您不想在代码库中提供 accessKey/secretKey,可以将它们移至 application.yml 或使用 new ProfileCredentialsProvider("profile-1") & new ProfileCredentialsProvider( “配置文件-2”)

关于java - Java Spring 中的多个 AWS 信用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57331584/

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