Как добавить ключ в существующий AWS :: SecretsManager :: Secret - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть шаблон 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. Но это оставит один бесполезный секретный ресурс.

1 Ответ

1 голос
/ 27 февраля 2020

Я думаю, что вы ищете ресурс CFN AWS :: SecretsManager :: SecretTargetAttachment , который добавляет тип БД и сведения о соединении к секрету.

...