es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Terraform “Crear alias de R53 para Punto de Enlace de Interfaz VPC con fallo en la coincidencia de la zona” – Pero la zona es correcta.

Estoy tratando de crear registros de alias de Route53 en una zona de alojamiento privado usando Terraform v0.13.6 y apuntando a un VPC Endpoint (vpce) y obtengo un error de la siguiente naturaleza:

Error al construir el conjunto de cambios: InvalidChangeBatch: [Se intentó crear un alias que apunta a ssm.us-west-2.amazonaws.com., tipo A en la zona [XXXX], pero el nombre objetivo del alias no se encuentra dentro de la zona objetivo] código de estado: 400

La zona a la que me estoy dirigiendo [XXXX] es de hecho la zona del VPCe, no la zona del DNS, por lo que con suerte he evitado ese error común.

Cuando veo el VPCe, ya sea a través de la consola o a través de la línea de comandos, veo la zona correcta en los resultados (una coincidencia con [XXXX]), por lo que el retorno de Terraform me está diciendo literalmente que el VPCe no está en la zona en la que la consola y la CLI dicen que está.

¡Cuando uso la consola para crear el registro de alias funciona perfectamente!

El VPCe está en dos subredes, por lo que hay tres (3) nombres de DNS en el registro de la consola de VPCe (aparentemente un registro genérico y uno para cada subred especificada) pero las zonas DNS son todas iguales, por lo que eso no debería ser un problema. En el código, uso el registro 0 y utilizo el nombre del endpoint genérico porque quiero resolución en ambas subredes en caso de fallo.

A continuación se muestra el código relevante. ¿Alguien tiene alguna idea de lo que podría estar sucediendo?

recurso "aws_route53_record" "endpoint_record" {
        para_cada = var.vpce
        proveedor = aws.algun_proveedor
        id_zona  = aws_route53_zone.private[each.key].zone_id
        nombre    = ""
        tipo    = "A"

     alias {
         nombre = each.value.url
         id_zona = aws_vpc_endpoint.ssm_endpoint[each.key].dns_entry[0].hosted_zone_id
         evaluar_salud_del_objetivo = true
     }
}

dependerá_de = [
    aws_route53_zone.private,
]

La URL en la llamada de alias es del tipo ssm.us-west-2.amazonaws.com, como se puede ver en el mensaje de error.

¿Alguna idea de lo que podría estar sucediendo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema se debe a que el parámetro name se ha dejado vacío en el recurso aws_route53_record.

    En Route53, un registro de alias debe tener el mismo nombre que el dominio al que resolverá, lo que significa que el parámetro name debe establecerse en el nombre de dominio al que deseas resolver el alias.

    Para solucionar este problema, debes configurar el parámetro name con el nombre de dominio al que deseas que se resuelva el alias. Por ejemplo, si deseas resolver example.com a tu punto de enlace VPC, entonces debes establecer name en example.com.

    Además, asegúrate de que la zona hospedada donde deseas crear el registro alias coincida con el ID de zona que especificas en el parámetro zone_id.

    Aquí tienes un ejemplo actualizado del código con el parámetro name configurado:

    resource "aws_route53_record" "endpoint_record" {
      for_each = var.vpce
      provider = aws.someprovider
      zone_id  = aws_route53_zone.private[each.key].zone_id
      name     = "example.com" # Cambia esto por el nombre de dominio al que deseas resolver al punto de enlace VPC
      type     = "A"
    
      alias {
        name                   = each.value.url
        zone_id                = aws_vpc_endpoint.ssm_endpoint[each.key].dns_entry[0].hosted_zone_id
        evaluate_target_health = true
      }
    
      depends_on = [
        aws_route53_zone.private,
      ]
    }
    

    ¡Espero que esto ayude!

Comments are closed.