似乎AWS::CloudFormation::Init
的配置部分包含files
和commands
小节。但是UserData
中还有Base64编码的Properties
,它在我拥有的示例脚本中调用cfn-init
:
"Fn::Base64": {
"Fn::Join": [
"",
[
"<script>\n",
"cfn-init.exe -v -s ", {
"Ref": "AWS::StackId"
},
" -r MyInstance",
" --region ", {
"Ref": "AWS::Region"
},
"\n",
..................
我的问题是 - 您是否需要从cfn-init
手动拨打UserData
才能执行AWS::CloudFormation::Init
中的说明?如果是这样,为什么呢?为什么不自动启动它,所以如果存在,配置部分总是被执行?
答案 0 :(得分:1)
cfn-init.exe
是EC2实例上的本地组件,它返回到CloudFormation堆栈以执行AWS::CloudFormation::Init
部分内的命令。
我不知道,但我相信它没有将实际脚本放在用户数据中的原因是它不想修改用户数据,以防你有自己的脚本。此外,执行的命令可以是传递到CloudFormation脚本的参数的动态。 cfn-init.exe
工具可以读取这些值并明智地选择如何运行AWS::CloudFormation::Init
命令。
有关cfn-init.exe
在此处执行的操作的详细信息:
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html