У меня есть шаблон CloudFormation, в котором я создаю экземпляр RDS. Сначала я создаю AWS::SecretsManager::Secret
и сохраняю там значения, которые я буду использовать как MasterUserPassword
MasterUsername
и DBName
в AWS::RDS::DBInstance
под некоторым секретным именем. Но я также хотел бы поместить в этот секрет имя хоста экземпляра 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 + RDS. Но это оставит один бесполезный секретный ресурс.