如何在CloudFormation用户数据中传递导入的值

时间:2017-08-07 04:59:22

标签: amazon-web-services amazon-cloudformation

我从另一个堆栈导入AZ名称,并希望通过Launchconfig的userdata传递它。原因是能够以不同的方式运行cron作业,具体取决于实例的AZ。我尝试了各种组合,但无法使其发挥作用

以下是CloudFormation :: Init

的文件部分中的代码
Metadata:
AWS::CloudFormation::Init:
config:
 packages:
  yum:
   httpd: []
 files:
  /home/ec2-user/cronsetup.sh:
   content: !Sub |
    #!/bin/bash
    instanceaz=`curl http://169.254.169.254/latest/meta-data/placement/availability-zone`
    subnetaz=Fn::ImportValue: !Sub ${NetworkStackName}-PublicAZ1

    if [[ "instanceaz" == "subnetaz" ]]
    then
     echo "15 * * * * /home/ec2-user/script.sh" >> /var/spool/cron/ec2-user
    else
     echo "30 * * * * /home/ec2-user/script.sh" >> /var/spool/cron/ec2-user
    fi

这是文件的输出,其中s1 = NetworkStackName -

subnetaz=Fn::ImportValue: !Sub s1-PublicAZ1

我希望看到的是subnetaz=us-west-2a

我也尝试过:

subnetaz=[${x},x: Fn::ImportValue: !Sub ${NetworkStackName}-PublicAZ1]

但这会产生模板格式错误。

0 个答案:

没有答案