在另一个AWS账户中使用Route 53进行Terraform

时间:2020-02-26 07:50:15

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

我有一个terraform脚本,用于部署包含route53记录的微服务(在这里叫 myservice )。

该脚本在东京区域可以正常运行,因为该区域具有 myservice 所需的所有AWS服务。

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

由于在AWS中国中不存在route53,目前我的解决方案是在普通的AWS账户(即包含东京,俄亥俄州,俄勒冈州的AWS账户)中手动设置中国的 myservice 的域名。 ...地区)。

例如,将www.myservice.com.cn指向C myservice-ningxia-elb-1234567890.cn-northwest-1.elb.amazonaws.com.cn的CNAME记录,这是宁夏地区的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表明我们可以使用以下代码在aws_route53_zone区域中创建cn-northwest-1

# 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。

1 个答案:

答案 0 :(得分:0)

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

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

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