【问题标题】:Does using the Sub function in CloudFormation hinder the use of bash scripts?在 CloudFormation 中使用 Sub 函数会妨碍 bash 脚本的使用吗?
【发布时间】:2021-11-11 18:01:47
【问题描述】:

我在 Auto Scaling 组的 CloudFormation LaunchTemplate 中有以下 UserData。前两个命令没有问题,第三个没有被调用。没有 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,但是在与 Sub 函数一起使用时,将其放在 #!/bin/bash 之前似乎会将用户锁定在创建的实例之外(密钥不被接受?)。

非常感谢您的帮助!

【问题讨论】:

  • 使用set -x 这样你就可以得到错误的调试输出。
  • @jordanm 的语法是什么样的?
  • 字面意思是set -x#!/bin/bash 之后。

标签: amazon-web-services cloud amazon-cloudformation infrastructure-as-code


【解决方案1】:

您正在将脚本复制到/home/ubuntu。但是您的用户数据在 根文件夹 中运行。因此,您的后续命令将不起作用。你必须 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} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2020-06-17
    • 2019-12-22
    • 2020-11-26
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    相关资源
    最近更新 更多