如何将密钥添加到现有 AWS::SecretsManager::Secret
How to add a key into an existing AWS::SecretsManager::Secret
我有一个创建 RDS 实例的 CloudFormation 模板。首先,我创建了一个 AWS::SecretsManager::Secret
并在其中保存了一些值,我将在 AWS::RDS::DBInstance
中使用这些值作为 MasterUserPassword
MasterUsername
和 DBName
使用一些秘密名称。但我也想将 RDS 实例主机名放入这个秘密中,我将在创建 DBInstance 后获得它。
是否可以更新 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 端点的所有 Secret 放在那里。但是这样会留下一个无用的Secret资源。
我认为您正在寻找 CFN AWS::SecretsManager::SecretTargetAttachment 资源,它将数据库类型和连接详细信息添加到机密中。
我有一个创建 RDS 实例的 CloudFormation 模板。首先,我创建了一个 AWS::SecretsManager::Secret
并在其中保存了一些值,我将在 AWS::RDS::DBInstance
中使用这些值作为 MasterUserPassword
MasterUsername
和 DBName
使用一些秘密名称。但我也想将 RDS 实例主机名放入这个秘密中,我将在创建 DBInstance 后获得它。
是否可以更新 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 端点的所有 Secret 放在那里。但是这样会留下一个无用的Secret资源。
我认为您正在寻找 CFN AWS::SecretsManager::SecretTargetAttachment 资源,它将数据库类型和连接详细信息添加到机密中。