LaunchConfiguration Userdata 与 AWS::CloudFormation::Init 的区别

3
在CloudFormation模板中,使用Userdata部分的LaunchConfiguration资源定义初始化脚本与使用AWS::CloudFormation::Init元数据之间有什么区别?在什么情况下应该优先选择其中一种? 假设我需要基于此LaunchConfiguration设置EC2实例,安装Tomcat并定义一些配置文件,可能会从S3存储桶复制一些软件包。最好通过Userdata bash脚本或AWS::CloudFormation::Init部分完成它?
谢谢。
1个回答

4

最终目标都是一样的——在实例初始化时运行一些用户定义的操作。

启动配置(Launch Configuration)启动模板(Launch Template)允许您指定实例的配置,然后在多个地方重复使用它,无论是否使用CloudFormation。 启动配置 是特定于AutoScaling组的。如果您需要启动不在自动缩放组中的实例,请使用启动模板来实现相同的结果。

现在,在上述两种情况下,您可以使用UserData中的Bash脚本AWS::CloudFormation::Init

UserData中的Bash脚本就是Bash脚本。如果您熟悉它并且感到有信心可以只用Bash实现您所需的内容,那就去吧。AWS :: CloudFormation :: Init 是更高层次的抽象,简化了许多事情,例如文件创建,权限等。您可以仅使用Bash完成此操作,但它肯定会使它更易于维护。

需要注意的一件事是,Bash + UserData方法在所有云提供商上都可以直接运行,不受AWS等限制。Google、Azure等都会让您运行相同的脚本,只需进行一些微小的修改即可。 AWS :: CloudFormation :: Init是AWS特定的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接