我有以下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}