AWS Secrets Manager
当使用 AWS Secrets Manager 作为后端时,可以通过将配置放置在/application/
中或将其放置在应用程序的default
配置文件中来与所有应用程序共享配置。例如,如果您添加具有以下密钥的密钥,则使用配置服务器的所有应用程序都将可以使用属性shared.foo
和shared.bar
。
secret name = /secret/application-default/
secret value =
{
shared.foo: foo,
shared.bar: bar
}
或者
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
请注意,如果未设置默认标签且请求未定义标签,则资源库将使用密钥,就像禁用标记版本支持一样。此外,只有在启用标记支持的情况下,才会使用默认标签。否则,定义此属性毫无意义。
请注意,如果暂存标签包含斜杠 (/
),则应使用特殊字符串({special-string})
(以避免与其他 URL 路径混淆)在 HTTP 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