如何在云形成中更新用户数据?

How to update user data in cloud formation?

我是云形成的新手! 我们如何更新云形成中的用户数据,更新堆栈是否也更新 UserData 内部更改的任何内容?如果不是,我们如何更新用户数据更改?谢谢!

"UserData": {
    "Fn::Base64": {
        "Fn::Join": [
            "",
            [
                "#!/bin/bash\n",
                "apt-get update\n",
                "apt-get -y upgrade\n",
            ]
        ]
    }
}

可以更新用户数据,但需要停止和启动 EBS 支持的实例:

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-userdata

要更新 cloudformation 模板中的任何内容,您 运行 使用新的或更新的 cloudformation 模板作为输入参数的 update-stack 命令。然后 AWS 只会更改您已更改的组件。因此,如果在您 运行 update-stack 时更改了 userData 部分中的任何行,AWS 将再次 运行 遍历整个 userData 部分。

这也意味着如果您的更改需要更新用户数据,您的 EC2 实例将被销毁并替换为新实例。

更新: 如果您的 EC2 实例正在使用 EBS 驱动器并且您先将其关闭,则可以在不破坏的情况下更新您的 EC2 实例用户数据。但我认为这是一种反模式。 EC2 实例只是一个虚拟机。你应该保持它不变。如果需要更改,请重建实例。

"Fn::Join": [
        "/n",
        [
            "#!/bin/bash",
            "apt-get update",
            "apt-get -y upgrade",
        ]

其实这才是正确的做法。不知道是不是你这边打错了