AWS シークレットマネージャー
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 シークレットのステージングラベル [Amazon] にマップします。ラベル付きシークレットを作成するには、シークレットを作成するか、その内容を更新して、ステージングラベルを定義します (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