【问题标题】:Terraform using Route 53 in another AWS AccountTerraform 在另一个 AWS 账户中使用 Route 53
【发布时间】:2020-06-10 01:00:38
【问题描述】:

我有一个 terraform 脚本,它部署了一个包含 route53 记录的微服务(我们称之为 myservice)。

此脚本在东京地区运行良好,因为该地区拥有 myservice 所需的所有 AWS 服务。

现在我要将myservice部署到中国宁夏地区的cn-norhthwest-1。

由于AWS中国不存在route53,目前我的解决方法是在普通AWS账户(即包含Tokyo, Ohio, Oregon的AWS账户)手动设置中国的myservice的域名... 地区)。

例如,将www.myservice.com.cn指向一条CNAME记录myservice-ningxia-elb-1234567890.cn-northwest-1.elb.amazonaws.com.cn,这是一个ELB在宁夏地区的域名。

如何使用 terraform 自动化这个过程?

这是我的文件夹结构:

.
├── environments
│   ├── ningxia
│   │   ├── main.tf
│   │   └── versions.tf
│   └── tokyo
│       ├── main.tf
│       └── versions.tf
└── modules
    ├── cloud-init.yaml
    ├── outputs.tf
    ├── myservice.tf
    └── variables.tf

我可以通过运行在东京地区创建 myservice

cd environments && \
  terraform init && \
  terraform apply

这个post 表明我们可以使用以下代码在cn-northwest-1 区域中创建aws_route53_zone

# configure AWS provider for China region. 
provider "aws" {
  region    = "cn-northwest-1"
  access_key    = AK
  secret_key    = SK

  endpoints {
    route53 = "https://api.route53.cn"
  }
}

# create a route 53 pub zone
resource "aws_route53_zone" "test" {

  name = "bobtest3.cn"
  comment = "try to create a pub zone with terraform in China region v2!"
}

这怎么可能?

我什至在宁夏地区的 AWS 控制台中都找不到 route53。

【问题讨论】:

  • stackoverflow.com/a/52206826/2291321 回答你的问题了吗?
  • 不,“担任角色”在 AWS 中国账户和非中国账户之间不起作用。
  • 你有这方面的文件吗?我的印象是,在中国地区担任角色时,您只需要使用另一个 STS 端点。

标签: amazon-web-services terraform amazon-route53


【解决方案1】:

您可以通过外部数据使用自定义资源,如下所示:

data "external" "dns" {
  program = ["${path.module}/dns.sh"]
  query   = {
    region  = "${var.region}"
    profile = "${lower(var.env)}"
    dns  = "dnsname"
  }
}

只需编写一个连接到 route53 区域的 cli dns.sh 即可创建记录。

【讨论】:

  • 数据源不应该修改东西。如果您打算这样做,请使用 null_resourcelocal-exec 配置器,否则它将在每个计划或状态刷新时运行。
猜你喜欢
  • 2022-12-15
  • 2019-10-16
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多