amazon-ec2 – 是否有可能在亚马逊云形成中强制重新创建EC2 :: Instance或RDS :: DBInstance?

可以使用云形式堆栈强制重新创建EC2或RDS实例吗?

我的堆栈陷入了一个简单地破坏和创建资源将修复它的点,而不是我必须删除整个堆栈才能继续工作.

编辑:

这个问题让我吃了两次.首先,我创建了一个带有一些默认值的AWS :: RDS :: Instance,然后尝试将其降级为“EngineVersion”:“5.5”.改变这种情况会发生一些中断,但是mysql实例不能从5.6降级到5.5,因此堆栈处于UPDATE_FAILED状态,我无法在没有令人讨厌的技巧的情况下重新创建RDS.

另一个例子是我有几个“AWS :: EC2 :: Instance”从它的“UserData”下载并执行脚本,如果Y更改下载的脚本我必须重新创建实例,并且没有办法这样做.我再次使用相同的讨厌技巧来重新创建机器.

令人讨厌的伎俩:

我没有使用一台机器的自动缩放组,而是解决了改变属性中可用区域的两个问题……但让我感觉不好

例如,存储支持的EC2实例,一个技巧是向包含版本号,日期或类似的用户数据脚本添加注释,然后在您希望重新创建实例时更改该注释:

{
    "Resources" : {
        "MyEC2Instance" : {
            "Type" : "AWS::EC2::Instance",
            "Properties" : {
                // ... other properties ...
                "UserData": { 
                    "Fn::Base64" : {
                        "Fn::Join" : [ ":", [
                        "#!/bin/bash\n",
                        "# Version: 1.0\n",
                        // ... rest of user data ...
                    ]]}
            }
        }
    }
}

对UserData的任何更改都将导致实例被替换(即重新生成).但是,用户数据脚本的行为应该相同,因为唯一的修改是注释.请注意,这不适用于EBS支持的实例.

对于RDS,您可以获取当前RDS实例的DB snapshot,然后修改模板以将该快照与DBSnapshotIdentifier一起使用:

{
    "Resources" : {
        "MyDB" : {
        "Type" : "AWS::RDS::DBInstance",
        "Properties" : {
            // ... other properties ...
            "DBSnapshotIdentifier": "<db snapshot ID>"
        }
    }    
}

每当更改DBSnapshotIdentifier时,都将替换数据库实例.使用快照还可以保留创建快照时的数据. (如果要擦除数据,可以创建一个空快照并将其作为输入传递.或者删除并重新创建整个CloudFormation堆栈.)

更通用的方法是更改​​资源的逻辑名称.从CloudFormation文档中的Modifying a Stack Template开始:

For most resources, changing the logical name of a resource is equivalent to deleting that resource and replacing it with a new one. Any other resources that depend on the renamed resource also need to be updated and might cause them to be replaced. Other resources require you to update a property (not just the logical name) in order to trigger an update.

翻译自:https://serverfault.com/questions/539959/is-it-possible-to-force-re-creation-of-ec2instance-or-rdsdbinstance-in-amazo

转载注明原文:amazon-ec2 – 是否有可能在亚马逊云形成中强制重新创建EC2 :: Instance或RDS :: DBInstance?