在AWS Resource Access Manager中通过Terraform与多个AWS账户共享多个DNS域

时间:2020-11-04 14:19:26

标签: amazon-web-services amazon-route53 terraform-provider-aws resource-access-manager

我正在使用AWS Route53解析程序将发送到内部域列表的DNS请求转发到内部(内部)列表。通过terraform,我想与公司的其他帐户共享我创建的规则,因此我需要以下内容:

# I create as much share endpoint as domain I have, so If I have 30 domains, I'll make 30 endpoint RAM:
resource "aws_ram_resource_share" "endpoint_share" {
  count                     = length(var.forward_domain)
  name                      = "route53-${var.forward_domain[count.index]}-share"
  allow_external_principals = false
}
# Here I share every single endpoint with all the AWS ACcount we have 
resource "aws_ram_principal_association" "endpoint_ram_principal" {
  count              = length(var.resource_share_accounts)
  principal          = var.resource_share_accounts[count.index]

  resource_share_arn = {
    for item in aws_ram_resource_share.endpoint_share[*]:
        item.arn
  }
}

最后一个块调用第一个列表的arn输出。 现在,这最后一个块不起作用,我不知道如何使用多个计数,当我运行它时,出现以下错误:

Error: Invalid 'for' expression

line 37: Key expression is required when building an object.

有什么主意要怎么做吗?

Terraform version: 0.12.23

1 个答案:

答案 0 :(得分:0)

在 resource_share_arn 中使用方括号,如下所示:

resource_share_arn = [
  for item in aws_ram_resource_share.endpoint_share[*]:
    item.arn
]