AWS Secrets Manager

當使用 AWS Secrets Manager 作為後端時,您可以透過將配置放在 /application/ 中或放在應用程式的 default 配置檔案中來與所有應用程式共享配置。例如,如果您新增具有以下鍵的秘鑰,所有使用配置伺服器的應用程式都將擁有屬性 shared.fooshared.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
© . This site is unofficial and not affiliated with VMware.