如何在 Spring Boot 应用程序中初始化 AWS SDK?

Adi*_*Adi 8 java amazon-web-services spring-boot

我正在编写一个从 SQS 读取消息的 Spring Boot 应用程序。我能够使用环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY. 但是,我想知道通过类似于application.properties. 如何实现这一目标?

小智 9

aws sdk 2.0 的更改如下。

    AwsBasicCredentials awsCreds = AwsBasicCredentials.create(this.accessKey, this.secretKey);

    S3Client client = S3Client.builder().region(Region.AP_SOUTH_1)
            .credentialsProvider(StaticCredentialsProvider.create(awsCreds))
            .build();
Run Code Online (Sandbox Code Playgroud)


fat*_*Cop 7

在 Spring Boot 应用程序中,您可以application.yml使用@value注释访问文件中提到的属性。您可以创建这样的服务:

@Service
public class AmazonClient {  
    private AmazonSQS sqsClient;

    @Value("${amazonProperties.accessKey}")
    private String accessKey;
    @Value("${amazonProperties.secretKey}")
    private String secretKey;

    @PostConstruct
    private void initializeAmazon() {
        BasicAWSCredentials awsCredentials = new BasicAWSCredentials(this.accessKey, this.secretKey);
        this.sqsClient = AmazonSQSClientBuilder
                .standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                .build();

    }
}
Run Code Online (Sandbox Code Playgroud)

application.yml文件中:

amazonProperties:
   accessKey: <your_access_key>
   secretKey: <your_secret_key>
Run Code Online (Sandbox Code Playgroud)


Dav*_*vid 7

如果您在 Spring Boot 中使用 Spring Cloud AWS,则可以通过自动配置为您设置一些 AWS 客户端(如 SQS 和 SNS)和 EC2 元数据。对于本地测试,您可以使用通过应用程序属性设置的静态提供程序。

文档:https : //cloud.spring.io/spring-cloud-static/spring-cloud-aws/2.0.1.RELEASE/single/spring-cloud-aws.html#_spring_boot_auto_configuration

具体来说,您可以设置诸如cloud.aws.credentials.accessKey和 之类的属性cloud.aws.region.static


kj0*_*007 3

有几种方法可以管理它。

  1. 您可以配置 aws configure(在您的本地或 Linux 计算机上),这将需要您的密钥和访问密钥,然后您不需要通过默认构造函数在 api 中传递这些,您可以创建连接,因为它将从中选择密钥等系统路径。

    AmazonSQS sqs = AmazonSQSClientBuilder.defaultClient();
    
    Run Code Online (Sandbox Code Playgroud)

如何配置aws cli

  1. 如果您使用的是 AWS EC2,那么当您创建 ec2 实例时,请确保为其分配一个具有 SQS 权限的角色,然后您甚至不需要在那台计算机上进行配置。

  2. application/properties您可以在 sqs 类中定义您的访问密钥和秘密密钥并通过 加载@Value

  3. aws.keys您可以在文件中创建classpath并加载属性。

  4. 当然,您可以将它们定义为您的Constant class.