3
votes

Récupérer zone_id du domaine hébergé sur route53 à l'aide de terraform

Salut, je crée un enregistrement route53 avec terraform, j'ai déjà un domaine hébergé (public), disons example.com comment récupérer son zone_id et l'attacher à l'enregistrement. Comment puis-je récupérer le zone_id de la zone hébergée route53 existante. Je l' ai écrit un fichier , mais ce qu'il fait , il crée une autre zone hébergée example.com plutôt que la récupération existante example.com

resource "aws_route53_zone" "main" {
  name = "example.com"
}

resource "aws_route53_record" "www" {
  zone_id = data.aws_route53_zone.selected.zone_id 
  name    = "dev.${data.aws_route53_zone.selected.name}"
  type    = "A"
  alias {
    name                   = var.alb_dns
    zone_id                = var.zone_id
    evaluate_target_health = false
  }
}


0 commentaires

3 Réponses :


2
votes

Dans terraform, les sources de données peuvent être utilisées pour récupérer des informations lors de l'exécution. Le fournisseur AWS comprend une source de données pour les zones route53. Voici un exemple de son utilisation:

data "aws_route53_zone" "selected" {
  name         = "test.com."
}

resource "aws_route53_record" "www" {
  zone_id = data.aws_route53_zone.selected.zone_id 
  name    = "dev.${data.aws_route53_zone.selected.name}"
  type    = "A"
  alias {
    name                   = var.alb_dns
    zone_id                = var.zone_id
    evaluate_target_health = false
  }
}


2 commentaires

cela donne une erreur Error: multiple Route53Zone found please use vpc_id option to filter


@ aws-noob Si vous avez plus d'un domaine avec le nom "test.com", vous devrez alors fournir des filtres supplémentaires afin qu'un seul domaine soit renvoyé. Consultez la documentation pour tous les paramètres acceptés par la source de données: registry.terraform.io/providers/hashicorp/aws/latest/docs/…



3
votes

Vous devez également ajouter private_zone = false

data "aws_route53_zone" "selected" {
  name         = "test.com."
private_zone = false
}

resource "aws_route53_record" "www" {
  zone_id = data.aws_route53_zone.selected.zone_id 
  name    = "dev.${data.aws_route53_zone.selected.name}"
  type    = "A"
  alias {
    name                   = var.alb_dns
    zone_id                = var.zone_id
    evaluate_target_health = false
  }
}


1 commentaires

`` `` data.aws_route53_zone.non-prod-zone: état de rafraîchissement ... -------------------------------- ---------------------------- ‌ ------------ Un plan d'exécution a été généré et est indiqué ci-dessous. Les actions sur les ressources sont indiquées par les symboles suivants: Terraform exécutera les actions suivantes: Planifier: 0 pour ajouter, 0 pour modifier, 0 pour détruire. `` Cela signifie qu'il ne peut pas récupérer la zone hébergée existante



0
votes

Ré-exigences:

  • J'ai déjà Hosted Zone (région: global chez AWS)
  • Je veux $ (teraform output) Hosted Zone Id pour une utilisation ultérieure dans les configurations

Solution:

  1. créer une ressource vide:
Outputs:

hosted_zone_test_envs_id = YOUR_HOSTED_ZONE_ID
  1. recours d'importation
resource "aws_route53_zone" "non-prod-zone" {
  name = var.non_prod_hosted_zone
}
  1. argumenter votre ressource avec le nom
terraform import aws_route53_zone.non-prod-zone YOUR_HOSTED_ZONE_ID
  1. $ (terraform refresh) affichera votre variable 🤠© 🠥 ³
resource "aws_route53_zone" "non-prod-zone" {}


0 commentaires