从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

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的配置如下所示。
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元数据服务提供的实例配置文件凭据
抛开主题不谈
只要设置好了,几乎可以轻松地获取源代码,几乎不需要进行额外的添加。