# This file is automatically generated by botocraft. Do not edit directly.
# mypy: disable-error-code="index, override, assignment, union-attr, misc"
from functools import cached_property
from pydantic import Field
from botocraft.mixins.route53 import HostedZoneModelMixin
from .abstract import (
Boto3Model,
ReadonlyBoto3Model,
PrimaryBoto3Model,
ReadonlyPrimaryBoto3Model,
Boto3ModelManager,
ReadonlyBoto3ModelManager,
)
from collections import OrderedDict
from typing import ClassVar, Literal, Any, cast
from .abstract import PrimaryBoto3ModelQuerySet
from botocraft.mixins.tags import TagsDictMixin
from datetime import datetime
import builtins
# ===============
# Managers
# ===============
[docs]class HostedZoneManager(Boto3ModelManager):
service_name: str = "route53"
[docs] def create(
self,
model: "HostedZone",
VPC: "Route53VPC | None" = None,
HostedZoneConfig: "HostedZoneConfig | None" = None,
DelegationSetId: "str | None" = None,
) -> "HostedZone":
"""
Creates a new public or private hosted zone. You create records in a public
hosted zone to define how you want to route traffic on the internet for a
domain, such as example.com, and its subdomains (apex.example.com,
acme.example.com). You create records in a private hosted zone to define how you
want to route traffic for a domain and its subdomains within one or more Amazon
Virtual Private Clouds (Amazon VPCs).
Args:
model: The :py:class:`HostedZone` to create.
Keyword Args:
VPC: (Private hosted zones only) A complex type that contains information about the Amazon VPC that you're
associating with this hosted zone.
HostedZoneConfig: (Optional) A complex type that contains the following optional values:
DelegationSetId: If you want to associate a reusable delegation set with this hosted zone, the ID that Amazon
RouteĀ 53 assigned to the reusable delegation set when you created it. For more information about reusable delegation
sets, see `CreateReusableDel egationSet
<https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateReusableDelegationSet.html>`_.
"""
data = model.model_dump(exclude_none=True, by_alias=True)
args = dict(
Name=data.get("Name"),
CallerReference=data.get("CallerReference"),
VPC=self.serialize(VPC),
HostedZoneConfig=self.serialize(HostedZoneConfig),
DelegationSetId=self.serialize(DelegationSetId),
)
_response = self.client.create_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = CreateHostedZoneResponse(**_response)
self.sessionize(response.HostedZone)
return cast("HostedZone", response.HostedZone)
[docs] def delete(self, Id: str) -> "HostedZone":
"""
Deletes a hosted zone.
Args:
Id: The ID of the hosted zone you want to delete.
"""
args: dict[str, Any] = dict(Id=self.serialize(Id))
_response = self.client.delete_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = DeleteHostedZoneResponse(**_response)
return cast("HostedZone", response.ChangeInfo)
[docs] def get(self, Id: str) -> "HostedZone | None":
"""
Gets information about a specified hosted zone including the four name servers
assigned to the hosted zone.
Args:
Id: The ID of the hosted zone that you want to get information about.
"""
args: dict[str, Any] = dict(Id=self.serialize(Id))
_response = self.client.get_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = GetHostedZoneResponse(**_response)
if response and response.HostedZone:
self.sessionize(response.HostedZone)
return response.HostedZone
return None
[docs] def list(
self,
*,
MaxItems: "str | None" = None,
DelegationSetId: "str | None" = None,
HostedZoneType: "Literal['PrivateHostedZone'] | None" = None,
) -> PrimaryBoto3ModelQuerySet:
"""
Retrieves a list of the public and private hosted zones that are associated with
the current Amazon Web Services account. The response includes a ``HostedZones``
child element for each hosted zone.
Keyword Args:
MaxItems: (Optional) The maximum number of hosted zones that you want Amazon Route 53 to return. If you have more
than ``maxitems`` hosted zones, the value of ``IsTruncated`` in the response is ``true``, and the value of
``NextMarker`` is the hosted zone ID of the first hosted zone that Route 53 will return if you submit another
request.
DelegationSetId: If you're using reusable delegation sets and you want to list all of the hosted zones that are
associated with a reusable delegation set, specify the ID of that reusable delegation set.
HostedZoneType: (Optional) Specifies if the hosted zone is private.
"""
paginator = self.client.get_paginator("list_hosted_zones")
args: dict[str, Any] = dict(
MaxItems=self.serialize(MaxItems),
DelegationSetId=self.serialize(DelegationSetId),
HostedZoneType=self.serialize(HostedZoneType),
)
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results = []
for _response in response_iterator:
if list(_response.keys()) == ["ResponseMetadata"]:
break
if "ResponseMetadata" in _response:
del _response["ResponseMetadata"]
response = ListHostedZonesResponse(**_response)
if response.HostedZones:
results.extend(response.HostedZones)
else:
if getattr(response, "NextToken", None):
continue
break
self.sessionize(results)
if results and isinstance(results[0], Boto3Model):
return PrimaryBoto3ModelQuerySet(results)
return results
[docs] def list_records(
self,
HostedZoneId: str,
*,
StartRecordName: "str | None" = None,
StartRecordType: "Literal['SOA', 'A', 'TXT', 'NS', 'CNAME', 'MX', 'NAPTR', 'PTR', 'SRV', 'SPF', 'AAAA', 'CAA', 'DS', 'TLSA', 'SSHFP', 'SVCB', 'HTTPS'] | None" = None,
StartRecordIdentifier: "str | None" = None,
MaxItems: "str | None" = None,
) -> "builtins.list[Route53ResourceRecordSet]":
"""
Lists the resource record sets in a specified hosted zone.
Args:
HostedZoneId: The ID of the hosted zone that contains the resource record sets that you want to list.
Keyword Args:
StartRecordName: The first name in the lexicographic ordering of resource record sets that you want to list. If the
specified record name doesn't exist, the results begin with the first resource record set that has a name greater
than the value of ``name``.
StartRecordType: The type of resource record set to begin the record listing from.
StartRecordIdentifier: *Resource record sets that have a routing policy other than simple:* If results were
truncated for a given DNS name and type, specify the value of ``NextRecordIdentifier`` from the previous response
to get the next resource record set that has the current DNS name and type.
MaxItems: (Optional) The maximum number of resource records sets to include in the response body for this request.
If the response includes more than ``maxitems`` resource record sets, the value of the ``IsTruncated`` element in
the response is ``true``, and the values of the ``NextRecordName`` and ``NextRecordType`` elements in the response
identify the first resource record set in the next group of ``maxitems`` resource record sets.
"""
paginator = self.client.get_paginator("list_resource_record_sets")
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
StartRecordName=self.serialize(StartRecordName),
StartRecordType=self.serialize(StartRecordType),
StartRecordIdentifier=self.serialize(StartRecordIdentifier),
MaxItems=self.serialize(MaxItems),
)
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results: "builtins.list[Route53ResourceRecordSet]" = []
for _response in response_iterator:
response = ListResourceRecordSetsResponse(**_response)
if response.ResourceRecordSets is not None:
results.extend(response.ResourceRecordSets)
else:
break
self.sessionize(results)
return cast("builtins.list[Route53ResourceRecordSet]", results)
[docs] def list_by_name(
self,
*,
DNSName: "str | None" = None,
HostedZoneId: "str | None" = None,
MaxItems: "str | None" = None,
) -> "builtins.list[HostedZone]":
"""
Retrieves a list of your hosted zones in lexicographic order. The response
includes a ``HostedZones`` child element for each hosted zone created by the
current Amazon Web Services account.
Keyword Args:
DNSName: (Optional) For your first request to ``ListHostedZonesByName``, include the ``dnsname`` parameter only if
you want to specify the name of the first hosted zone in the response. If you don't include the ``dnsname``
parameter, Amazon Route 53 returns all of the hosted zones that were created by the current Amazon Web Services
account, in ASCII order. For subsequent requests, include both ``dnsname`` and ``hostedzoneid`` parameters. For
``dnsname``, specify the value of ``NextDNSName`` from the previous response.
HostedZoneId: (Optional) For your first request to ``ListHostedZonesByName``, do not include the ``hostedzoneid``
parameter.
MaxItems: The maximum number of hosted zones to be included in the response body for this request. If you have more
than ``maxitems`` hosted zones, then the value of the ``IsTruncated`` element in the response is true, and the
values of ``NextDNSName`` and ``NextHostedZoneId`` specify the first hosted zone in the next group of ``maxitems``
hosted zones.
"""
args: dict[str, Any] = dict(
DNSName=self.serialize(DNSName),
HostedZoneId=self.serialize(HostedZoneId),
MaxItems=self.serialize(MaxItems),
)
_response = self.client.list_hosted_zones_by_name(
**{k: v for k, v in args.items() if v is not None}
)
response = ListHostedZonesByNameResponse(**_response)
results: "builtins.list[HostedZone]" = None
if response is not None:
results = response.HostedZones
self.sessionize(results)
return cast("builtins.list[HostedZone]", results)
[docs] def list_by_vpc(
self,
*,
DNSName: "str | None" = None,
HostedZoneId: "str | None" = None,
MaxItems: "str | None" = None,
) -> "builtins.list[HostedZone]":
"""
Retrieves a list of your hosted zones in lexicographic order. The response
includes a ``HostedZones`` child element for each hosted zone created by the
current Amazon Web Services account.
Keyword Args:
DNSName: (Optional) For your first request to ``ListHostedZonesByName``, include the ``dnsname`` parameter only if
you want to specify the name of the first hosted zone in the response. If you don't include the ``dnsname``
parameter, Amazon Route 53 returns all of the hosted zones that were created by the current Amazon Web Services
account, in ASCII order. For subsequent requests, include both ``dnsname`` and ``hostedzoneid`` parameters. For
``dnsname``, specify the value of ``NextDNSName`` from the previous response.
HostedZoneId: (Optional) For your first request to ``ListHostedZonesByName``, do not include the ``hostedzoneid``
parameter.
MaxItems: The maximum number of hosted zones to be included in the response body for this request. If you have more
than ``maxitems`` hosted zones, then the value of the ``IsTruncated`` element in the response is true, and the
values of ``NextDNSName`` and ``NextHostedZoneId`` specify the first hosted zone in the next group of ``maxitems``
hosted zones.
"""
args: dict[str, Any] = dict(
DNSName=self.serialize(DNSName),
HostedZoneId=self.serialize(HostedZoneId),
MaxItems=self.serialize(MaxItems),
)
_response = self.client.list_hosted_zones_by_name(
**{k: v for k, v in args.items() if v is not None}
)
response = ListHostedZonesByNameResponse(**_response)
results: "builtins.list[HostedZone]" = None
if response is not None:
results = response.HostedZones
self.sessionize(results)
return cast("builtins.list[HostedZone]", results)
[docs] def count(
self,
) -> int:
"""
Retrieves the number of hosted zones that are associated with the current Amazon
Web Services account.
"""
args: dict[str, Any] = dict()
_response = self.client.get_hosted_zone_count(
**{k: v for k, v in args.items() if v is not None}
)
response = GetHostedZoneCountResponse(**_response)
results: int = None
if response is not None:
results = response.HostedZoneCount
self.sessionize(results)
return cast("int", results)
[docs] def limits(
self,
Type: Literal["MAX_RRSETS_BY_ZONE", "MAX_VPCS_ASSOCIATED_BY_ZONE"],
HostedZoneId: str,
) -> "GetHostedZoneLimitResponse":
"""
Gets the specified limit for a specified hosted zone, for example, the maximum
number of records that you can create in the hosted zone.
Args:
Type: The limit that you want to get. Valid values include the following:
HostedZoneId: The ID of the hosted zone that you want to get a limit for.
"""
args: dict[str, Any] = dict(
Type=self.serialize(Type), HostedZoneId=self.serialize(HostedZoneId)
)
_response = self.client.get_hosted_zone_limit(
**{k: v for k, v in args.items() if v is not None}
)
response = GetHostedZoneLimitResponse(**_response)
results: "GetHostedZoneLimitResponse" = None
if response is not None:
results = response
self.sessionize(results)
return cast("GetHostedZoneLimitResponse", results)
[docs] def associate_vpc(
self, HostedZoneId: str, VPC: "Route53VPC", *, Comment: "str | None" = None
) -> "ChangeInfo":
"""
Associates an Amazon VPC with a private hosted zone.
Args:
HostedZoneId: The ID of the private hosted zone that you want to associate an Amazon VPC with.
VPC: A complex type that contains information about the VPC that you want to associate with a private hosted zone.
Keyword Args:
Comment: *Optional:* A comment about the association request.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
VPC=self.serialize(VPC),
Comment=self.serialize(Comment),
)
_response = self.client.associate_vpc_with_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = AssociateVPCWithHostedZoneResponse(**_response)
results: "ChangeInfo" = None
if response is not None:
results = response.ChangeInfo
self.sessionize(results)
return cast("ChangeInfo", results)
[docs] def disassociate_vpc(
self, HostedZoneId: str, VPC: "Route53VPC", *, Comment: "str | None" = None
) -> "ChangeInfo":
"""
Disassociates an Amazon Virtual Private Cloud (Amazon VPC) from an Amazon Route 53 private hosted zone. Note the
following:
Args:
HostedZoneId: The ID of the private hosted zone that you want to disassociate a VPC from.
VPC: A complex type that contains information about the VPC that you're disassociating from the specified hosted
zone.
Keyword Args:
Comment: *Optional:* A comment about the disassociation request.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
VPC=self.serialize(VPC),
Comment=self.serialize(Comment),
)
_response = self.client.disassociate_vpc_from_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = DisassociateVPCFromHostedZoneResponse(**_response)
results: "ChangeInfo" = None
if response is not None:
results = response.ChangeInfo
self.sessionize(results)
return cast("ChangeInfo", results)
[docs]class Route53VPCManager(Boto3ModelManager):
service_name: str = "route53"
[docs] def associate(
self, HostedZoneId: str, VPC: "Route53VPC", *, Comment: "str | None" = None
) -> "ChangeInfo":
"""
Associates an Amazon VPC with a private hosted zone.
Args:
HostedZoneId: The ID of the private hosted zone that you want to associate an Amazon VPC with.
VPC: A complex type that contains information about the VPC that you want to associate with a private hosted zone.
Keyword Args:
Comment: *Optional:* A comment about the association request.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
VPC=self.serialize(VPC),
Comment=self.serialize(Comment),
)
_response = self.client.associate_vpc_with_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = AssociateVPCWithHostedZoneResponse(**_response)
results: "ChangeInfo" = None
if response is not None:
results = response.ChangeInfo
self.sessionize(results)
return cast("ChangeInfo", results)
[docs] def disassociate(
self, HostedZoneId: str, VPC: "Route53VPC", *, Comment: "str | None" = None
) -> "ChangeInfo":
"""
Disassociates an Amazon Virtual Private Cloud (Amazon VPC) from an Amazon Route 53 private hosted zone. Note the
following:
Args:
HostedZoneId: The ID of the private hosted zone that you want to disassociate a VPC from.
VPC: A complex type that contains information about the VPC that you're disassociating from the specified hosted
zone.
Keyword Args:
Comment: *Optional:* A comment about the disassociation request.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
VPC=self.serialize(VPC),
Comment=self.serialize(Comment),
)
_response = self.client.disassociate_vpc_from_hosted_zone(
**{k: v for k, v in args.items() if v is not None}
)
response = DisassociateVPCFromHostedZoneResponse(**_response)
results: "ChangeInfo" = None
if response is not None:
results = response.ChangeInfo
self.sessionize(results)
return cast("ChangeInfo", results)
[docs] def list_hosted_zones(
self,
VPCId: str,
VPCRegion: Literal[
"us-east-1",
"us-east-2",
"us-west-1",
"us-west-2",
"eu-west-1",
"eu-west-2",
"eu-west-3",
"eu-central-1",
"eu-central-2",
"ap-east-1",
"me-south-1",
"us-gov-west-1",
"us-gov-east-1",
"us-iso-east-1",
"us-iso-west-1",
"us-isob-east-1",
"me-central-1",
"ap-southeast-1",
"ap-southeast-2",
"ap-southeast-3",
"ap-south-1",
"ap-south-2",
"ap-northeast-1",
"ap-northeast-2",
"ap-northeast-3",
"eu-north-1",
"sa-east-1",
"ca-central-1",
"cn-north-1",
"cn-northwest-1",
"af-south-1",
"eu-south-1",
"eu-south-2",
"ap-southeast-4",
"il-central-1",
"ca-west-1",
"ap-southeast-5",
"mx-central-1",
"us-isof-south-1",
"us-isof-east-1",
"ap-southeast-7",
"ap-east-2",
"eu-isoe-west-1",
"ap-southeast-6",
"us-isob-west-1",
"eusc-de-east-1",
],
*,
MaxItems: "str | None" = None,
NextToken: "str | None" = None,
) -> "builtins.list[HostedZoneSummary]":
"""
Lists all the private hosted zones that a specified VPC is associated with, regardless of which Amazon Web Services
account or Amazon Web Services service owns the hosted zones. The ``HostedZoneOwner`` structure in the response contains
one of the following values:
Args:
VPCId: The ID of the Amazon VPC that you want to list hosted zones for.
VPCRegion: For the Amazon VPC that you specified for ``VPCId``, the Amazon Web Services Region that you created the
VPC in.
Keyword Args:
MaxItems: (Optional) The maximum number of hosted zones that you want Amazon Route 53 to return. If the specified
VPC is associated with more than ``MaxItems`` hosted zones, the response includes a ``NextToken`` element.
``NextToken`` contains an encrypted token that identifies the first hosted zone that Route 53 will return if you
submit another request.
NextToken: If the previous response included a ``NextToken`` element, the specified VPC is associated with more
hosted zones. To get more hosted zones, submit another ``ListHostedZonesByVPC`` request.
"""
args: dict[str, Any] = dict(
VPCId=self.serialize(VPCId),
VPCRegion=self.serialize(VPCRegion),
MaxItems=self.serialize(MaxItems),
NextToken=self.serialize(NextToken),
)
_response = self.client.list_hosted_zones_by_vpc(
**{k: v for k, v in args.items() if v is not None}
)
response = ListHostedZonesByVPCResponse(**_response)
results: "builtins.list[HostedZoneSummary]" = None
if response is not None:
results = response.HostedZoneSummaries
self.sessionize(results)
return cast("builtins.list[HostedZoneSummary]", results)
[docs] def list_authorizations(self, HostedZoneId: str) -> "builtins.list[Route53VPC]":
"""
Gets a list of the VPCs that were created by other accounts and that can be
associated with a specified hosted zone because you've submitted one or more
``CreateVPCAssociationAuthorization`` requests.
Args:
HostedZoneId: The ID of the hosted zone for which you want a list of VPCs that can be associated with the hosted
zone.
"""
paginator = self.client.get_paginator("list_vpc_association_authorizations")
args: dict[str, Any] = dict(HostedZoneId=self.serialize(HostedZoneId))
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results: "builtins.list[Route53VPC]" = []
for _response in response_iterator:
response = ListVPCAssociationAuthorizationsResponse(**_response)
if response.VPCs is not None:
results.extend(response.VPCs)
else:
break
self.sessionize(results)
return cast("builtins.list[Route53VPC]", results)
[docs] def create_authorization(
self, HostedZoneId: str, VPC: "Route53VPC"
) -> "Route53VPC":
"""
Authorizes the Amazon Web Services account that created a specified VPC to
submit an ``AssociateVPCWithHostedZone`` request to associate the VPC with a
specified hosted zone that was created by a different account. To submit a
``CreateVPCAssociationAuthorization`` request, you must use the account that
created the hosted zone. After you authorize the association, use the account
that created the VPC to submit an ``AssociateVPCWithHostedZone`` request.
Args:
HostedZoneId: The ID of the private hosted zone that you want to authorize associating a VPC with.
VPC: A complex type that contains the VPC ID and region for the VPC that you want to authorize associating with your
hosted zone.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId), VPC=self.serialize(VPC)
)
_response = self.client.create_vpc_association_authorization(
**{k: v for k, v in args.items() if v is not None}
)
response = CreateVPCAssociationAuthorizationResponse(**_response)
results: "Route53VPC" = None
if response is not None:
results = response.VPC
self.sessionize(results)
return cast("Route53VPC", results)
[docs] def delete_authorization(
self, HostedZoneId: str, VPC: "Route53VPC"
) -> "DeleteVPCAssociationAuthorizationResponse":
"""
Removes authorization to submit an ``AssociateVPCWithHostedZone`` request to
associate a specified VPC with a hosted zone that was created by a different
account. You must use the account that created the hosted zone to submit a
``DeleteVPCAssociationAuthorization`` request.
Args:
HostedZoneId: When removing authorization to associate a VPC that was created by one Amazon Web Services account
with a hosted zone that was created with a different Amazon Web Services account, the ID of the hosted zone.
VPC: When removing authorization to associate a VPC that was created by one Amazon Web Services account with a
hosted zone that was created with a different Amazon Web Services account, a complex type that includes the ID and
region of the VPC.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId), VPC=self.serialize(VPC)
)
_response = self.client.delete_vpc_association_authorization(
**{k: v for k, v in args.items() if v is not None}
)
response = DeleteVPCAssociationAuthorizationResponse(**_response)
results: "DeleteVPCAssociationAuthorizationResponse" = None
if response is not None:
results = response
self.sessionize(results)
return cast("DeleteVPCAssociationAuthorizationResponse", results)
[docs]class Route53CidrCollectionManager(Boto3ModelManager):
service_name: str = "route53"
[docs] def create(
self, model: "Route53CidrCollection", CallerReference: str
) -> "CreateCidrCollectionResponse":
"""
Creates a CIDR collection in the current Amazon Web Services account.
Args:
model: The :py:class:`CidrCollection` to create.
CallerReference: A client-specific token that allows requests to be securely retried so that the intended outcome
will only occur once, retries receive a similar response, and there are no additional edge cases to handle.
"""
data = model.model_dump(exclude_none=True, by_alias=True)
args = dict(
Name=data.get("Name"), CallerReference=self.serialize(CallerReference)
)
_response = self.client.create_cidr_collection(
**{k: v for k, v in args.items() if v is not None}
)
response = CreateCidrCollectionResponse(**_response)
self.sessionize(response)
return cast("CreateCidrCollectionResponse", response)
[docs] def delete(self, Id: str) -> None:
"""
Deletes a CIDR collection in the current Amazon Web Services account. The
collection must be empty before it can be deleted.
Args:
Id: The UUID of the collection to delete.
"""
args: dict[str, Any] = dict(Id=self.serialize(Id))
self.client.delete_cidr_collection(
**{k: v for k, v in args.items() if v is not None}
)
[docs] def list(
self,
) -> PrimaryBoto3ModelQuerySet:
"""
Returns a paginated list of CIDR collections in the Amazon Web Services account
(metadata only).
"""
paginator = self.client.get_paginator("list_cidr_collections")
args: dict[str, Any] = dict()
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results = []
for _response in response_iterator:
if list(_response.keys()) == ["ResponseMetadata"]:
break
if "ResponseMetadata" in _response:
del _response["ResponseMetadata"]
response = ListCidrCollectionsResponse(**_response)
if response.CidrCollections:
results.extend(response.CidrCollections)
else:
if getattr(response, "NextToken", None):
continue
break
self.sessionize(results)
if results and isinstance(results[0], Boto3Model):
return PrimaryBoto3ModelQuerySet(results)
return results
[docs] def update(
self, model: "Route53CidrCollection", CollectionVersion: "int | None" = None
) -> str:
"""
Creates, changes, or deletes CIDR blocks within a collection. Contains
authoritative IP information mapping blocks to one or multiple locations.
Args:
model: The :py:class:`CidrCollection` to update.
Keyword Args:
CollectionVersion: A sequential counter that Amazon RouteĀ 53 sets to 1 when you create a collection and increments
it by 1 each time you update the collection.
"""
data = model.model_dump(exclude_none=True, by_alias=True)
args = dict(
Id=data.get("Id"),
Changes=data.get("Changes"),
CollectionVersion=self.serialize(CollectionVersion),
)
_response = self.client.change_cidr_collection(
**{k: v for k, v in args.items() if v is not None}
)
response = ChangeCidrCollectionResponse(**_response)
self.sessionize(response.Id)
return cast("str", response.Id)
[docs]class CidrBlockSummaryManager(Boto3ModelManager):
service_name: str = "route53"
[docs] def list(
self, CollectionId: str, *, LocationName: "str | None" = None
) -> PrimaryBoto3ModelQuerySet:
"""
Returns a paginated list of location objects and their CIDR blocks.
Args:
CollectionId: The UUID of the CIDR collection.
Keyword Args:
LocationName: The name of the CIDR collection location.
"""
paginator = self.client.get_paginator("list_cidr_blocks")
args: dict[str, Any] = dict(
CollectionId=self.serialize(CollectionId),
LocationName=self.serialize(LocationName),
)
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results = []
for _response in response_iterator:
if list(_response.keys()) == ["ResponseMetadata"]:
break
if "ResponseMetadata" in _response:
del _response["ResponseMetadata"]
response = ListCidrBlocksResponse(**_response)
if response.CidrBlocks:
results.extend(response.CidrBlocks)
else:
if getattr(response, "NextToken", None):
continue
break
self.sessionize(results)
if results and isinstance(results[0], Boto3Model):
return PrimaryBoto3ModelQuerySet(results)
return results
[docs]class Route53QueryLoggingConfigManager(Boto3ModelManager):
service_name: str = "route53"
[docs] def create(self, model: "Route53QueryLoggingConfig") -> "Route53QueryLoggingConfig":
"""
Creates a configuration for DNS query logging. After you create a query logging
configuration, Amazon Route 53 begins to publish log data to an Amazon
CloudWatch Logs log group.
Args:
model: The :py:class:`QueryLoggingConfig` to create.
"""
data = model.model_dump(exclude_none=True, by_alias=True)
args = dict(
HostedZoneId=data.get("HostedZoneId"),
CloudWatchLogsLogGroupArn=data.get("CloudWatchLogsLogGroupArn"),
)
_response = self.client.create_query_logging_config(
**{k: v for k, v in args.items() if v is not None}
)
response = CreateQueryLoggingConfigResponse(**_response)
self.sessionize(response.QueryLoggingConfig)
return cast("Route53QueryLoggingConfig", response.QueryLoggingConfig)
[docs] def delete(self, Id: str) -> None:
"""
Deletes a configuration for DNS query logging. If you delete a configuration,
Amazon Route 53 stops sending query logs to CloudWatch Logs. Route 53 doesn't
delete any logs that are already in CloudWatch Logs.
Args:
Id: The ID of the configuration that you want to delete.
"""
args: dict[str, Any] = dict(Id=self.serialize(Id))
self.client.delete_query_logging_config(
**{k: v for k, v in args.items() if v is not None}
)
[docs] def get(self, Id: str) -> "Route53QueryLoggingConfig | None":
"""
Gets information about a specified configuration for DNS query logging.
Args:
Id: The ID of the configuration for DNS query logging that you want to get information about.
"""
args: dict[str, Any] = dict(Id=self.serialize(Id))
_response = self.client.get_query_logging_config(
**{k: v for k, v in args.items() if v is not None}
)
response = GetQueryLoggingConfigResponse(**_response)
if response and response.QueryLoggingConfig:
self.sessionize(response.QueryLoggingConfig)
return response.QueryLoggingConfig
return None
[docs] def list(self, *, HostedZoneId: "str | None" = None) -> PrimaryBoto3ModelQuerySet:
"""
Lists the configurations for DNS query logging that are associated with the
current Amazon Web Services account or the configuration that is associated with
a specified hosted zone.
Keyword Args:
HostedZoneId: (Optional) If you want to list the query logging configuration that is associated with a hosted zone,
specify the ID in ``HostedZoneId``.
"""
paginator = self.client.get_paginator("list_query_logging_configs")
args: dict[str, Any] = dict(HostedZoneId=self.serialize(HostedZoneId))
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results = []
for _response in response_iterator:
if list(_response.keys()) == ["ResponseMetadata"]:
break
if "ResponseMetadata" in _response:
del _response["ResponseMetadata"]
response = ListQueryLoggingConfigsResponse(**_response)
if response.QueryLoggingConfigs:
results.extend(response.QueryLoggingConfigs)
else:
if getattr(response, "NextToken", None):
continue
break
self.sessionize(results)
if results and isinstance(results[0], Boto3Model):
return PrimaryBoto3ModelQuerySet(results)
return results
[docs]class Route53ResourceRecordSetManager(Boto3ModelManager):
service_name: str = "route53"
[docs] def change(self, HostedZoneId: str, ChangeBatch: "ChangeBatch") -> "ChangeInfo":
"""
Creates, changes, or deletes a resource record set, which contains authoritative
DNS information for a specified domain name or subdomain name. For example, you
can use ``ChangeResourceRecordSets`` to create a resource record set that routes
traffic for test.example.com to a web server that has an IP address of
192.0.2.44.
Args:
HostedZoneId: The ID of the hosted zone that contains the resource record sets that you want to change.
ChangeBatch: A complex type that contains an optional comment and the ``Changes`` element.
"""
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
ChangeBatch=self.serialize(ChangeBatch),
)
_response = self.client.change_resource_record_sets(
**{k: v for k, v in args.items() if v is not None}
)
response = ChangeResourceRecordSetsResponse(**_response)
results: "ChangeInfo" = None
if response is not None:
results = response.ChangeInfo
self.sessionize(results)
return cast("ChangeInfo", results)
[docs] def list(
self,
HostedZoneId: str,
*,
StartRecordName: "str | None" = None,
StartRecordType: "Literal['SOA', 'A', 'TXT', 'NS', 'CNAME', 'MX', 'NAPTR', 'PTR', 'SRV', 'SPF', 'AAAA', 'CAA', 'DS', 'TLSA', 'SSHFP', 'SVCB', 'HTTPS'] | None" = None,
StartRecordIdentifier: "str | None" = None,
MaxItems: "str | None" = None,
) -> PrimaryBoto3ModelQuerySet:
"""
Lists the resource record sets in a specified hosted zone.
Args:
HostedZoneId: The ID of the hosted zone that contains the resource record sets that you want to list.
Keyword Args:
StartRecordName: The first name in the lexicographic ordering of resource record sets that you want to list. If the
specified record name doesn't exist, the results begin with the first resource record set that has a name greater
than the value of ``name``.
StartRecordType: The type of resource record set to begin the record listing from.
StartRecordIdentifier: *Resource record sets that have a routing policy other than simple:* If results were
truncated for a given DNS name and type, specify the value of ``NextRecordIdentifier`` from the previous response
to get the next resource record set that has the current DNS name and type.
MaxItems: (Optional) The maximum number of resource records sets to include in the response body for this request.
If the response includes more than ``maxitems`` resource record sets, the value of the ``IsTruncated`` element in
the response is ``true``, and the values of the ``NextRecordName`` and ``NextRecordType`` elements in the response
identify the first resource record set in the next group of ``maxitems`` resource record sets.
"""
paginator = self.client.get_paginator("list_resource_record_sets")
args: dict[str, Any] = dict(
HostedZoneId=self.serialize(HostedZoneId),
StartRecordName=self.serialize(StartRecordName),
StartRecordType=self.serialize(StartRecordType),
StartRecordIdentifier=self.serialize(StartRecordIdentifier),
MaxItems=self.serialize(MaxItems),
)
response_iterator = paginator.paginate(
**{k: v for k, v in args.items() if v is not None}
)
results = []
for _response in response_iterator:
if list(_response.keys()) == ["ResponseMetadata"]:
break
if "ResponseMetadata" in _response:
del _response["ResponseMetadata"]
response = ListResourceRecordSetsResponse(**_response)
if response.ResourceRecordSets:
results.extend(response.ResourceRecordSets)
else:
if getattr(response, "NextToken", None):
continue
break
self.sessionize(results)
if results and isinstance(results[0], Boto3Model):
return PrimaryBoto3ModelQuerySet(results)
return results
# ==============
# Service Models
# ==============
[docs]class HostedZoneConfig(Boto3Model):
"""
A complex type that contains an optional comment about your hosted zone.
If you don't want to specify a comment, omit
both the ``HostedZoneConfig`` and ``Comment`` elements.
"""
Comment: "str | None" = None
"""
Any comments that you want to include about the hosted zone.
"""
PrivateZone: "bool | None" = None
"""
A value that indicates whether this is a private hosted zone.
"""
[docs]class Route53LinkedService(Boto3Model):
"""
If a health check or hosted zone was created by another service, ``LinkedService``
is a complex type that describes the service that created the resource.
When a resource is created by another service, you can't edit or delete it using
Amazon Route 53.
"""
ServicePrincipal: "str | None" = None
"""
If the health check or hosted zone was created by another service, the service that
created the resource.
When a resource is created by another service, you can't edit or delete it using
Amazon Route 53.
"""
Description: "str | None" = None
"""
If the health check or hosted zone was created by another service, an optional
description that can be provided by the other service.
When a resource is created by another service, you can't edit or delete it using
Amazon Route 53.
"""
[docs]class HostedZoneFailureReasons(Boto3Model):
"""
Contains information about why certain features failed to be enabled or configured
for the hosted zone.
"""
AcceleratedRecovery: "str | None" = None
"""
The reason why accelerated recovery failed to be enabled or disabled for the hosted
zone, if applicable.
"""
[docs]class HostedZoneFeatures(Boto3Model):
"""
Represents the features configuration for a hosted zone, including the status of
various features and any associated failure reasons.
"""
AcceleratedRecoveryStatus: "Literal['ENABLING', 'ENABLE_FAILED', 'ENABLING_HOSTED_ZONE_LOCKED', 'ENABLED', 'DISABLING', 'DISABLE_FAILED', 'DISABLED', 'DISABLING_HOSTED_ZONE_LOCKED'] | None" = None
"""
The current status of accelerated recovery for the hosted zone.
"""
FailureReasons: "HostedZoneFailureReasons | None" = None
"""
Information about any failures that occurred when attempting to enable or configure
features for the hosted zone.
"""
[docs]class HostedZone(HostedZoneModelMixin, PrimaryBoto3Model):
"""
A complex type that contains general information about the hosted zone.
"""
manager_class: ClassVar[type[Boto3ModelManager]] = HostedZoneManager
Id: str = Field(frozen=True)
"""
The ID that Amazon Route 53 assigned to the hosted zone when you created it.
"""
Name: str
"""
The name of the domain.
For public hosted zones, this is the name that you have registered with your DNS
registrar.
"""
CallerReference: str
"""
The value that you specified for ``CallerReference`` when you created the hosted
zone.
"""
Config: HostedZoneConfig = Field(default=None, frozen=True)
"""
A complex type that includes the ``Comment`` and ``PrivateZone`` elements.
If you omitted the ``HostedZoneConfig`` and
``Comment`` elements from the request, the ``Config`` and ``Comment`` elements don't appear in the response.
"""
ResourceRecordSetCount: int = Field(default=None, frozen=True)
"""
The number of resource record sets in the hosted zone.
"""
LinkedService: Route53LinkedService = Field(default=None, frozen=True)
"""
If the hosted zone was created by another service, the service that created the
hosted zone.
When a hosted zone is created by another service, you can't edit or delete it using
Route 53.
"""
Features: HostedZoneFeatures = Field(default=None, frozen=True)
"""
The features configuration for the hosted zone, including accelerated recovery
settings and status information.
"""
@property
def pk(self) -> str | None:
"""
Return the primary key of the model. This is the value of the :py:attr:`Id`
attribute.
Returns:
The primary key of the model instance.
"""
return self.Id
@property
def name(self) -> str | None:
"""
Return the name of the model. This is the value of the :py:attr:`Name`
attribute.
Returns:
The name of the model instance.
"""
return self.Name
def __hash__(self) -> int:
"""
Return the hash of the model.
This is the value of the
:py:attr:`Id` attribute.
"""
return hash(self.Id)
@cached_property
def records(self) -> "list[Route53ResourceRecordSet] | None":
"""
Return the records in the hosted zone.
.. note::
The output of this property is cached on the model instance, so
calling this multiple times will not result in multiple calls to the
AWS API. If you need a fresh copy of the data, you can re-get the
model instance from the manager.
"""
try:
pk = OrderedDict(
{
"HostedZoneId": self.Id,
}
)
except AttributeError:
return []
return Route53ResourceRecordSet.objects.using(self.session).list(**pk) # type: ignore[arg-type]
[docs]class Route53VPC(PrimaryBoto3Model):
"""
(Private hosted zones only) A complex type that contains information about an Amazon
VPC.
If you associate a private hosted zone with an Amazon VPC when you make a
`CreateHostedZone <https://docs.aws.amazon.com/Route53/latest/APIReference/API_CreateHostedZone.html>`_
request, the
following parameters are also required.
"""
manager_class: ClassVar[type[Boto3ModelManager]] = Route53VPCManager
VPCRegion: "Literal['us-east-1', 'us-east-2', 'us-west-1', 'us-west-2', 'eu-west-1', 'eu-west-2', 'eu-west-3', 'eu-central-1', 'eu-central-2', 'ap-east-1', 'me-south-1', 'us-gov-west-1', 'us-gov-east-1', 'us-iso-east-1', 'us-iso-west-1', 'us-isob-east-1', 'me-central-1', 'ap-southeast-1', 'ap-southeast-2', 'ap-southeast-3', 'ap-south-1', 'ap-south-2', 'ap-northeast-1', 'ap-northeast-2', 'ap-northeast-3', 'eu-north-1', 'sa-east-1', 'ca-central-1', 'cn-north-1', 'cn-northwest-1', 'af-south-1', 'eu-south-1', 'eu-south-2', 'ap-southeast-4', 'il-central-1', 'ca-west-1', 'ap-southeast-5', 'mx-central-1', 'us-isof-south-1', 'us-isof-east-1', 'ap-southeast-7', 'ap-east-2', 'eu-isoe-west-1', 'ap-southeast-6', 'us-isob-west-1', 'eusc-de-east-1'] | None" = None
"""
(Private hosted zones only) The region that an Amazon VPC was created in.
"""
VPCId: "str | None" = None
"""
(Private hosted zones only) The ID of an Amazon VPC.
"""
@property
def pk(self) -> str | None:
"""
Return the primary key of the model. This is the value of the :py:attr:`VPCId`
attribute.
Returns:
The primary key of the model instance.
"""
return self.VPCId
def __hash__(self) -> int:
"""
Return the hash of the model.
This is the value of the
:py:attr:`VPCId` attribute.
"""
return hash(self.VPCId)
[docs]class Route53CidrCollection(PrimaryBoto3Model):
"""
A complex type that identifies a CIDR collection.
"""
manager_class: ClassVar[type[Boto3ModelManager]] = Route53CidrCollectionManager
Arn: str = Field(default=None, frozen=True)
"""
The ARN of the collection.
Can be used to reference the collection in IAM policy or in another Amazon Web
Services account.
"""
Id: "str | None" = None
"""
The unique ID of the CIDR collection.
"""
Name: "str | None" = None
"""
The name of a CIDR collection.
"""
Version: int = Field(default=None, frozen=True)
"""
A sequential counter that RouteĀ 53 sets to 1 when you create a CIDR collection and
increments by 1 each time you update settings for the CIDR collection.
"""
@property
def pk(self) -> str | None:
"""
Return the primary key of the model. This is the value of the :py:attr:`Id`
attribute.
Returns:
The primary key of the model instance.
"""
return self.Id
@property
def arn(self) -> str | None:
"""
Return the ARN of the model. This is the value of the :py:attr:`Arn`
attribute.
Returns:
The ARN of the model instance.
"""
return self.Arn
@property
def name(self) -> str | None:
"""
Return the name of the model. This is the value of the :py:attr:`Name`
attribute.
Returns:
The name of the model instance.
"""
return self.Name
def __hash__(self) -> int:
"""
Return the hash of the model.
This is the value of the
:py:attr:`Id` attribute.
"""
return hash(self.Id)
[docs]class CidrBlockSummary(PrimaryBoto3Model):
"""
A complex type that lists the CIDR blocks.
"""
manager_class: ClassVar[type[Boto3ModelManager]] = CidrBlockSummaryManager
CidrBlock: "str | None" = None
"""
Value for the CIDR block.
"""
LocationName: "str | None" = None
"""
The location name of the CIDR block.
"""
@property
def pk(self) -> str | None:
"""
Return the primary key of the model. This is the value of the
:py:attr:`CidrBlock` attribute.
Returns:
The primary key of the model instance.
"""
return self.CidrBlock
@property
def name(self) -> str | None:
"""
Return the name of the model. This is the value of the :py:attr:`CidrBlock`
attribute.
Returns:
The name of the model instance.
"""
return self.CidrBlock
def __hash__(self) -> int:
"""
Return the hash of the model.
This is the value of the
:py:attr:`CidrBlock` attribute.
"""
return hash(self.CidrBlock)
[docs]class Route53QueryLoggingConfig(PrimaryBoto3Model):
"""
A complex type that contains information about a configuration for DNS query
logging.
"""
manager_class: ClassVar[type[Boto3ModelManager]] = Route53QueryLoggingConfigManager
Id: str = Field(frozen=True)
"""
The ID for a configuration for DNS query logging.
"""
HostedZoneId: str
"""
The ID of the hosted zone that CloudWatch Logs is logging queries for.
"""
CloudWatchLogsLogGroupArn: str
"""
The Amazon Resource Name (ARN) of the CloudWatch Logs log group that Amazon Route 53
is publishing logs to.
"""
@property
def pk(self) -> str | None:
"""
Return the primary key of the model. This is the value of the :py:attr:`Id`
attribute.
Returns:
The primary key of the model instance.
"""
return self.Id
@property
def name(self) -> str | None:
"""
Return the name of the model. This is the value of the :py:attr:`Id`
attribute.
Returns:
The name of the model instance.
"""
return self.Id
def __hash__(self) -> int:
"""
Return the hash of the model.
This is the value of the
:py:attr:`Id` attribute.
"""
return hash(self.Id)
[docs]class Route53GeoLocation(Boto3Model):
"""
A complex type that contains information about a geographic location.
"""
ContinentCode: "str | None" = None
"""
The two-letter code for the continent.
"""
CountryCode: "str | None" = None
"""
For geolocation resource record sets, the two-letter code for a country.
"""
SubdivisionCode: "str | None" = None
"""
For geolocation resource record sets, the two-letter code for a state of the United
States.
Route 53 doesn't support any
other values for ``SubdivisionCode``. For a list of state abbreviations, see `Appendix B: Two-Letter State and
Possession Abbreviations <https://pe.usps.com/text/pub28/28apb.htm>`_ on the United States Postal Service website.
"""
[docs]class ResourceRecord(Boto3Model):
"""
Information specific to the resource record.
If you're creating an alias resource record set, omit ``ResourceRecord``.
"""
Value: str
"""
The current or new DNS record value, not to exceed 4,000 characters.
In the case of a ``DELETE`` action, if the current
value does not match the actual value, an error is returned. For descriptions about how to format ``Value`` for
different record types, see `Supported DNS Resource Record
Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_ in the *Amazon Route 53
Developer Guide*.
"""
[docs]class Route53AliasTarget(Boto3Model):
"""
*Alias resource record sets only:* Information about the Amazon Web Services
resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to
route traffic to.
When creating resource record sets for a private hosted zone, note the following:
* For information about creating failover resource record sets in a private hosted zone, see `Configuring Failover in a
Private Hosted Zone <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/dns-failover-private-hosted-zones.html>`_.
"""
HostedZoneId: str
"""
*Alias resource records sets only*: The value used depends on where you want to
route traffic:
"""
DNSName: str
"""
*Alias resource record sets only:* The value that you specify depends on where you
want to route queries:
"""
EvaluateTargetHealth: bool
"""
*Applies only to alias, failover alias, geolocation alias, latency alias, and
weighted alias resource record sets:* When ``EvaluateTargetHealth`` is ``true``, an
alias resource record set inherits the health of the referenced Amazon Web Services
resource, such as an ELB load balancer or another resource record set in the hosted
zone.
"""
[docs]class Route53CidrRoutingConfig(Boto3Model):
"""
The object that is specified in resource record set object when you are linking a
resource record set to a CIDR location.
A ``LocationName`` with an asterisk ā*ā can be used to create a default CIDR record. ``CollectionId`` is still required
for default record.
"""
CollectionId: str
"""
The CIDR collection ID.
"""
LocationName: str
"""
The CIDR collection location name.
"""
[docs]class Route53Coordinates(Boto3Model):
"""
A complex type that lists the coordinates for a geoproximity resource record.
"""
Latitude: str
"""
Specifies a coordinate of the north-south position of a geographic point on the surface of the Earth (-90 - 90).
"""
Longitude: str
"""
Specifies a coordinate of the east-west position of a geographic point on the surface of the Earth (-180 - 180).
"""
[docs]class Route53GeoProximityLocation(Boto3Model):
"""
(Resource record sets only): A complex type that lets you specify where your
resources are located. Only one of ``LocalZoneGroup``, ``Coordinates``, or ``Amazon
Web ServicesRegion`` is allowed per request at a time.
For more information about geoproximity routing, see
`Geoproximity routing <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/routing-policy-geoproximity.html>`_
in the *Amazon
RouteĀ 53 Developer Guide*.
"""
AWSRegion: "str | None" = None
"""
The Amazon Web Services Region the resource you are directing DNS traffic to, is in.
"""
LocalZoneGroup: "str | None" = None
"""
Specifies an Amazon Web Services Local Zone Group.
"""
Coordinates: "Route53Coordinates | None" = None
"""
Contains the longitude and latitude for a geographic region.
"""
Bias: "int | None" = None
"""
The bias increases or decreases the size of the geographic region from which
RouteĀ 53 routes traffic to a resource.
"""
[docs]class Route53ResourceRecordSet(PrimaryBoto3Model):
"""
Information about the resource record set to create or delete.
"""
manager_class: ClassVar[type[Boto3ModelManager]] = Route53ResourceRecordSetManager
Name: str = Field(frozen=True)
"""
For ``ChangeResourceRecordSets`` requests, the name of the record that you want to
create, update, or delete.
For
``ListResourceRecordSets`` responses, the name of a record in the specified hosted zone.
"""
Type: Literal[
"SOA",
"A",
"TXT",
"NS",
"CNAME",
"MX",
"NAPTR",
"PTR",
"SRV",
"SPF",
"AAAA",
"CAA",
"DS",
"TLSA",
"SSHFP",
"SVCB",
"HTTPS",
] = Field(frozen=True)
"""
The DNS record type.
For information about different record types and how data is encoded for them, see
`Supported DNS Resource Record Types <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ResourceRecordTypes.html>`_
in the
*Amazon Route 53 Developer Guide*.
"""
SetIdentifier: str = Field(default=None, frozen=True)
"""
*Resource record sets that have a routing policy other than simple:* An identifier
that differentiates among multiple resource record sets that have the same
combination of name and type, such as multiple weighted resource record sets named
acme.example.com that have a type of A.
In a group of resource record sets that have the same name and type, the
value of ``SetIdentifier`` must be unique for each resource record set.
"""
Weight: int = Field(default=None, frozen=True)
"""
*Weighted resource record sets only:* Among resource record sets that have the same
combination of DNS name and type, a value that determines the proportion of DNS
queries that Amazon Route 53 responds to using the current resource record set.
Route 53 calculates the sum of the weights for the resource record sets that have
the same combination of DNS name and type. Route 53 then responds to queries based
on the ratio of a resource's weight to the total. Note the following:
"""
Region: Literal[
"us-east-1",
"us-east-2",
"us-west-1",
"us-west-2",
"ca-central-1",
"eu-west-1",
"eu-west-2",
"eu-west-3",
"eu-central-1",
"eu-central-2",
"ap-southeast-1",
"ap-southeast-2",
"ap-southeast-3",
"ap-northeast-1",
"ap-northeast-2",
"ap-northeast-3",
"eu-north-1",
"sa-east-1",
"cn-north-1",
"cn-northwest-1",
"ap-east-1",
"me-south-1",
"me-central-1",
"ap-south-1",
"ap-south-2",
"af-south-1",
"eu-south-1",
"eu-south-2",
"ap-southeast-4",
"il-central-1",
"ca-west-1",
"ap-southeast-5",
"mx-central-1",
"ap-southeast-7",
"us-gov-east-1",
"us-gov-west-1",
"ap-east-2",
"ap-southeast-6",
"eusc-de-east-1",
] = Field(default=None, frozen=True)
"""
*Latency-based resource record sets only:* The Amazon EC2 Region where you created
the resource that this resource record set refers to.
The resource typically is an Amazon Web Services resource, such as an EC2 instance
or an ELB load balancer, and is referred to by an IP address or a DNS domain name,
depending on the record type.
"""
GeoLocation: Route53GeoLocation = Field(default=None, frozen=True)
"""
*Geolocation resource record sets only:* A complex type that lets you control how
Amazon Route 53 responds to DNS queries based on the geographic origin of the query.
For example, if you want all queries from Africa to be routed to a
web server with an IP address of ``192.0.2.111``, create a resource record set with a ``Type`` of ``A`` and a
``ContinentCode`` of ``AF``.
"""
Failover: Literal["PRIMARY", "SECONDARY"] = Field(default=None, frozen=True)
"""
*Failover resource record sets only:* To configure failover, you add the
``Failover`` element to two resource record sets.
For one resource record set, you specify ``PRIMARY`` as the value for ``Failover``; for the other resource record
set, you specify ``SECONDARY``. In addition, you include the ``HealthCheckId`` element and specify the health check that
you want Amazon Route 53 to perform for each resource record set.
"""
MultiValueAnswer: bool = Field(default=None, frozen=True)
"""
*Multivalue answer resource record sets only*: To route traffic approximately
randomly to multiple resources, such as web servers, create one multivalue answer
record for each resource and specify ``true`` for ``MultiValueAnswer``.
Note
the following:
"""
TTL: int = Field(default=None, frozen=True)
"""
The resource record cache time to live (TTL), in seconds.
Note the following:
"""
ResourceRecords: "builtins.list[ResourceRecord]" = Field(
default_factory=list, frozen=True
)
"""
Information about the resource records to act upon.
"""
AliasTarget: Route53AliasTarget = Field(default=None, frozen=True)
"""
*Alias resource record sets only:* Information about the Amazon Web Services
resource, such as a CloudFront distribution or an Amazon S3 bucket, that you want to
route traffic to.
"""
HealthCheckId: str = Field(default=None, frozen=True)
"""
If you want Amazon Route 53 to return this resource record set in response to a DNS
query only when the status of a health check is healthy, include the
``HealthCheckId`` element and specify the ID of the applicable health check.
"""
TrafficPolicyInstanceId: str = Field(default=None, frozen=True)
"""
When you create a traffic policy instance, Amazon Route 53 automatically creates a
resource record set.
``TrafficPolicyInstanceId`` is the ID of the traffic policy instance that Route 53 created this resource record set for.
"""
CidrRoutingConfig: Route53CidrRoutingConfig = Field(default=None, frozen=True)
"""
The object that is specified in resource record set object when you are linking a
resource record set to a CIDR location.
"""
GeoProximityLocation: Route53GeoProximityLocation = Field(default=None, frozen=True)
"""
*GeoproximityLocation resource record sets only:* A complex type that lets you
control how RouteĀ 53 responds to DNS queries based on the geographic origin of the
query and your resources.
"""
@property
def pk(self) -> str | None:
"""
Return the primary key of the model. This is the value of the :py:attr:`Name`
attribute.
Returns:
The primary key of the model instance.
"""
return self.Name
@property
def name(self) -> str | None:
"""
Return the name of the model. This is the value of the :py:attr:`Name`
attribute.
Returns:
The name of the model instance.
"""
return self.Name
def __hash__(self) -> int:
"""
Return the hash of the model.
This is the value of the
:py:attr:`Name` attribute.
"""
return hash(self.Name)
# =======================
# Request/Response Models
# =======================
[docs]class ChangeInfo(Boto3Model):
"""
A complex type that describes change information about changes made to your hosted
zone.
"""
Id: str
"""
This element contains an ID that you use when performing a
`GetChange <https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetChange.html>`_ action to get detailed
information about the change.
"""
Status: Literal["PENDING", "INSYNC"]
"""
The current state of the request.
``PENDING`` indicates that this request has not yet been applied to all Amazon Route
53 DNS servers.
"""
SubmittedAt: datetime
"""
The date and time that the change request was submitted in `ISO 8601 format <https://en.wikipedia.org/wiki/ISO_8601>`_ and
Coordinated Universal Time (UTC). For example, the value ``2017-03-27T17:48:16.751Z`` represents March 27, 2017 at
17:48:16.751 UTC.
"""
Comment: "str | None" = None
"""
A comment you can provide.
"""
[docs]class Route53DelegationSet(Boto3Model):
"""
A complex type that lists the name servers in a delegation set, as well as the
``CallerReference`` and the ``ID`` for the delegation set.
"""
Id: "str | None" = None
"""
The ID that Amazon Route 53 assigns to a reusable delegation set.
"""
CallerReference: "str | None" = None
"""
The value that you specified for ``CallerReference`` when you created the reusable
delegation set.
"""
NameServers: "builtins.list[str]"
"""
A complex type that contains a list of the authoritative name servers for a hosted
zone or for a reusable delegation set.
"""
[docs]class CreateHostedZoneResponse(Boto3Model):
"""
A complex type containing the response information for the hosted zone.
"""
HostedZone: "HostedZone"
"""
A complex type that contains general information about the hosted zone.
"""
ChangeInfo: "ChangeInfo"
"""
A complex type that contains information about the ``CreateHostedZone`` request.
"""
DelegationSet: Route53DelegationSet
"""
A complex type that describes the name servers for this hosted zone.
"""
VPC: "Route53VPC | None" = None
"""
A complex type that contains information about an Amazon VPC that you associated
with this hosted zone.
"""
Location: str
"""
The unique URL representing the new hosted zone.
"""
[docs]class DeleteHostedZoneResponse(Boto3Model):
"""
A complex type that contains the response to a ``DeleteHostedZone`` request.
"""
ChangeInfo: "ChangeInfo"
"""
A complex type that contains the ID, the status, and the date and time of a request
to delete a hosted zone.
"""
[docs]class GetHostedZoneResponse(Boto3Model):
"""
A complex type that contain the response to a ``GetHostedZone`` request.
"""
HostedZone: "HostedZone"
"""
A complex type that contains general information about the specified hosted zone.
"""
DelegationSet: "Route53DelegationSet | None" = None
"""
A complex type that lists the Amazon Route 53 name servers for the specified hosted
zone.
"""
VPCs: "builtins.list[Route53VPC] | None" = Field(default_factory=list)
"""
A complex type that contains information about the VPCs that are associated with the
specified hosted zone.
"""
[docs]class ListHostedZonesResponse(Boto3Model):
Marker: "str | None" = None
"""
For the second and subsequent calls to ``ListHostedZones``, ``Marker`` is the value
that you specified for the ``marker`` parameter in the request that produced the
current response.
"""
HostedZones: "builtins.list[HostedZone]"
"""
A complex type that contains general information about the hosted zone.
"""
IsTruncated: bool
"""
A flag indicating whether there are more hosted zones to be listed.
If the response was truncated, you can get more
hosted zones by submitting another ``ListHostedZones`` request and specifying the value of ``NextMarker`` in the
``marker`` parameter.
"""
NextMarker: "str | None" = None
"""
If ``IsTruncated`` is ``true``, the value of ``NextMarker`` identifies the first
hosted zone in the next group of hosted zones.
Submit another ``ListHostedZones`` request, and specify the value of ``NextMarker`` from the response in the
``marker`` parameter.
"""
MaxItems: str
"""
The value that you specified for the ``maxitems`` parameter in the call to
``ListHostedZones`` that produced the current response.
"""
[docs]class ListResourceRecordSetsResponse(Boto3Model):
"""
A complex type that contains list information for the resource record set.
"""
ResourceRecordSets: "builtins.list[Route53ResourceRecordSet]"
"""
Information about multiple resource record sets.
"""
IsTruncated: bool
"""
A flag that indicates whether more resource record sets remain to be listed.
If your results were truncated, you can
make a follow-up pagination request by using the ``NextRecordName`` element.
"""
NextRecordName: "str | None" = None
"""
If the results were truncated, the name of the next record in the list.
"""
NextRecordType: "Literal['SOA', 'A', 'TXT', 'NS', 'CNAME', 'MX', 'NAPTR', 'PTR', 'SRV', 'SPF', 'AAAA', 'CAA', 'DS', 'TLSA', 'SSHFP', 'SVCB', 'HTTPS'] | None" = None
"""
If the results were truncated, the type of the next record in the list.
"""
NextRecordIdentifier: "str | None" = None
"""
*Resource record sets that have a routing policy other than simple:* If results were
truncated for a given DNS name and type, the value of ``SetIdentifier`` for the next
resource record set that has the current DNS name and type.
"""
MaxItems: str
"""
The maximum number of records you requested.
"""
[docs]class ListHostedZonesByNameResponse(Boto3Model):
"""
A complex type that contains the response information for the request.
"""
HostedZones: "builtins.list[HostedZone]"
"""
A complex type that contains general information about the hosted zone.
"""
DNSName: "str | None" = None
"""
For the second and subsequent calls to ``ListHostedZonesByName``, ``DNSName`` is the
value that you specified for the ``dnsname`` parameter in the request that produced
the current response.
"""
HostedZoneId: "str | None" = None
"""
The ID that Amazon Route 53 assigned to the hosted zone when you created it.
"""
IsTruncated: bool
"""
A flag that indicates whether there are more hosted zones to be listed.
If the response was truncated, you can get the
next group of ``maxitems`` hosted zones by calling ``ListHostedZonesByName`` again and specifying the values of
``NextDNSName`` and ``NextHostedZoneId`` elements in the ``dnsname`` and ``hostedzoneid`` parameters.
"""
NextDNSName: "str | None" = None
"""
If ``IsTruncated`` is true, the value of ``NextDNSName`` is the name of the first
hosted zone in the next group of ``maxitems`` hosted zones.
Call ``ListHostedZonesByName`` again and specify the value of ``NextDNSName`` and
``NextHostedZoneId`` in the ``dnsname`` and ``hostedzoneid`` parameters, respectively.
"""
NextHostedZoneId: "str | None" = None
"""
If ``IsTruncated`` is ``true``, the value of ``NextHostedZoneId`` identifies the
first hosted zone in the next group of ``maxitems`` hosted zones.
Call ``ListHostedZonesByName`` again and specify the value of ``NextDNSName`` and
``NextHostedZoneId`` in the ``dnsname`` and ``hostedzoneid`` parameters, respectively.
"""
MaxItems: str
"""
The value that you specified for the ``maxitems`` parameter in the call to
``ListHostedZonesByName`` that produced the current response.
"""
[docs]class GetHostedZoneCountResponse(Boto3Model):
"""
A complex type that contains the response to a ``GetHostedZoneCount`` request.
"""
HostedZoneCount: int
"""
The total number of public and private hosted zones that are associated with the
current Amazon Web Services account.
"""
[docs]class HostedZoneLimit(Boto3Model):
"""
A complex type that contains the type of limit that you specified in the request and
the current value for that limit.
"""
Type: Literal["MAX_RRSETS_BY_ZONE", "MAX_VPCS_ASSOCIATED_BY_ZONE"]
"""
The limit that you requested.
Valid values include the following:
"""
Value: int
"""
The current value for the limit that is specified by ``Type``.
"""
[docs]class GetHostedZoneLimitResponse(Boto3Model):
"""
A complex type that contains the requested limit.
"""
Limit: HostedZoneLimit
"""
The current setting for the specified limit.
For example, if you specified ``MAX_RRSETS_BY_ZONE`` for the value of
``Type`` in the request, the value of ``Limit`` is the maximum number of records that you can create in the specified
hosted zone.
"""
Count: int
"""
The current number of entities that you have created of the specified type.
For example, if you specified
``MAX_RRSETS_BY_ZONE`` for the value of ``Type`` in the request, the value of ``Count`` is the current number of records
that you have created in the specified hosted zone.
"""
[docs]class AssociateVPCWithHostedZoneResponse(Boto3Model):
"""
A complex type that contains the response information for the
``AssociateVPCWithHostedZone`` request.
"""
ChangeInfo: "ChangeInfo"
"""
A complex type that describes the changes made to your hosted zone.
"""
[docs]class DisassociateVPCFromHostedZoneResponse(Boto3Model):
"""
A complex type that contains the response information for the disassociate request.
"""
ChangeInfo: "ChangeInfo"
"""
A complex type that describes the changes made to the specified private hosted zone.
"""
[docs]class HostedZoneOwner(Boto3Model):
"""
A complex type that identifies a hosted zone that a specified Amazon VPC is
associated with and the owner of the hosted zone.
If there is a value for ``OwningAccount``, there is no value for ``OwningService``, and vice versa.
"""
OwningAccount: "str | None" = None
"""
If the hosted zone was created by an Amazon Web Services account, or was created by
an Amazon Web Services service that creates hosted zones using the current account,
``OwningAccount`` contains the account ID of that account.
For example, when you use Cloud Map to create a hosted zone, Cloud Map creates the
hosted zone using the current Amazon Web Services account.
"""
OwningService: "str | None" = None
"""
If an Amazon Web Services service uses its own account to create a hosted zone and
associate the specified VPC with that hosted zone, ``OwningService`` contains an
abbreviation that identifies the service.
For example, if Amazon Elastic File
System (Amazon EFS) created a hosted zone and associated a VPC with the hosted zone, the value of ``OwningService`` is
``efs.amazonaws.com``.
"""
[docs]class HostedZoneSummary(Boto3Model):
"""
In the response to a ``ListHostedZonesByVPC`` request, the ``HostedZoneSummaries``
element contains one ``HostedZoneSummary`` element for each hosted zone that the
specified Amazon VPC is associated with.
Each
``HostedZoneSummary`` element contains the hosted zone name and ID, and information about who owns the hosted zone.
"""
HostedZoneId: str
"""
The Route 53 hosted zone ID of a private hosted zone that the specified VPC is
associated with.
"""
Name: str
"""
The name of the private hosted zone, such as ``example.com``.
"""
Owner: HostedZoneOwner
"""
The owner of a private hosted zone that the specified VPC is associated with.
The owner can be either an Amazon Web Services account or an Amazon Web Services
service.
"""
[docs]class ListHostedZonesByVPCResponse(Boto3Model):
HostedZoneSummaries: "builtins.list[HostedZoneSummary]"
"""
A list that contains one ``HostedZoneSummary`` element for each hosted zone that the
specified Amazon VPC is associated with.
Each ``HostedZoneSummary`` element contains the hosted zone name and ID, and information about who owns the hosted
zone.
"""
MaxItems: str
"""
The value that you specified for ``MaxItems`` in the most recent
``ListHostedZonesByVPC`` request.
"""
NextToken: "str | None" = None
"""
The value that you will use for ``NextToken`` in the next ``ListHostedZonesByVPC``
request.
"""
[docs]class ListVPCAssociationAuthorizationsResponse(Boto3Model):
"""
A complex type that contains the response information for the request.
"""
HostedZoneId: str
"""
The ID of the hosted zone that you can associate the listed VPCs with.
"""
NextToken: "str | None" = None
"""
When the response includes a ``NextToken`` element, there are more VPCs that can be
associated with the specified hosted zone.
To get the next page of VPCs, submit another ``ListVPCAssociationAuthorizations`` request, and include the value
of the ``NextToken`` element from the response in the ``nexttoken`` request parameter.
"""
VPCs: "builtins.list[Route53VPC]"
"""
The list of VPCs that are authorized to be associated with the specified hosted
zone.
"""
[docs]class CreateVPCAssociationAuthorizationResponse(Boto3Model):
"""
A complex type that contains the response information from a
``CreateVPCAssociationAuthorization`` request.
"""
HostedZoneId: str
"""
The ID of the hosted zone that you authorized associating a VPC with.
"""
VPC: Route53VPC
"""
The VPC that you authorized associating with a hosted zone.
"""
[docs]class DeleteVPCAssociationAuthorizationResponse(Boto3Model):
"""
Empty response for the request.
"""
[docs]class CreateCidrCollectionResponse(Boto3Model):
Collection: "Route53CidrCollection | None" = None
"""
A complex type that contains information about the CIDR collection.
"""
Location: "str | None" = None
"""
A unique URL that represents the location for the CIDR collection.
"""
[docs]class DeleteCidrCollectionResponse(Boto3Model):
pass
[docs]class CollectionSummary(Boto3Model):
"""A complex type that is an entry in an
`CidrCollection <https://docs.aws.amazon.com/Route53/latest/APIReference/API_CidrCollection.html>`_ array.
"""
Arn: "str | None" = None
"""
The ARN of the collection summary.
Can be used to reference the collection in IAM policy or cross-account.
"""
Id: "str | None" = None
"""
Unique ID for the CIDR collection.
"""
Name: "str | None" = None
"""
The name of a CIDR collection.
"""
Version: "int | None" = None
"""
A sequential counter that RouteĀ 53 sets to 1 when you create a CIDR collection and
increments by 1 each time you update settings for the CIDR collection.
"""
[docs]class ListCidrCollectionsResponse(Boto3Model):
NextToken: "str | None" = None
"""
An opaque pagination token to indicate where the service is to begin enumerating
results.
"""
CidrCollections: "builtins.list[CollectionSummary] | None" = Field(
default_factory=list
)
"""
A complex type with information about the CIDR collection.
"""
[docs]class CidrCollectionChange(Boto3Model):
"""
A complex type that contains information about the CIDR collection change.
"""
LocationName: str
"""
Name of the location that is associated with the CIDR collection.
"""
Action: Literal["PUT", "DELETE_IF_EXISTS"]
"""
CIDR collection change action.
"""
CidrList: "builtins.list[str]"
"""
List of CIDR blocks.
"""
[docs]class ChangeCidrCollectionResponse(Boto3Model):
Id: str
"""
The ID that is returned by ``ChangeCidrCollection``.
You can use it as input to ``GetChange`` to see if a CIDR
collection change has propagated or not.
"""
[docs]class ListCidrBlocksResponse(Boto3Model):
NextToken: "str | None" = None
"""
An opaque pagination token to indicate where the service is to begin enumerating
results.
"""
CidrBlocks: "builtins.list[CidrBlockSummary] | None" = Field(default_factory=list)
"""
A complex type that contains information about the CIDR blocks.
"""
[docs]class CreateQueryLoggingConfigResponse(Boto3Model):
QueryLoggingConfig: Route53QueryLoggingConfig
"""
A complex type that contains the ID for a query logging configuration, the ID of the
hosted zone that you want to log queries for, and the ARN for the log group that you
want Amazon Route 53 to send query logs to.
"""
Location: str
"""
The unique URL representing the new query logging configuration.
"""
[docs]class DeleteQueryLoggingConfigResponse(Boto3Model):
pass
[docs]class GetQueryLoggingConfigResponse(Boto3Model):
QueryLoggingConfig: Route53QueryLoggingConfig
"""
A complex type that contains information about the query logging configuration that you specified in a
`GetQueryLoggingConfig <https://docs.aws.amazon.com/Route53/latest/APIReference/API_GetQueryLoggingConfig.html>`_ request.
"""
[docs]class ListQueryLoggingConfigsResponse(Boto3Model):
QueryLoggingConfigs: "builtins.list[Route53QueryLoggingConfig]"
"""
An array that contains one
`QueryLoggingConfig <https://docs.aws.amazon.com/Route53/latest/APIReference/API_QueryLoggingConfig.html>`_ element for
each configuration for DNS query logging that is associated with the current Amazon Web Services account.
"""
NextToken: "str | None" = None
"""
If a response includes the last of the query logging configurations that are
associated with the current Amazon Web Services account, ``NextToken`` doesn't
appear in the response.
"""
[docs]class Change(Boto3Model):
"""
The information for each resource record set that you want to change.
"""
Action: Literal["CREATE", "DELETE", "UPSERT"]
"""
The action to perform:
"""
ResourceRecordSet: Route53ResourceRecordSet
"""
Information about the resource record set to create, delete, or update.
"""
[docs]class ChangeBatch(Boto3Model):
"""
The information for a change request.
"""
Comment: "str | None" = None
"""
*Optional:* Any comments you want to include about a change batch request.
"""
Changes: "builtins.list[Change]"
"""
Information about the changes to make to the record sets.
"""
[docs]class ChangeResourceRecordSetsResponse(Boto3Model):
"""
A complex type containing the response for the request.
"""
ChangeInfo: "ChangeInfo"
"""
A complex type that contains information about changes made to your hosted zone.
"""