AWS Secrets Manager
當使用 AWS Secrets Manager 作為後端時,您可以透過將組態放置在 /application/
中,或是放置在應用程式的 default
profile 中,與所有應用程式共用組態。例如,如果您新增具有以下金鑰的密碼,則所有使用 config server 的應用程式都將可以使用 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
請注意,如果未設定預設標籤,且請求未定義標籤,則儲存庫將使用密碼,如同已停用標籤版本支援一樣。此外,預設標籤僅在啟用標籤支援時才會使用。否則,定義此屬性是沒有意義的。
請注意,如果暫存標籤包含斜線 (/
),則 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