在CloudFormation中使用Sub函数会阻碍bash脚本的使用吗?



我有以下UserData在一个CloudFormation LaunchTemplate的自动缩放组。前两个命令没有问题,而第三个命令没有被调用。没有Sub函数,一切都很顺利,但是我们的代码已经发展到需要将EBS变量传递到某个地方(但是不一定在bash脚本中)。我做这件事的方式不好吗?如果不是,我如何确保最后一行得到执行?

Fn::Base64: 
!Sub 
- |
#!/bin/bash
echo ${EBS} > /home/ubuntu/test.txt
aws s3 cp s3://s3url/script.sh /home/ubuntu
bash script.sh "$(curl http://169.254.169.254/latest/meta-data/local-ipv4)" "$(cat /home/ubuntu/test.txt)"
- {EBS: !Ref DevEBS} 

我使用了cloud-boothook,但是把它放在#!这里的/bin/bash似乎将用户锁定在与Sub函数一起使用时创建的实例之外(键不被接受?)

非常感谢您的帮助!

您正在复制您的脚本到/home/ubuntu。但是你的userdata运行在根文件夹。因此,您的后续命令将无法工作。你必须把cd到/home/ubuntu:

Fn::Base64: 
!Sub 
- |
#!/bin/bash
echo ${EBS} > /home/ubuntu/test.txt
aws s3 cp s3://s3url/script.sh /home/ubuntu
cd  /home/ubuntu  
bash script.sh "$(curl http://169.254.169.254/latest/meta-data/local-ipv4)" "$(cat /home/ubuntu/test.txt)"
- {EBS: !Ref DevEBS} 

最新更新