Cloudformation отправляет параметры в start-скрипт запуска конфигурации - PullRequest
0 голосов
/ 16 октября 2019

Я пытаюсь создать сценарий стека, который создает кластер с EFS, MySQL и ASG с двумя серверами. Я хочу отправить некоторые данные в сценарий запуска, такие как адрес конечной точки RDS и идентификатор файловой системы EFS:

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 не взаимодействуют с их параметрами. Если у кого-то есть идея, как я могу отправить параметры, пожалуйста, помогите. Заранее благодарю всех.

1 Ответ

0 голосов
/ 16 октября 2019

Следуя AWS документам , вы должны включить их, используя тот же синтаксис, что и в 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 с атрибутом ресурса CloudFormation

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...