是否可以在 Cloud Formation 脚本中更改 RDS 实例的逻辑 ID?
Is it possible to change the Logical ID of an RDS instance in a Cloud Formation script?
我们的应用程序(开发、测试、生产等)有多个 AWS 堆栈。这些都是使用 Cloud Formation 模板创建的。在我之前的某个聪明人决定对产品堆栈使用与其他模板不同的模板。我想合并到只有一个 Cloud Formation 模板。
我已经对两个模板进行了文件比较,唯一的区别是 RDS 实例的逻辑 ID。所以我们有这样的东西:
"MyDbInstanceDev": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": "200",
"CopyTagsToSnapshot" : true,
"DBInstanceClass": "db.m3.medium",
经文:
"MyDbInstance": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": "200",
"CopyTagsToSnapshot" : true,
"DBInstanceClass": "db.m3.medium",
不过,如果我将逻辑 ID 从 "MyDbInstanceDev" 更改为 "MyDbInstance",cloud formation 认为我想删除现有的 RDS 实例并在原始模板所在的堆栈中创建一个新实例a 旧的逻辑 ID。
有什么方法可以更改逻辑 ID 并使我的所有堆栈都具有相同的模板而不会丢失 DB?
没有。你不能使用 CFT 来做到这一点,因为 CFT 会维护堆栈的状态(虽然你看不到它)。即使您重命名 DBInstance,如果您尝试删除堆栈,您将在以后遇到问题。
您可以使用 DBInstanceIdentifier 作为参数,每次您要创建数据库时,您都会创建一个新的堆栈部署而不是更新堆栈。 Logical Id
的CFT资源没有多大意义,除非你是auto naming
的资源。
要修复现有部署,请执行以下操作:
- 为使用的部署的数据库拍摄快照
MyDbInstanceDev
.
- 在中添加一个名为
RestoreFromDBSnapshotIdentifier
的参数
MyDbInstance
CFT.
- 在
MyDbInstance
中添加DBSnapshotIdentifier
属性,如果RestoreFromDBSnapshotIdentifier
不为空,则有条件地设置。
- 部署。
我们的应用程序(开发、测试、生产等)有多个 AWS 堆栈。这些都是使用 Cloud Formation 模板创建的。在我之前的某个聪明人决定对产品堆栈使用与其他模板不同的模板。我想合并到只有一个 Cloud Formation 模板。
我已经对两个模板进行了文件比较,唯一的区别是 RDS 实例的逻辑 ID。所以我们有这样的东西:
"MyDbInstanceDev": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": "200",
"CopyTagsToSnapshot" : true,
"DBInstanceClass": "db.m3.medium",
经文:
"MyDbInstance": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"AllocatedStorage": "200",
"CopyTagsToSnapshot" : true,
"DBInstanceClass": "db.m3.medium",
不过,如果我将逻辑 ID 从 "MyDbInstanceDev" 更改为 "MyDbInstance",cloud formation 认为我想删除现有的 RDS 实例并在原始模板所在的堆栈中创建一个新实例a 旧的逻辑 ID。
有什么方法可以更改逻辑 ID 并使我的所有堆栈都具有相同的模板而不会丢失 DB?
没有。你不能使用 CFT 来做到这一点,因为 CFT 会维护堆栈的状态(虽然你看不到它)。即使您重命名 DBInstance,如果您尝试删除堆栈,您将在以后遇到问题。
您可以使用 DBInstanceIdentifier 作为参数,每次您要创建数据库时,您都会创建一个新的堆栈部署而不是更新堆栈。 Logical Id
的CFT资源没有多大意义,除非你是auto naming
的资源。
要修复现有部署,请执行以下操作:
- 为使用的部署的数据库拍摄快照
MyDbInstanceDev
. - 在中添加一个名为
RestoreFromDBSnapshotIdentifier
的参数MyDbInstance
CFT. - 在
MyDbInstance
中添加DBSnapshotIdentifier
属性,如果RestoreFromDBSnapshotIdentifier
不为空,则有条件地设置。 - 部署。