Amazon cloudformation 如何更新一个秘密';在不重新生成密码的情况下,使用CloudFormation设置s值

Amazon cloudformation 如何更新一个秘密';在不重新生成密码的情况下,使用CloudFormation设置s值,amazon-cloudformation,amazon-rds,aws-cdk,aws-secrets-manager,Amazon Cloudformation,Amazon Rds,Aws Cdk,Aws Secrets Manager,我正在使用CloudFormation在AWS Secrets Manager机密中生成一个新密码,但是,当我更改机密的JSON负载的另一部分时,密码会重新生成并更改。有没有办法让CloudFormation保留最初生成的密码,而不在其他JSON字段更改时更改密码 new Secret(this, 'MySecret', { secretName: 'MySecret', description: 'Secret to access the database.', generateS

我正在使用CloudFormation在AWS Secrets Manager机密中生成一个新密码,但是,当我更改机密的JSON负载的另一部分时,密码会重新生成并更改。有没有办法让CloudFormation保留最初生成的密码,而不在其他JSON字段更改时更改密码

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

当前,对结构的任何更改都将导致重新生成密码值。这是因为该结构中的各个字段都是关于值内容(例如长度、字符集等)的规则,我们无法很好地了解前一个值是什么


手动更改JSON负载的用例是什么?这通常不是你需要经常做的事情。

事实上我同意,这不应该改变。然而,我已经为一个已有的数据库设置了一个秘密,这个数据库已经有了我想要使用的用户名和密码。我使用GenerateCretstring生成一个随机密码,然后在控制台中手动将密码更改为现有密码。问题是,如果我在CDK中重命名了密码或其他内容,密码就会丢失。我想知道我是否要在机密中显式设置一个空密码(不使用GenerateCretstring),然后手动更改它,如果机密的名称等。。。改变了?你在和RDS合作吗?如果是,我想知道您是否可以使用一个秘密目标附件来解决这个问题,使用
secret.addTargetAttachment()
(使用
AWS::SecretsManager::SecretTargetAttachment
)。通过这种方式,CF部署机密后,它会使用连接信息进行更新,这是部署机密后要更改的内容吗?机密名称是唯一标识符。你不能改变它。在CFN中执行此操作时,会删除该秘密并创建一个新的。@jogold您能给我一个如何使用addtargetAttachment()的代码示例吗。我想将我的新RDS数据库添加到机密管理器“Y”中,比如“X”。此方法要传递的正确参数是什么。@user3742114在v1.19.0中,这里有一个示例,在下一个版本中将会更改