terraform - 如何获取弹性负载均衡器的 DNS 名称?

标签 terraform

我通过 terraform 创建了一个弹性 beanstalk 环境。我想添加一条指向负载均衡器 dns 的 Route53 记录,但我不知道如何从 EB 环境的输出中获取完整的 url。

aws_elastic_beanstalk_environment.xxx.load_balancers 属性包含名称,但不包含 FQDN。

最佳答案

一旦你像这样创建了两个 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"
    }
}

文档包括here指定您可以使用“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"

关于terraform - 如何获取弹性负载均衡器的 DNS 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40219700/

相关文章:

Terraform - 模块的资源依赖

amazon-web-services - 配置 Terraform AWS Provider 时出错 - Linux

google-cloud-platform - 如何使用 terraform 在 Google Compute Engine 上启用允许 HTTP 流量/允许 HTTP 流量

amazon-web-services - Terraform - 为变量指定多个可能的值

azure - 使用 terraform 输出恢复 Azure ARm 模板的输出值

amazon-web-services - KMS加密后无法从S3下载文件

postgresql - 如何使用 terraform 为 RDS postgres 数据库用户提供 AWS IAM 身份验证?

azure - 向 azurerm 虚拟机提供文件期间连接超时

azure - 分割逗号分隔的字符串

terraform - 如何在 terraform 中为对象设置默认值?