将userdata文件传递到AWS Cloudformation堆栈

tse*_*set 6 amazon-web-services aws-cloudformation

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

ata*_*lor 12

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

{
  "Parameters": {
    "UserData": {
      "Type": "String"
    }
  },
  "Resources": {
    "Instance": {
      "Type" : "AWS::EC2::Instance",
      "Properties" : {
        "UserData" : { "Ref" : "UserData" },
        ...
      }
    },
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

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

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


jzo*_*mtn 1

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