AWS :: CloudFormation :: Init不在元数据中执行命令

时间:2016-08-24 04:28:07

标签: amazon-web-services amazon-cloudformation

这是我在元数据中带有测试命令的模板。我无法弄清楚为什么命令没有被执行。它应该将字符串保存到/ tmp中的文件中。 该机器是安装了cloud-init的Ubuntu 16.04。在UserData中,我安装了帮助程序脚本并执行cfn-init。

感谢您的帮助。

{
  "AWSTemplateFormatVersion": "2010-09-09",
  "Metadata": {
    "AWS::CloudFormation::Designer": {
      "2af5b799-f6bf-7f20-a6eb-943274f18373": {
        "size": {
          "width": 60,
          "height": 60
        },
        "position": {
          "x": 326,
          "y": 118
        },
        "z": 0,
        "embeds": []
      }
    }
  },
  "Resources": {
    "EC2I3WADD": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId": "ami-c60b90d1",
        "KeyName": "CF-KEY",
        "InstanceType": "t2.micro",
        "UserData": {
          "Fn::Base64": {
            "Fn::Join": [
              "",
              [
                "#!/bin/bash -xe\n",
                "apt-get -y install python-setuptools\n",
                "mkdir aws-cfn-bootstrap-latest\n",
                "curl https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-latest.tar.gz | tar xz -C aws-cfn-bootstrap-latest --strip-components 1\n",
                "easy_install aws-cfn-bootstrap-latest\n",
                "/usr/local/bin/cfn-init --stack ",
                {
                  "Ref": "AWS::StackName"
                },
                " --resource WebServer",
                " --region ",
                {
                  "Ref": "AWS::Region"
                },
                "\n"
              ]
            ]
          }
        }
      },
      "Metadata": {
        "AWS::CloudFormation::Designer": {
          "id": "2af5b799-f6bf-7f20-a6eb-943274f18373"
        },
        "AWS::CloudFormation::Init": {
          "config": {
            "commands": {
              "test": {
                "command": "echo \"$MAGIC\" > /tmp/test.txt",
                "env": {
                  "MAGIC": "I come from the environment!"
                }
              }
            }
          }
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

问题很可能是因为在UserData中传递给cfn-init命令的$('#show_more').click(function(){ // show the show_more_popup popup }); 参数不正确。在您的情况--resource中,此参数应与包含MetaData的资源的逻辑资源名称匹配。

EC2I3WADD

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html