【问题标题】:Cloudformation send pararameters to launchconfiguration start-scriptCloudformation 发送参数以启动配置启动脚本
【发布时间】:2020-02-12 23:33:04
【问题描述】:

我正在尝试创建一个堆栈脚本,该脚本创建一个包含 EFS、MySQL 和 ASG 以及两台服务器的集群。 我想向启动脚本发送一些数据,例如 RDS 端点地址和 EFS 文件系统 ID:

UserData:
    Fn::Base64:
      !Sub |
        #!/bin/bash -x
        sed -i 's/fs-086*****/\"!Ref EFSCreateFS/"' /etc/fstab
        mount -a
        rm -rf /var/www/html/wordpress/*
        cp /var/tmp/wpress.tar /var/www/html/wordpress/
        cd /var/www/html/wordpress/ && tar -xf wpress.tar
        sed -i 's/wordpress.cl******.ap-southeast-1.rds.amazonaws.com/\"!GetAtt CreateDB.Endpoint.Address\"/' /var/www/html/wordpress/wp-config.php

但是请求 !Ref EFSCreateFS 和 !GetAtt CreateDB.Endpoint.Address 没有转换到它们的参数。 如果有人知道我如何发送参数,请帮忙。 提前谢谢大家。

【问题讨论】:

标签: amazon-web-services amazon-cloudformation


【解决方案1】:

AWS docs 之后,您应该使用与在 CloudFormation 中相同的语法来包含它们。例如对于 YAML:

UserData:
  Fn::Base64: !Sub |
     Ref: MyValue
     Ref: MyName
     Hello World

您还可以使用更类似于 bash 的语法。另一个例子:

UserData:
  Fn::Base64: !Sub |
     ACCESS_KEY=${AccessKey}
     SECRET_KEY=${SecretKey}

在您的情况下,您还需要为您的 CreateDB.Endpoint.Address 属性传递一个替代变量。示例:

UserData:
  Fn::Base64:
    Fn::Sub:
      - |
        ACCESS_KEY=${AccessKey}
        SECRET_KEY=${SecretKey}
        echo "my db endpoint address ${MyDB}"
      - MyDB: !GetAtt CreateDB.Endpoint.Address

所以,在你的情况下,会变成:

UserData:
    Fn::Base64:
      Fn::Sub:
        - |
          #!/bin/bash -x
          sed -i 's/fs-086*****/\"${EFSCreateFS}/"' /etc/fstab
          mount -a
          rm -rf /var/www/html/wordpress/*
          cp /var/tmp/wpress.tar /var/www/html/wordpress/
          cd /var/www/html/wordpress/ && tar -xf wpress.tar
          sed -i 's/wordpress.cl******.ap-southeast-1.rds.amazonaws.com/\"${DBEndpointAddress}\"/' /var/www/html/wordpress/wp-config.php
        - DBEndpointAddress: !GetAtt CreateDB.Endpoint.Address

以下答案也可能对您有所帮助:UserData script with Resource Attribute CloudFormation

【讨论】:

  • 谢谢。有用。但没有间隙(/") Fn::Sub: - | #!/bin/bash -x sed -i 's/fs-086***/${EFSCreateFS}/' /etc/fstab mount -a rm - rf /var/www/html/wordpress/* cp /var/tmp/wpress.tar /var/www/html/wordpress/ cd /var/www/html/wordpress/ && tar -xf wpress.tar sed -i ' s/wordpres****.ap-southeast-1.rds.amazonaws.com/${DBEndpointAddress}/' /var/www/html/wordpress/wp-config.php - DBEndpointAddress: !GetAtt CreateDB.Endpoint.Address
猜你喜欢
  • 2016-05-09
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2020-04-30
  • 1970-01-01
相关资源
最近更新 更多