2017-10-05 16 views
0

Je suis en train de mettre à jour un certain nombre de CNAME enregistrements à A hébergé sur Route53 en utilisant boto3, voici ma fonction:(InvalidChangeBatch) lorsque vous appelez l'opération ChangeResourceRecordSets - en utilisant boto3 à jour le dossier des ressources

def change_resource_record(domain, zone_id, hosted_zone_id, balancer_id): 
    print(domain, zone_id, hosted_zone_id, balancer_id) 
    client.change_resource_record_sets(
     HostedZoneId=zone_id, 
     ChangeBatch={ 
      "Comment": "Automatic DNS update", 
      "Changes": [ 
       { 
        "Action": "UPSERT", 
        "ResourceRecordSet": { 
         "Name": domain, 
         "Type": "A", 
         "AliasTarget": { 
          "HostedZoneId": hosted_zone_id, 
          "DNSName": balancer_id, 
          "EvaluateTargetHealth": False 
         } 
        } 
       }, 
      ] 
     } 
    ) 

Je reçois cette erreur:

Traceback (most recent call last): 
    File "load_balancer.py", line 138, in <module> 
    get_balancer(domain) 
    File "load_balancer.py", line 135, in get_balancer 
    change_resource_record(domain, zone_id, hosted_zone_id, balancer_id) 
    File "load_balancer.py", line 116, in change_resource_record 
    "EvaluateTargetHealth": False 
    File "C:\Python36\lib\site-packages\botocore\client.py", line 312, in _api_call 
    return self._make_api_call(operation_name, kwargs) 
    File "C:\Python36\lib\site-packages\botocore\client.py", line 601, in _make_api_call 
    raise error_class(parsed_response, operation_name) 
botocore.errorfactory.InvalidChangeBatch: An error occurred (InvalidChangeBatch) when calling the ChangeResourceRecordSets operation: RRSet of type A with DNS name suffix.domain.tld. is not permitted because a conflicting RRSet of type CNAME with the same DNS name already exists in zone domain.tld. 

Quelle est la bonne façon de mettre à jour l'enregistrement, devrais-je supprimer l'entrée, puis le recréer?

Tout conseil est très apprécié.

Répondre

0

J'ai eu une période de fermeture manquante dans le domain, changeant ainsi à cette résolu mon problème:

  "ResourceRecordSet": { 
       "Name": domain + '.', 
       "Type": "A", 
       "AliasTarget": { 
        "HostedZoneId": hosted_zone_id, 
        "DNSName": balancer_id, 
        "EvaluateTargetHealth": False 
       } 
      }