Terraform для AWS: передача конкретного адреса ресурса на основе зоны доступности экземпляра beanstalk.

Настройка

У меня есть система с приложением beanstalk, которое может охватывать несколько зон доступности. Приложению необходимо получать данные от экземпляров ElastiCache, но они должны быть наиболее близкими друг к другу.

Например, beanstalk запускает экземпляры B1 и B2 в зонах доступности A и B. В зоне доступности A есть первичный экземпляр ElastiCache E1, а реплика чтения в B - это E2.

B1 должен связаться с E1, а B2 должен получить данные от E2 для повышения эффективности.

Вопрос

Как в Terraform сообщить системе, что нужно передавать конкретный адрес экземпляров ElastiCache в зависимости от зоны доступности, в которой они созданы? Если правило автоматического масштабирования для beanstalk обнаруживает высокую загрузку ЦП и создает новый экземпляр в зоне доступа A, мне нужно, чтобы адрес E1 передавался в качестве переменной, но если новый экземпляр создается в зоне зоны действия B, то я нужно передать адрес E2.

Возможно ли это в Terraform (0.12), и если да, то как?


person JSBach    schedule 05.12.2019    source источник


Ответы (1)


Сотрудник предложил следующее: при создании экземпляров Redis зарегистрируйте их адреса в хранилище параметров с именем, содержащим идентификатор зоны. Затем, когда экземпляр EC2 раскручивается, часть кода инициализации вызывает 169.254.169.254, чтобы получить метаданные для экземпляра, которые включают идентификатор зоны доступности. Затем он может получить адрес экземпляра Redis в этой зоне. Коротко и мило!

person JSBach    schedule 19.12.2019