prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  botocore.exceptions.ConnectionClosedError raised when calling change_resource_record_sets (Boto3)
  I am not sure whether or not I should expect this to work, but I see there are currently similar tests in moto against boto so I thought I would inquire.
  
  When using the Route53 client from boto3, a call to the change_resource_record_set method raises a botocore.exceptions.ConnectionClosedError. (botocore.exceptions.ConnectionClosedError: Connection was closed before we received a valid response from endpoint URL: "https://route53.amazonaws.com/2013-04-01/hostedzone/cc11c883/rrset/")
  
  A test case to reproduce is below.
  
  ``` python
  import boto3
  import uuid
  from moto import mock_route53
  
  def guid():
      return str(uuid.uuid4())
  
  @mock_route53
  def test_route53_rrset_fail():
  
      client = boto3.client('route53')
  
      # Create a new zone
      zone_name = '{0}.com'.format(guid())
      zone = client.create_hosted_zone(
          Name=zone_name,
          CallerReference=guid(),
          HostedZoneConfig={'Comment': guid()}
      )
      zone_id = zone['HostedZone']['Id']
  
      # Verify the zone is retrievable
      z = client.get_hosted_zone(Id=zone_id)
      assert z['HostedZone']['Id'] == zone_id
  
      # Try to create a record set
      # Raises botocore.exceptions.ConnectionClosedError
      client.change_resource_record_sets(
          HostedZoneId=zone_id,
          ChangeBatch={
              'Comment': guid(),
              'Changes': [{
                  'Action': 'CREATE',
                  'ResourceRecordSet': {
                      'Name': 'foo.{0}'.format(zone_name),
                      'Type': 'A',
                      'ResourceRecords': [{'Value': '1.2.3.4'}]
                  }
              }]
          }
      )
  ```
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `moto/route53/urls.py`
  Content:
  ```
  1 from __future__ import unicode_literals
  2 from . import responses
  3 
  4 url_bases = [
  5     "https://route53.amazonaws.com/201.-..-../",
  6 ]
  7 
  8 url_paths = {
  9     '{0}hostedzone$': responses.list_or_create_hostzone_response,
  10     '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,
  11     '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,
  12     '{0}healthcheck': responses.health_check_response,
  13     '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,
  14 }
  15
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/moto/route53/urls.py b/moto/route53/urls.py
  --- a/moto/route53/urls.py
  +++ b/moto/route53/urls.py
  @@ -8,7 +8,7 @@
   url_paths = {
       '{0}hostedzone$': responses.list_or_create_hostzone_response,
       '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,
  -    '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,
  +    '{0}hostedzone/[^/]+/rrset/?$': responses.rrset_response,
       '{0}healthcheck': responses.health_check_response,
       '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,
   }
  
verification_info: {"golden_diff": "diff --git a/moto/route53/urls.py b/moto/route53/urls.py\n--- a/moto/route53/urls.py\n+++ b/moto/route53/urls.py\n@@ -8,7 +8,7 @@\n url_paths = {\n     '{0}hostedzone$': responses.list_or_create_hostzone_response,\n     '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,\n-    '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,\n+    '{0}hostedzone/[^/]+/rrset/?$': responses.rrset_response,\n     '{0}healthcheck': responses.health_check_response,\n     '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,\n }\n", "issue": "botocore.exceptions.ConnectionClosedError raised when calling change_resource_record_sets (Boto3)\nI am not sure whether or not I should expect this to work, but I see there are currently similar tests in moto against boto so I thought I would inquire.\n\nWhen using the Route53 client from boto3, a call to the change_resource_record_set method raises a botocore.exceptions.ConnectionClosedError. (botocore.exceptions.ConnectionClosedError: Connection was closed before we received a valid response from endpoint URL: \"https://route53.amazonaws.com/2013-04-01/hostedzone/cc11c883/rrset/\")\n\nA test case to reproduce is below.\n\n``` python\nimport boto3\nimport uuid\nfrom moto import mock_route53\n\ndef guid():\n    return str(uuid.uuid4())\n\n@mock_route53\ndef test_route53_rrset_fail():\n\n    client = boto3.client('route53')\n\n    # Create a new zone\n    zone_name = '{0}.com'.format(guid())\n    zone = client.create_hosted_zone(\n        Name=zone_name,\n        CallerReference=guid(),\n        HostedZoneConfig={'Comment': guid()}\n    )\n    zone_id = zone['HostedZone']['Id']\n\n    # Verify the zone is retrievable\n    z = client.get_hosted_zone(Id=zone_id)\n    assert z['HostedZone']['Id'] == zone_id\n\n    # Try to create a record set\n    # Raises botocore.exceptions.ConnectionClosedError\n    client.change_resource_record_sets(\n        HostedZoneId=zone_id,\n        ChangeBatch={\n            'Comment': guid(),\n            'Changes': [{\n                'Action': 'CREATE',\n                'ResourceRecordSet': {\n                    'Name': 'foo.{0}'.format(zone_name),\n                    'Type': 'A',\n                    'ResourceRecords': [{'Value': '1.2.3.4'}]\n                }\n            }]\n        }\n    )\n```\n\n", "before_files": [{"content": "from __future__ import unicode_literals\nfrom . import responses\n\nurl_bases = [\n    \"https://route53.amazonaws.com/201.-..-../\",\n]\n\nurl_paths = {\n    '{0}hostedzone$': responses.list_or_create_hostzone_response,\n    '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,\n    '{0}hostedzone/[^/]+/rrset$': responses.rrset_response,\n    '{0}healthcheck': responses.health_check_response,\n    '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,\n}\n", "path": "moto/route53/urls.py"}], "after_files": [{"content": "from __future__ import unicode_literals\nfrom . import responses\n\nurl_bases = [\n    \"https://route53.amazonaws.com/201.-..-../\",\n]\n\nurl_paths = {\n    '{0}hostedzone$': responses.list_or_create_hostzone_response,\n    '{0}hostedzone/[^/]+$': responses.get_or_delete_hostzone_response,\n    '{0}hostedzone/[^/]+/rrset/?$': responses.rrset_response,\n    '{0}healthcheck': responses.health_check_response,\n    '{0}tags|trafficpolicyinstances/*': responses.not_implemented_response,\n}\n", "path": "moto/route53/urls.py"}]}