是否需要从UserData调用cfn-init?

时间:2017-09-07 11:53:30

标签: amazon-web-services amazon-cloudformation

似乎AWS::CloudFormation::Init的配置部分包含filescommands小节。但是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中的说明?如果是这样,为什么呢?为什么不自动启动它,所以如果存在,配置部分总是被执行?

1 个答案:

答案 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