Comment puis-je résoudre les erreurs qui s’affichent lorsque j'utilise AWS CloudFormation pour créer des jeux d'enregistrements Route 53 ?

Lecture de 7 minute(s)
0

Je souhaite résoudre les erreurs qui s’affichent lorsque j'utilise AWS CloudFormation pour créer un jeu d'enregistrements de ressources Amazon Route 53.

Résolution

Voici quelques erreurs courantes que vous pourriez rencontrer lorsque vous tentez de créer des jeux d'enregistrements Route 53 à l'aide de modèles AWS CloudFormation. Pour résoudre les problèmes, suivez les directives fournies pour chaque erreur.
Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), reportez-vous à la section Résoudre des erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Erreur : « No hosted zones named "domain.com" found »

Cette erreur se produit lorsque CloudFormation ne parvient pas à identifier le nom de la zone hébergée défini pour la propriété HostedZoneName. Pour résoudre cette erreur, vérifiez les étapes suivantes :

  • Vérifiez la valeur transmise à la propriété HostedZoneName et assurez-vous qu'elle inclut un point final (.). Le nom de la zone hébergée (tel que domain.com) requiert un point final pour être valide.
    Par exemple :

     SampleRecordSet:
        Type: AWS::Route53::RecordSet
        Properties:
          HostedZoneName: "domain.com."  #note trailing dot
          Name: image1.domain.com
          Type: CNAME
          TTL: '60'
          ResourceRecords:
           - new.example

    Si le nom de la zone hébergée contient déjà un point final, vérifiez si une zone hébergée portant ce nom existe déjà dans votre compte AWS. Avant de tenter de créer les jeux d'enregistrements, utilisez la commande AWS CLI suivante pour vérifier que le nom de la zone hébergée est disponible.

    aws route53 list-hosted-zones \                                                   
     --query 'HostedZones[?Name==`YOUR-HOSTED-ZONE-NAME`]'

    Remarque : Remplacez YOUR-HOSTED-ZONE-NAME dans la commande ci-dessus par la valeur transmise à la propriété HostedZoneName de votre pile CloudFormation.

  • Si la commande ci-dessus ne renvoie aucun enregistrement, cela signifie que la zone hébergée n'est pas disponible dans votre compte. Pour résoudre cette erreur, créez la zone hébergée avant de créer le RecordSet.

Erreur : « RRSet with DNS name a.domain.com is not permitted in zone domain-test.com. »

Cette erreur s'affiche si la valeur DNS transmise à la propriété Name de la ressource AWS::Route53::RecordSet ne correspond pas à la zone hébergée. Pour résoudre le problème, vérifiez les options suivantes.

  • La valeur transmise à la propriété Name dans la ressource AWS::Route53::RecordSet doit être un nom de domaine complet (FQDN). Vérifiez que vous transmettez un nom complet pour votre jeu d'enregistrements DNS. Par exemple, si votre domaine est domain.com, le nom doit ressembler à a.domain.com.Le fait de transmettre seulement « a » peut entraîner l'échec et une erreur, car il ne s'agit pas d'un nom de domaine complet.
  • Le nom DNS doit être un sous-domaine de la zone hébergée. Par exemple, si le nom de la zone hébergée est domain-test.com., la propriété Name de votre jeu d'enregistrements doit ressembler à xxxxx.domain-test.com.

Erreur : « No hosted zone found with ID: Z1234567XXXXXXXXXX »

Ce message d'erreur s'affiche si la valeur transmise à la propriété HostedZoneId est introuvable et ne peut être associée à votre compte. Pour résoudre cette erreur, vérifiez les options suivantes :

  • Vérifiez que la valeur d'ID de la zone hébergée fournie à la pile pour la ressource AWS::Route53::RecordSet est correcte et existe dans votre compte AWS.

  • Utilisez la commande AWS CLI suivante pour vérifier si l'ID de la zone hébergée est disponible dans votre compte :

     aws route53 get-hosted-zone --id Z1234567XXXXXXXXXX
  • Si la commande ci-dessus renvoie une erreur, cela signifie que l'ID de la zone hébergée n'est pas disponible dans votre compte AWS. Essayez de créer à nouveau la pile en transmettant une valeur d'ID de zone hébergée valide à la propriété HostedZoneId de la ressource AWS::Route53::RecordSet. Le jeu d'enregistrements est alors associé à une zone hébergée réelle qui existe dans Route 53.

Erreur : « Duplicate hosted zones for hosted zone name domain.com. »

Vous pouvez créer plusieurs zones hébergées dans Route 53 avec le même nom. Essayez de créer une ressource AWS::Route53::RecordSet en transmettant la propriété HostedZoneName. Toutefois, si plusieurs zones hébergées portent le même nom, un message d'erreur s’affiche.

