将userdata文件传递到AWS Cloudformation堆栈

时间:2016-07-05 04:22:34

标签: amazon-web-services amazon-cloudformation

我有一个shell脚本(userdata文件),想知道是否有一个CLI命令参数允许用户使用userdata文件启动Cloudformation堆栈?

2 个答案:

答案 0 :(得分:10)

在模板中,为实例userdata使用CloudFormation参数:

{
  "Parameters": {
    "UserData": {
      "Type": "String"
    }
  },
  "Resources": {
    "Instance": {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "UserData" : { "Ref" : "UserData" },
        ...
      }
    },
    ...
  }
}

假设您正在使用类似Unix的命令行环境,请像这样创建堆栈:

aws cloudformation create-stack --stack-name myStack \
    --template-body file://myStack.json \
    --parameters ParameterKey=UserData,ParameterValue=$(base64 -w0 userdata.sh)

答案 1 :(得分:1)

创建堆栈时,您的用户数据必须存在于CloudFormation模板中。您可以编写脚本以从文件中读取用户数据,并在创建堆栈之前将其插入CloudFormation堆栈。请注意,您可能需要对用户数据进行格式更改(请参阅http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-instance.html#cfn-ec2-instance-userdata)。