我有一个CloudFormation模板,我在其中创建和RDS实例。首先,我创建了一个AWS::SecretsManager::Secret并保存了这些值,我将使用这些值作为MasterUserPassword、MasterUsername和DBName在AWS::RDS::DBInstance中使用某个秘密名称。但我还想将创建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端点的所有秘密放在那里。但这将留下一个无用的秘密资源。
发布于 2020-02-27 05:00:45
我认为您正在寻找CFN AWS::SecretsManager::SecretTargetAttachment资源,它将DB类型和连接详细信息添加到密钥中。
https://stackoverflow.com/questions/60321455
复制相似问题