code: def create_route53_zone(client, zone_name):
      
      if not zone_name.endswith("."):
          zone_name += "."
      zone_id = get_or_create_hosted_zone(client, zone_name)
      old_soa = get_soa_record(client, zone_id, zone_name)
  
      # If the negative cache value is already 300, don't update it.
      if old_soa.text.min_ttl == "300":
          return zone_id
  
      new_soa = copy.deepcopy(old_soa)
      logger.debug("Updating negative caching value on zone %s to 300.",
                   zone_name)
      new_soa.text.min_ttl = "300"
      client.change_resource_record_sets(
          HostedZoneId=zone_id,
          ChangeBatch={
              "Comment": "Update SOA min_ttl to 300.",
              "Changes": [
                  {
                      "Action": "UPSERT",
                      "ResourceRecordSet": {
                          "Name": zone_name,
                          "Type": "SOA",
                          "TTL": old_soa.ttl,
                          "ResourceRecords": [
                              {
                                  "Value": str(new_soa.text)
                              }
                          ]
                      }
                  },
              ]
          }
      )
      return zone_id
docs: Creates the given zone_name if it doesn't already exists.
  
      Also sets the SOA negative caching TTL to something short (300 seconds).
  
      Args:
          client (:class:`botocore.client.Route53`): The connection used to
              interact with Route53's API.
          zone_name (string): The name of the DNS hosted zone to create.
  
      Returns:
          string: The zone id returned from AWS for the existing, or newly
              created zone.