尝试创建或Upsert Route53 A记录

时间:2016-04-08 00:40:00

标签: amazon-web-services amazon-route53 boto3

当我运行这个boto3来创建或者插入A记录时,我收到错误:

  

文件“./metakube.py”,第523行,在post_create中     self.route53_update_alias_record(self.fugu_editor_external_dns,fugu_elb_identifier)

     

文件“./metakube.py”,第508行,在route53_update_alias_record中     'EvaluateTargetHealth':错误

     

文件“/home/pairaccount/.virtualenvs/fugui-devops/local/lib/python2.7/site-packages/botocore/client.py”,第236行,在_api_call     return self._make_api_call(operation_name,kwargs)

     

文件“/home/pairaccount/.virtualenvs/fugui-devops/local/lib/python2.7/site-packages/botocore/client.py”,第500行,在_make_api_call     提升ClientError(parsed_response,operation_name)

     

botocore.exceptions.ClientError:调用ChangeResourceRecordSets操作时发生错误(InvalidInput):无效请求

根据boto3文档,这看起来像是正确的输入。我们也尝试了一些不同的变体,但是当我们尝试使用下面的方法创建或Upsert A记录时,我们会收到此错误。我们有一个类似的方法,调用change_resource_record_sets删除A记录,它工作正常。

有关需要纠正的内容的任何想法?

def route53_update_alias_record(self, external_dns_name, load_balancer_identifier):
    route53_client = boto3.client('route53')
    hosted_zone_id = self.get_hosted_zone_id(route53_client)

    response = route53_client.change_resource_record_sets(
        HostedZoneId=hosted_zone_id,
        ChangeBatch={
            'Comment': 'upsert alias record',
            'Changes': [
                {
                    'Action': 'UPSERT',
                    'ResourceRecordSet': {
                        'Name': external_dns_name,
                        'Type': 'A',
                        'Region': 'us-east-1',
                        'AliasTarget': {
                            'DNSName': load_balancer_identifier,
                            'HostedZoneId': 'Z3DZXE0Q79N41H',
                            'EvaluateTargetHealth': False
                        }
                    }
                }
            ]
        }
    )
    self.logger.info("Delete route53 alias {} response: {}".format(external_dns_name, response))

1 个答案:

答案 0 :(得分:2)

你需要TTL

喜欢:

response = client.change_resource_record_sets(
        HostedZoneId=hostedzoneid,
        ChangeBatch={
            'Comment': 'add record',
            'Changes': [
                {
                    'Action': 'UPSERT',
                    'ResourceRecordSet': {
                        'Name': name,
                        'Type': 'A',
                        'TTL': ttl,
                        'ResourceRecords': [
                            {
                                'Value': value
                            }
                        ]
                    }
                }
            ]
        }
    )