¿Cómo soluciono el error CNAMEAlreadyExists al configurar un alias de CNAME para mi distribución de CloudFront?

7 minutos de lectura
0

Cuando configuro un alias de registro de nombre canónico (CNAME) para mi distribución de Amazon CloudFront, aparece el error «CNAMEAlreadyExists».

Breve descripción

No puede usar el mismo alias de CNAME para más de una distribución de CloudFront. Cuando el alias de CNAME que intenta añadir ya está asociado a otra distribución de CloudFront, aparece un error:

«One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: a123456b-c78d-90e1-23f4-gh5i67890jkl*"

Si tiene acceso a las distribuciones de origen y de destino, elimine manualmente la asociación del CNAME de la distribución de CloudFront existente. A continuación, asocie el CNAME a la nueva distribución de CloudFront.

Nota: Si quiere asociar el CNAME de forma manual, es posible que tenga que esperar a que se implemente el estado de la distribución anterior antes de continuar.

Si no conoce el identificador de la distribución, utilice la API de CloudFront ListConflictingAliases. Esto le permite encontrar información parcial sobre la distribución y el identificador de la cuenta del alias de CNAME conflictivo. A continuación, usa la API AssociateAlias para mover su CNAME de la distribución existente (distribución de origen) a la nueva distribución (distribución de destino). Utilice una de las siguientes resoluciones en función de su situación:

  • Para las distribuciones de origen y destino que estén en la misma cuenta, consulte la sección Uso de la API AssociateAlias para mover el CNAME.
  • Para ver las distribuciones de origen y destino entre cuentas, consulte la sección Desactivar la distribución de origen con el CNAME conflictivo.
  • Si no puede desactivar la distribución de origen debido al tiempo de inactividad del tráfico existente, consulte Usar un comodín para mover el nombre de dominio alternativo.
    Nota: No puede usar un comodín para mover un dominio de vértice (example.com). Para mover un dominio de vértice cuando las distribuciones de origen y destino se encuentran en diferentes cuentas de AWS, póngase en contacto con AWS Support para mover un nombre de dominio alternativo.

Resolución

Uso de la API AssociateAlias para mover el CNAME

Nota: Si se produce algún error durante la ejecución de los comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

1.    En la política de AWS Identity and Access Management (IAM) del usuario o rol que realiza la solicitud de API, añada los siguientes permisos de nivel de recurso:

Importante: El usuario o rol de IAM que realiza la solicitud debe tener estos permisos de nivel de recurso tanto en la distribución de origen como en la distribución de destino.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CloudFrontCnameSwapSameAcc",
      "Effect": "Allow",
      "Action": [
        "cloudfront:GetDistribution",
        "cloudfront:ListConflictingAliases",
        "cloudfront:AssociateAlias",
        "cloudfront:UpdateDistribution"
      ],
      "Resource": [
        "arn:aws:cloudfront::SourceAcccount:distribution/SourceDistroID",
        "arn:aws:cloudfront::TargetAccount:distribution/TargetDistroID"
      ]
    }
  ]
}

Nota: Sustituya SourceAcccount por el número de cuenta de AWS de la distribución de origen. Sustituya SourceDistroID por el identificador de la distribución de origen. Sustituya TargetAccountID por el número de cuenta de AWS de la distribución de destino. Sustituya TargetDistroID por el identificador de la distribución de destino.

2.    Identifique la distribución con el CNAME conflictivo. Si no sabe qué distribución tiene el CNAME conflictivo, use la API ListConflictingAliases para encontrar esa distribución:

$ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME

Nota: Sustituya YourDistributionID por el identificador de su distribución. Sustituya YourCNAME por el alias de CNAME conflictivo.

3.    Para verificar la propiedad del dominio, debe tener acceso de lectura a YourDistributionID. También debe tener un certificado SSL asociado a la distribución de CloudFront que proteja el CNAME conflictivo.

Cuando esté listo para verificar la propiedad, cree un registro DNS TXT para el CNAME que se resuelva con el nombre canónico de la distribución de destino. El registro TXT debe incluir un carácter de subrayado antes del CNAME, el dominio de vértice o el comodín:

