我从另一个堆栈导入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]
但这会产生模板格式错误。