Pour corriger cette erreur, ne définissez pas la propriété HostedZoneName pour la ressource AWS::Route53::RecordSet. Définissez plutôt la propriété HostedZoneID. Transmettez ensuite l'ID de la zone où vous souhaitez créer le jeu d'enregistrements. Par exemple :

 SampleRecordSet:
    Type: AWS::Route53::RecordSet
    Properties:
      HostedZoneId: "Z1234567XXXXXXXXXX"
      Name: image1.domain.com
      Type: CNAME
      TTL: '60'
      ResourceRecords:
       - new.example

Erreur : « Expected exactly one of [AliasTarget, all of [TTL, and ResourceRecords], or TrafficPolicyInstanceId], but found none in Change with [Action=CREATE, Name=a.domain.com., Type=A, SetIdentifier=null] »

Cette erreur s'affiche si vous n'avez pas défini toutes les propriétés requises pour la ressource AWS::Route53::RecordSet dans votre modèle. Chaque ressource Route 53 RecordSet requiert que vous définissiez certaines propriétés de configuration. Une erreur se produit lorsque ces propriétés obligatoires sont manquantes dans votre modèle. Pour résoudre cette erreur, vérifiez les options suivantes :

  • Définissez la propriété AliasTarget ou les propriétés TTL et ResourceRecords pour votre ressource AWS::Route53::RecordSet.

  • Si vous avez défini la propriété AliasTarget pour votre AWS::Route53::RecordSet, ne définissez PAS les propriétés TTL ou ResourceRecords dans la même ressource.

    Consultez l'exemple suivant pour définir uniquement la propriété AliasTarget, mais pas les propriétés TTL et ResourceRecords :

    SampleR53AliasRecord:
        Type: AWS::Route53::RecordSet
        Properties:
          Name: 'abc.domain.com'
          Type: A
          AliasTarget:
            DNSName: !GetAtt MyELB.DNSName
            HostedZoneId: !GetAtt MyELB.CanonicalHostedZoneNameID
          HostedZoneId: "Z1234567XXXXXXXXXX"
  • Si vous n'avez pas défini la propriété AliasTarget, vérifiez si vous avez défini à la fois les propriétés TTL et ResourceRecords.

  • Une erreur s’affiche également si vous ne définissez qu'une seule de ces propriétés. Si vous définissez la propriété ResourceRecords, vous devez également définir la propriété TTL dans votre modèle. De même, si vous définissez TTL, vous devez également définir ResourceRecords.

    L'exemple suivant montre comment définir uniquement les propriétés TTL et ResourceRecords :

    SampleRecordSet:
        Type: AWS::Route53::RecordSet
        Properties:
          HostedZoneId: "Z1234567XXXXXXXXXX"
          Name: image1.domain.com
          Type: CNAME
          TTL: '60'
          ResourceRecords:
           - new.example

Erreur : « Tried to create resource record set [name='a.domain.com.', type='A', set-identifier='null'] but it already exists »

Vous avez tenté de créer un jeu d'enregistrements d'alias dans une zone hébergée qui contient déjà un jeu d'enregistrements d'alias portant le même nom. Pour résoudre cette erreur, vérifiez les options suivantes :

  • Vérifiez que vous créez le jeu d'enregistrements d'alias dans la zone hébergée appropriée. Vérifiez que l'ID ou le nom de la zone hébergée correspond à la zone dans laquelle vous souhaitez créer le jeu d'enregistrements d'alias.
  • Vérifiez si le type d'enregistrement A ou CNAME que vous tentez de créer à l'aide de CloudFormation existe déjà dans la zone hébergée. Vous pouvez utiliser la commande AWS CLI suivante pour vérifier si l'enregistrement de ressource est déjà disponible dans la zone hébergée :
    aws route53 list-resource-record-sets \
    --hosted-zone-id YOUR-HOSTED-ZONE-NAME \
    --query 'ResourceRecordSets[?(Name==`YOUR-RESOURCE-RECORD-NAME` && Type==`YOUR-TYPE-OF-RECORD`)]
    Remarque : Remplacez YOUR-HOSTED-ZONE-NAME, YOUR-RESOURCE-RECORD-NAME et YOUR-TYPE-OF-RECORD dans la commande ci-dessus par les valeurs exactes répertoriées dans le message d'erreur.
  • Si la commande ci-dessus renvoie une valeur, utilisez CloudFormation pour supprimer cet enregistrement de votre zone hébergée avant de le créer. Réalisez une évaluation d'impact de votre application avant de supprimer manuellement cet enregistrement de votre zone hébergée. Réfléchissez bien à l'impact que la suppression de cet enregistrement pourrait avoir sur votre application avant de prendre cette mesure.

Informations connexes

Erreurs

AWS::Route53::RecordSet

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an