CloudFormation UserData 模板,用于在 EC2 的配置文件中写入 RDS 端点
CloudFormation UserData template to write RDS endpoint in a configuration file of the EC2
我被 CloudFormation 脚本的一部分卡住了:我有一个带有 Docker lamp 的 EC2 和一个用 Docker-compose 文件定义的 Wordpress,以及一个单独的文件VPC中的RDS数据库。
每次创建堆栈时,RDS 端点都会发生变化。我需要在 docker 撰写文件中写入新端点以允许通信。我写了一个 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
请参阅 了解如何在 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
我被 CloudFormation 脚本的一部分卡住了:我有一个带有 Docker lamp 的 EC2 和一个用 Docker-compose 文件定义的 Wordpress,以及一个单独的文件VPC中的RDS数据库。
每次创建堆栈时,RDS 端点都会发生变化。我需要在 docker 撰写文件中写入新端点以允许通信。我写了一个 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
请参阅
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