_.example.com.         900   IN   TXT     "dexample123456.cloudfront.net"
_cname.example.com.    900   IN   TXT     "dexample123456.cloudfront.net"
_*.example.com.        900   IN   TXT     "dexample123456.cloudfront.net"

4.    Compruebe que la distribución de destino tenga un certificado SSL válido.

Nota: El nombre del sujeto o el nombre alternativo del sujeto deben coincidir o superponerse con el alias de CNAME dado. Se recomienda tener un certificado válido emitido por una CA de confianza que figure en la lista de certificados de CA de Mozilla o en AWS Certificate Manager.

5.    Ejecute la solicitud de la API AssociateAlias desde la cuenta propietaria de la distribución de destino:

$ aws cloudfront associate-alias --target-distribution-id YourTargeDistributiontID --alias your_cname.example.com

Desactive la distribución de origen con el CNAME conflictivo

Si la distribución de origen y la distribución de destino están en cuentas de AWS diferentes, desactive primero la distribución de origen que está asociada al dominio conflictivo. A continuación, use la API AssociateAlias para mover el CNAME.

Puede utilizar el comando associate-alias para mover dominios de vértice entre diferentes cuentas de AWS

1.    Abra la consola de CloudFront.

2.    En el panel de navegación, elija Distribuciones

3.    Seleccione la distribución de origen y, a continuación, elija Desactivar.

Si no sabe qué distribución tiene el CNAME conflictivo, use la API ListConflictingAliases para encontrar esa distribución. Sustituya YourDistributionID por el identificador de su distribución y YourCNAME por el nombre del CNAME conflictivo:

$ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME

Nota: La API ListConflictingAliases requiere los permisos GetDistribution y ListConflictingAliases.

Tras desactivar la distribución de origen, siga los pasos de la sección Uso de la API AssociateAlias para mover el CNAME.

Si no tiene acceso a la cuenta de AWS con la distribución de origen o si no puede desactivarla, póngase en contacto con AWS Support.

Usar un comodín para mover el nombre de dominio alternativo

Si su distribución de origen y su distribución de destino están en cuentas diferentes, pero no puede desactivar la distribución de origen, mueva el CNAME. Para ello, utilice un comodín. Para llevar a cabo este proceso, debe tener acceso tanto a la distribución de origen como a la distribución de destino.

Este proceso implica varias actualizaciones de las distribuciones de origen y destino. Espere a que cada distribución implemente por completo el cambio más reciente antes de continuar con el siguiente paso.

1.    Actualice la distribución de destino para añadir un CNAME comodín que cubra el nombre de dominio alternativo que desea mover. Si su dominio es www.example.com, añada el nombre de dominio alternativo comodín *.example.com a la distribución de destino.

Nota: Debe tener un certificado SSL/TLS en la distribución de destino que proteja el nombre de dominio comodín

2.    Actualice la configuración de DNS del CNAME para que apunte al nombre canónico de la distribución de destino. Por ejemplo, si su dominio es www.example.com, actualice el registro DNS de www.example.com para dirigir el tráfico al nombre canónico de la distribución de destino:

www.example.com.         86400   IN   CNAME     "dexample123456.cloudfront.net"

Nota: Incluso después de actualizar la configuración de DNS, la distribución de origen atiende las solicitudes que utilizan el nombre de dominio alternativo. Esto se debe a que el nombre de dominio alternativo sigue asociado a la distribución de origen.

3.    Actualice la distribución de origen para eliminar el nombre de dominio alternativo.

Nota: Durante este paso, no se interrumpe el tráfico activo. Dado que el nombre de dominio solicitado coincide con el dominio comodín que se agrega a la distribución de destino, el tráfico activo utiliza la configuración de la distribución de destino.

4.    Para añadir el nombre de dominio alternativo que desea mover, actualice la distribución de destino.

5.    Para validar el registro DNS del CNAME, use dig o una herramienta de consulta de DNS similar:

dig CNAME www.example.com +short
nslookup example.com

6.    (Opcional) Para eliminar el nombre de dominio alternativo comodín, actualice la distribución de destino.

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año