【问题标题】:CloudFormation UserData template to write RDS endpoint in a configuration file of the EC2 [duplicate]CloudFormation UserData 模板用于在 EC2 的配置文件中写入 RDS 端点 [重复]
【发布时间】:2021-12-20 01:30:46
【问题描述】:

我的 CloudFormation 脚本的一部分被卡住了:我有一个带有 Docker 灯的 EC2 和用 Docker-compose 文件定义的 Wordpress,以及 VPC 中的一个单独的 RDS 数据库。

每次创建堆栈时,RDS 端点都会更改。我需要在 docker compose 文件中编写新端点以允许通信。我编写了一个 bash 脚本,通过替换 WORDPRESS_DB_HOST 行来更改此信息,没关系,但我无法正确传递端点,我认为这是一个语法问题,我无法找到解决方案。

UserData:
        Fn::Base64: 
          !Sub |
            #!/bin/bash -xe
            sed -i 's/WORDPRESS_DB_HOST.*/WORDPRESS_DB_HOST: {Fn::GetAtt: ["MasterDB", "Endpoint.Address"]}:3306 /' /home/ubuntu/lampconfig/docker-compose.yml 
            docker-compose up -d 

【问题讨论】:

    标签: bash amazon-web-services yaml amazon-cloudformation


    【解决方案1】:

    请参阅this question,了解如何在 Sub 中使用 Fn:GetAtt。您需要使用简短的语法:

    UserData:
            Fn::Base64: 
              !Sub |
                #!/bin/bash -xe
                sed -i 's/WORDPRESS_DB_HOST.*/WORDPRESS_DB_HOST: ${MasterDB.Endpoint.Address}:3306 /' /home/ubuntu/lampconfig/docker-compose.yml 
                docker-compose up -d 
    

    【讨论】:

      猜你喜欢
      • 2019-05-06
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多