gpt4 book ai didi

amazon-web-services - Terraform:在另一个资源中引用在 for_each 中创建的资源

转载 作者:行者123 更新时间:2023-12-04 02:32:09 27 4
gpt4 key购买 nike

当我只有一个托管区域时,我很容易创建该区域,然后通过按名称引用托管区域在委派帐户中为该区域创建 NS 记录。

  • 编辑 为了避免混淆,这是我想要实现的,但对于多个托管区域,域的所有者是管理帐户:https://dev.to/arswaw/create-a-subdomain-in-amazon-route53-in-2-minutes-3hf0

  • 现在我需要创建多个托管区域并将名称服务器记录传递回父帐户,我不确定它是否可能(或如何)引用多个资源。阅读这个可能没有多大意义,所以下面的代码是我所掌握的。
    我现在有一个 for_each循环将遍历字符串列表并为每个字符串创建一个托管区域,然后我想在另一个帐户中创建相应的 NS 记录,请注意我使用的是单独的提供程序 provider = aws.management_account连接到管理帐户,这适用于单个托管区域。
    我不知道如何引用托管区域,是否有一些语法或我的方法错误?
    resource "aws_route53_zone" "public_hosted_zone" {
    for_each = local.aws_zones
    name = "${each.value}.${var.domain}"
    }

    resource "aws_route53_record" "ns_records" {
    for_each = local.aws_zones
    provider = aws.management_account
    allow_overwrite = true
    name = "${each.value}.${var.domain}"
    ttl = 30
    type = "NS"
    zone_id = data.aws_ssm_parameter.public_hosted_zone_id.value

    records = [
    aws_route53_zone.public_hosted_zone.name_servers[0], # Here is my old code which works for a single hosted zone but I cannot work out how to reference multiples created above
    aws_route53_zone.public_hosted_zone.name_servers[1],
    aws_route53_zone.public_hosted_zone.name_servers[2],
    aws_route53_zone.public_hosted_zone.name_servers[3]
    ]
    }

    最佳答案

    由于您的 local.aws_zones设置 ["dev", "test", "qa"], 你的 aws_route53_zone.public_hosted_zone将是一个带有键“dev”、“test”、“qa”的 map 。
    因此,在您的 aws_route53_record 中使用它, 你可以试试:

    resource "aws_route53_record" "ns_records" {
    for_each = local.aws_zones

    # other attributes

    records = aws_route53_zone.public_hosted_zone[each.key].name_servers
    }

    关于amazon-web-services - Terraform:在另一个资源中引用在 for_each 中创建的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63641187/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com