|
此版本仍在开发中,目前尚不稳定。如需最新稳定版本,请使用 Spring Cloud Config 5.0.1! |
AWS 密钥管理服务
当使用 AWS Secrets Manager 作为后端时,您可以通过将配置放置在 /application/ 中,或为应用程序将配置放置在 default 配置文件中,从而与所有应用程序共享配置。例如,如果您添加具有以下键的密钥,则所有使用配置服务器的应用程序都将能够访问属性 shared.foo 和 shared.bar:
secret name = /secret/application-default/
secret value =
{
shared.foo: foo,
shared.bar: bar
}
or
secret name = /secret/application/
secret value =
{
shared.foo: foo,
shared.bar: bar
}
带标签的版本
AWS Secrets Manager 存储库允许以与 Git 后端相同的方式,保留配置环境的带标签版本。
存储库实现将 HTTP 资源的 {label} 参数映射到 AWS Secrets Manager 中密钥的版本标签。要创建带标签的密钥,可创建一个新密钥或更新其内容,并为其定义一个版本标签(在 AWS 文档中有时称为“版本阶段”)。例如:
$ aws secretsmanager create-secret \
--name /secret/test/ \
--secret-string '{"version":"1"}'
{
"ARN": "arn:aws:secretsmanager:us-east-1:123456789012:secret:/secret/test/-a1b2c3",
"Name": "/secret/test/",
"VersionId": "cd291674-de2f-41de-8f3b-37dbf4880d69"
}
$ aws secretsmanager update-secret-version-stage \
--secret-id /secret/test/ \
--version-stage 1.0.0 \
--move-to-version-id cd291674-de2f-41de-8f3b-37dbf4880d69
{
"ARN": "arn:aws:secretsmanager:us-east-1:123456789012:secret:/secret/test/-a1b2c3",
"Name": "/secret/test/",
}
使用 spring.cloud.config.server.aws-secretsmanager.default-label 属性来设置默认标签。如果该属性未定义,则后端将使用 AWSCURRENT 作为暂存标签。
spring:
profiles:
active: aws-secretsmanager
cloud:
config:
server:
aws-secretsmanager:
region: us-east-1
default-label: 1.0.0
注意,如果未设置默认标签且请求未定义标签,则仓库将像禁用版本标签支持一样使用密钥。此外,仅当启用了标签支持时才会使用默认标签。否则,定义此属性是毫无意义的。
注意,如果暂存标签包含斜杠(/),则 HTTP URL 中的标签应改用特殊字符串 ({special-string}) 来指定(以避免与其他 URL 路径产生歧义),这与 Git 后端部分 所描述的方式相同。
使用 spring.cloud.config.server.aws-secretsmanager.ignore-label 属性来忽略 HTTP 资源的 {label} 参数以及 spring.cloud.config.server.aws-secretsmanager.default-label 属性。存储库将把密钥当作版本支持未启用的情况来处理。
spring:
profiles:
active: aws-secretsmanager
cloud:
config:
server:
aws-secretsmanager:
region: us-east-1
ignore-label: true