【发布时间】:2020-02-27 05:00:45
【问题描述】:
我有一个创建 RDS 实例的 CloudFormation 模板。首先,我创建一个AWS::SecretsManager::Secret 并将值保存在那里,我将在AWS::RDS::DBInstance 中以某个秘密名称将它们用作MasterUserPassword MasterUsername 和DBName。但我也想将在创建 DBInstance 后获得的 RDS 实例主机名放入这个秘密中。
是否可以更新 CloudFormation 中的现有密钥?
我拥有的模板示例:
Resources:
RDSInstanceSecret:
Type: AWS::SecretsManager::Secret
Properties:
Name: "mysecret"
GenerateSecretString:
SecretStringTemplate: !Sub '{"username":"root", "dbname":"db"}'
GenerateStringKey: 'password'
PasswordLength: 16
ExcludeCharacters: '"@/\'
RDSInstance:
DependsOn: RDSInstanceSecret
Properties:
DBName: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecret, ':SecretString:dbname}}' ]]
Engine: "postgres"
EngineVersion: "9.6"
MasterUserPassword: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecret, ':SecretString:password}}' ]]
MasterUsername: !Join ['', ['{{resolve:secretsmanager:', !Ref RDSInstanceSecret, ':SecretString:username}}' ]]
Outputs:
EndpointRDS:
Value: !Sub '${RDSInstance.Endpoint.Address}:${RDSInstance.Endpoint.Port}' # I would like to save it to RDSInstanceSecret
我目前的想法是在创建实例后创建另一个 Secret,并将来自第一个 Secret + RDS 端点的所有密钥放在那里。但这会留下一个无用的秘密资源。
【问题讨论】:
标签: amazon-web-services amazon-cloudformation aws-secrets-manager