Как мне получить DNS-имя elastic load balancer?

#terraform

#terraform

Вопрос:

Я создал среду elastic beanstalk с помощью terraform. Я хотел бы добавить запись route53, указывающую на dns балансировщика нагрузки, но я не могу понять, как получить полный URL-адрес из выходных данных среды EB.

Свойство aws_elastic_beanstalk_environment.xxx.load_balancers содержит имя, но не полное доменное имя.

Комментарии:

1. На самом деле, возможно, мне следует указывать на cname, который находится в выходных данных среды

Ответ №1:

Как только вы создадите оба ресурса beanstalk следующим образом

 resource "aws_elastic_beanstalk_application" "eb_app" {
    name = "eb_app"
    description = "some description"
}

resource "aws_elastic_beanstalk_environment" "eb_env" {
    name = "eb_env"
    application = "${aws_elastic_beanstalk_application.eb_app.name}"
    solution_stack_name = "64bit Amazon Linux 2015.03 v2.0.3 running Go 1.4"
    setting {
        namespace = "aws:ec2:vpc"
        name      = "VPCId"
        value     = "something"
    }

    setting {
        namespace = "aws:ec2:vpc"
        name      = "Subnets"
        value     = "somethingelse"
    }
}
  

В документации, включенной сюда, указано, что вы можете использовать ‘cname’ для вывода полного DNS-имени для среды

Для этого вам следует написать что-то вроде

 output "cname" {
  value = "${aws_elastic_beanstalk_environment.eb_env.cname}"
}
  

Затем в том же каталоге, в котором вы вызвали модуль, вы могли бы

 cname_to_pass_to_route53 = "${module.some_eb_module.cname}"
  

Если cname не является точной версией URL-адреса, который вам нужен, вы могли бы добавить имя переменной при ее передаче. Однако там указано полное DNS-имя, поэтому я не думаю, что вам нужно это делать.

 cname_to_pass_to_route53 = "maybeHere://${module.some_eb_module.cname}/orOverHere"
  

Комментарии:

1. Это более подробная версия моего комментария, но я дам вам баллы за усилия!