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 } }
3 Réponses :
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 } }
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/…
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 } }
`` `` 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
Ré-exigences:
Solution:
Outputs: hosted_zone_test_envs_id = YOUR_HOSTED_ZONE_ID
resource "aws_route53_zone" "non-prod-zone" { name = var.non_prod_hosted_zone }
terraform import aws_route53_zone.non-prod-zone YOUR_HOSTED_ZONE_ID
resource "aws_route53_zone" "non-prod-zone" {}