Как обновить значение секрета с помощью CloudFormation без повторной генерации пароля

Я генерирую новый пароль внутри секрета AWS Secrets Manager с помощью CloudFormation, однако, когда я изменяю другую часть полезной нагрузки JSON секрета, пароль генерируется повторно и изменяется. Есть ли способ заставить CloudFormation оставить пароль в том виде, в каком он был изначально сгенерирован, и не изменять его при изменении других полей JSON?

new Secret(this, 'MySecret', {
  secretName: 'MySecret',
  description: 'Secret to access the database.',
  generateSecretString: {
    secretStringTemplate: '{ "user": "foo", server: "bar" }',
    generateStringKey: 'password'
  }
})

person user3067870    schedule 01.08.2019    source источник


Ответы (1)


В настоящее время любые изменения в GenerateSecretString < Структура / a> вызовет регенерацию значения пароля. Это связано с тем, что различные поля в этой структуре являются правилами о содержимом значения (например, длина, набор символов и т. Д.), И у нас нет хорошего способа узнать, каким было предыдущее значение.

Каков ваш вариант использования ручного изменения полезной нагрузки JSON? Обычно это не то, что вам нужно делать регулярно.

person Parimal    schedule 01.08.2019
comment
На самом деле я согласен, это не должно измениться. Однако я настраивал секрет для существующей БД, у которой уже были имя пользователя и пароль, которые я хотел использовать. Я использовал GenerateSecretString для генерации случайного пароля, затем в консоли вручную изменил пароль на существующий. Проблема заключалась в том, что если я переименовал секрет или что-то еще в CDK, пароль был утерян. Интересно, если бы я явно установил пустой пароль в секрете (без использования GenerateSecretString), а затем вручную изменил бы его, если бы это сохраняло пароль таким же, если бы имя секрета и т. Д. Изменилось? - person user3067870; 02.08.2019
comment
Вы работаете с RDS? Если да, мне интересно, можете ли вы решить эту проблему с помощью секретного целевого вложения с secret.addTargetAttachment() (использует AWS::SecretsManager::SecretTargetAttachment). Таким образом, после того, как CF развернет ваш секрет, он получит обновленную информацию о соединении, это то, что вы хотите изменить после развертывания секрета? - person jogold; 02.08.2019
comment
Секретное имя - это уникальный идентификатор. Вы не можете это изменить. При этом в CFN секрет удаляется и создается новый. - person Parimal; 07.08.2019
comment
@jogold, не могли бы вы дать мне образец кода, как использовать addtargetAttachment (). Я хочу добавить мою новую базу данных RDS сказать «X» в диспетчер секретов «Y». какие параметры следует передать этому методу. - person James_RajKumar; 22.12.2019
comment
@ user3742114 в v1.19.0 у вас есть пример здесь github.com/aws/aws-cdk/blob/, это изменится в следующей версии -cdk / blob / - person jogold; 23.12.2019