从Spring Boot + AWS参数存储器轻松获取

首先

通过AWS的参数存储库在Spring的DI容器中轻松注册值,并通过@Value注解轻松获取。

环境

    • Spring Boot 3.1.3

 

    • Java 17

 

    gradle 8.2.1

AWS 参数存储

在参数存储中创建以下参数。

    • spring.datasource.url

 

    • spring.datasource.username

 

    spring.datasource.password
image.png

build.gradle –> 构建.gradle

添加下列依赖

implementation platform('io.awspring.cloud:spring-cloud-aws-dependencies:3.0.2')
implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store'

应用配置文件.yml

为了从aws参数存储中获取值并将其添加到Spring的DI容器中,需要添加spring.config.import。

spring:
  config:
    import: aws-parameterstore:/

如果设置了以下参数,则application.yml的配置如下所示。

パラメータ名値/config/spring/messageWelcome/config/spring/httpUrlexternal-service:3030/
spring:
  config:
    import: aws-parameterstore:/config/spring

请参考Spring官方文档的10.1节”加载外部配置”,以获取更详细的信息。

Java代码

如果要使用,可以使用Spring的@Value来轻松获取。

    import org.springframework.beans.factory.annotation.Value;

	@Value("${spring.datasource.url}")
	private String url;
	
	@Value("${spring.datasource.username}")
	private String username;

	@Value("${spring.datasource.password}")
	private String password;

如果想要在本地环境和联合环境中更改参数值的话

我想使用参数存储将以前使用常见环境变量处理的功能转换过来。

应用配置文件.yml

spring:
  datasource:
    url: jdbc:mysql://localhost
    username: ユーザー名
    password: パスワード

应用程序开发配置.yml

在环境(dev)中,添加 AWS 参数存储设置。不需要写入 spring.datasource.url 等内容。

spring:
  config:
    import: aws-parameterstore:/

指定配置文件以启动

    • Spring Bootの起動時にspring.profiles.active=devを指定すれば結合環境の場合のみawsのパラメータストアから値を取得するようになる

spring.profiles.active=devを指定しない場合はapplication.ymlから値を取得する(application-dev.ymlは読み込みされない)

AWS的权限

请确保授予以下权限以从 AWS 参数存储中获取值。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ssm:GetParametersByPath",
            "Resource": "*"
        }
    ]
}

 


在本地环境中连接到AWS的方法

如果要在本地环境下连接到AWS参数存储并进行操作确认,我们可以通过设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY来进行操作确认。

Java系统属性 – aws.accessKeyId和aws.secretAccessKey
环境变量 – AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY
从系统属性或环境变量获取的Web身份令牌凭据
默认位置处的凭据配置文件(~/.aws/credentials),由所有AWS SDK和AWS CLI共享
通过Amazon EC2容器服务提供的凭据,如果设置了AWS_CONTAINER_CREDENTIALS_RELATIVE_URI环境变量且安全管理器具有访问该变量的权限
通过Amazon EC2元数据服务提供的实例配置文件凭据

 

抛开主题不谈

只要设置好了,几乎可以轻松地获取源代码,几乎不需要进行额外的添加。

bannerAds