amazon.aws.route53 module – add or delete entries in Amazons Route 53 DNS service
Note
This module is part of the amazon.aws collection (version 11.3.0).
You might already have this collection installed if you are using the ansible package. It is not included in ansible-core. To check whether it is installed, run ansible-galaxy collection list.
To install it, use: ansible-galaxy collection install amazon.aws. You need further requirements to be able to use this module, see Requirements for details.
To use it in a playbook, specify: amazon.aws.route53.
New in amazon.aws 5.0.0
Synopsis
- Creates and deletes DNS records in Amazons Route 53 service.
- This module was originally added to
community.awsin release 1.0.0.
Requirements
The below requirements are needed on the host that executes this module.
- python >= 3.6
- boto3 >= 1.35.0
- botocore >= 1.35.0
Parameters
Parameter | Comments |
|---|---|
access_key aliases: aws_access_key_id, aws_access_key string | AWS access key ID. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The aws_access_key and profile options are mutually exclusive. The aws_access_key_id alias was added in release 5.1.0 for consistency with the AWS botocore SDK. |
alias boolean | Indicates if this is an alias record. Mutually exclusive with Defaults to Choices:
|
alias_evaluate_target_health boolean | Whether or not to evaluate an alias target health. Useful for aliases to Elastic Load Balancers. Choices:
|
alias_hosted_zone_id string | The hosted zone identifier. |
aws_ca_bundle path | The location of a CA Bundle to use when validating SSL certificates. The |
aws_config dictionary | A dictionary to modify the botocore configuration. Parameters can be found in the AWS documentation https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config. |
aws_region string added in amazon.aws 11.2.0 | The AWS region to use for API requests. If not specified, the value of the See the AWS documentation https://docs.aws.amazon.com/general/latest/gr/rande.html#ec2_region for more information. When |
debug_botocore_endpoint_logs boolean | Use a The Choices:
|
endpoint_url aliases: aws_endpoint_url string | URL to connect to instead of the default AWS endpoints. While this can be used to connection to other AWS-compatible services the amazon.aws and community.aws collections are only tested against AWS. The |
failover string | Failover resource record sets only. Whether this is the primary or secondary resource record set. Allowed values are Mutually exclusive with Choices:
|
geo_location dictionary added in community.aws 3.3.0 | Allows to control how Amazon Route 53 responds to DNS queries based on the geographic origin of the query. Two geolocation resource record sets that specify same geographic location cannot be created. Non-geolocation resource record sets that have the same values for the Name and Type elements as geolocation resource record sets cannot be created. |
|
continent_code string |
The two-letter code for the continent. Specifying |
|
country_code string |
The two-letter code for a country. Amazon Route 53 uses the two-letter country codes that are specified in ISO standard 3166-1 alpha-2 . |
|
subdivision_code string |
The two-letter code for a state of the United States. To specify |
health_check string | Health check to associate with this record |
hosted_zone_id string | The Hosted Zone ID of the DNS zone to modify. This is a required parameter, if parameter |
identifier string | Have to be specified for Weighted, latency-based and failover resource record sets only. An identifier that differentiates among multiple resource record sets that have the same combination of DNS name and type. |
overwrite boolean | Whether an existing record should be overwritten on create if values do not match. Choices:
|
private_zone boolean | If set to The default is to use the public zone. Choices:
|
profile aliases: aws_profile string | A named AWS profile to use for authentication. See the AWS documentation for more information about named profiles https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html. The The profile option is mutually exclusive with the aws_access_key, aws_secret_key and session_token options. |
record string / required | The full DNS record to create or delete. |
region string | Latency-based resource record sets only Among resource record sets that have the same combination of DNS name and type, a value that determines which region this should be associated with for the latency-based routing Mutually exclusive with This parameter has been deprecated and will be removed in a release after 2027-06-01. Please use |
retry_interval integer | In the case that Route 53 is still servicing a prior request, this module will wait and try again after this many seconds. If you have many domain names, the default of Default: |
routing_region string added in amazon.aws 11.2.0 | |
secret_key aliases: aws_secret_access_key, aws_secret_key string | AWS secret access key. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The secret_key and profile options are mutually exclusive. The aws_secret_access_key alias was added in release 5.1.0 for consistency with the AWS botocore SDK. |
session_token aliases: aws_session_token string | AWS STS session token for use with temporary credentials. See the AWS documentation for more information about access tokens https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys. The The session_token and profile options are mutually exclusive. |
state aliases: command string / required | Specifies the state of the resource record. Choices:
|
ttl integer | |
type string / required | The type of DNS record to create. Support for Choices:
|
validate_certs boolean | When set to Setting validate_certs=false is strongly discouraged, as an alternative, consider setting aws_ca_bundle instead. Choices:
|
value list / elements=string | The new value when creating a DNS record. YAML lists or multiple comma-spaced values are allowed for non-alias records. |
vpc_id string | When used in conjunction with This allows you to have multiple private hosted zones, all with the same name, attached to different VPCs. |
wait boolean | Wait until the changes have been replicated to all Amazon Route 53 DNS servers. Choices:
|
wait_timeout integer | How long to wait for the changes to be replicated, in seconds. Default: |
weight integer | Weighted resource record sets only. Among resource record sets that have the same combination of DNS name and type, a value that determines what portion of traffic for the current resource record set is routed to the associated location. Mutually exclusive with |
zone string | The DNS zone to modify. This is a required parameter, if parameter |
Notes
Note
- Caution: For modules, environment variables and configuration files are read from the Ansible ‘host’ context and not the ‘controller’ context. As such, files may need to be explicitly copied to the ‘host’. For lookup and connection plugins, environment variables and configuration files are read from the Ansible ‘controller’ context and not the ‘host’ context.
- The AWS SDK (boto3) that Ansible uses may also read defaults for credentials and other settings, such as the region, from its configuration files in the Ansible ‘host’ context (typically
~/.aws/credentials). See https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html for more information.
Examples
- name: Add new.foo.com as an A record with 3 IPs and wait until the changes have been replicated
amazon.aws.route53:
state: present
zone: foo.com
record: new.foo.com
type: A
ttl: 7200
value: 1.1.1.1,2.2.2.2,3.3.3.3
wait: true
- name: Update new.foo.com as an A record with a list of 3 IPs and wait until the changes have been replicated
amazon.aws.route53:
state: present
zone: foo.com
record: new.foo.com
type: A
ttl: 7200
value:
- 1.1.1.1
- 2.2.2.2
- 3.3.3.3
wait: true
- name: Retrieve the details for new.foo.com
amazon.aws.route53:
state: get
zone: foo.com
record: new.foo.com
type: A
register: rec
- name: Delete new.foo.com A record using the results from the get command
amazon.aws.route53:
state: absent
zone: foo.com
record: "{{ rec.set.record }}"
ttl: "{{ rec.set.ttl }}"
type: "{{ rec.set.type }}"
value: "{{ rec.set.value }}"
# Add an AAAA record. Note that because there are colons in the value
# that the IPv6 address must be quoted. Also shows using the old form command=create.
- name: Add an AAAA record
amazon.aws.route53:
command: create
zone: foo.com
record: localhost.foo.com
type: AAAA
ttl: 7200
value: "::1"
# For more information on SRV records see:
# https://en.wikipedia.org/wiki/SRV_record
- name: Add a SRV record with multiple fields for a service on port 22222
amazon.aws.route53:
state: present
zone: foo.com
record: "_example-service._tcp.foo.com"
type: SRV
value: "0 0 22222 host1.foo.com,0 0 22222 host2.foo.com"
# Note that TXT and SPF records must be surrounded
# by quotes when sent to Route 53:
- name: Add a TXT record.
amazon.aws.route53:
state: present
zone: foo.com
record: localhost.foo.com
type: TXT
ttl: 7200
value: '"bar"'
- name: Add an alias record that points to an Amazon ELB
amazon.aws.route53:
state: present
zone: foo.com
record: elb.foo.com
type: A
value: "{{ elb_dns_name }}"
alias: true
alias_hosted_zone_id: "{{ elb_zone_id }}"
- name: Retrieve the details for elb.foo.com
amazon.aws.route53:
state: get
zone: foo.com
record: elb.foo.com
type: A
register: rec
- name: Delete an alias record using the results from the get command
amazon.aws.route53:
state: absent
zone: foo.com
record: "{{ rec.set.record }}"
ttl: "{{ rec.set.ttl }}"
type: "{{ rec.set.type }}"
value: "{{ rec.set.value }}"
alias: true
alias_hosted_zone_id: "{{ rec.set.alias_hosted_zone_id }}"
- name: Add an alias record that points to an Amazon ELB and evaluates it health
amazon.aws.route53:
state: present
zone: foo.com
record: elb.foo.com
type: A
value: "{{ elb_dns_name }}"
alias: true
alias_hosted_zone_id: "{{ elb_zone_id }}"
alias_evaluate_target_health: true
- name: Add an AAAA record with Hosted Zone ID
amazon.aws.route53:
state: present
zone: foo.com
hosted_zone_id: Z2AABBCCDDEEFF
record: localhost.foo.com
type: AAAA
ttl: 7200
value: "::1"
- name: Use a routing policy to distribute traffic
amazon.aws.route53:
state: present
zone: foo.com
record: www.foo.com
type: CNAME
value: host1.foo.com
ttl: 30
# Routing policy
identifier: "host1@www"
weight: 100
health_check: "d994b780-3150-49fd-9205-356abdd42e75"
- name: Add a CAA record (RFC 6844)
amazon.aws.route53:
state: present
zone: example.com
record: example.com
type: CAA
value:
- 0 issue "ca.example.net"
- 0 issuewild ";"
- 0 iodef "mailto:security@example.com"
- name: Create a record with geo_location - country_code
amazon.aws.route53:
state: present
zone: '{{ zone_one }}'
record: 'geo-test.{{ zone_one }}'
identifier: "geohost@www"
type: A
value: 1.1.1.1
ttl: 30
geo_location:
country_code: US
- name: Create a record with geo_location - subdivision code
amazon.aws.route53:
state: present
zone: '{{ zone_one }}'
record: 'geo-test.{{ zone_one }}'
identifier: "geohost@www"
type: A
value: 1.1.1.1
ttl: 30
geo_location:
country_code: US
subdivision_code: TX
- name: Add new.foo.com as an SSHFP record
amazon.aws.route53:
state: present
zone: test-zone.com
record: new.foo.com
type: SSHFP
ttl: 7200
value: 1 1 11F1A11D1111112B111C1B11B1C11C11C1234567
- name: Delete new.foo.com as an SSHFP record
amazon.aws.route53:
state: absent
zone: test-zone.com
record: new.foo.com
type: SSHFP
Return Values
Common return values are documented here, the following are the fields unique to this module:
Key | Description |
|---|---|
nameservers list / elements=string | Nameservers associated with the zone. Returned: when state is ‘get’ Sample: |
resource_record_sets complex | Info specific to the resource record. Returned: when state is ‘get’ |
|
alias boolean |
Whether this is an alias. Returned: always Sample: |
|
failover string |
Whether this is the primary or secondary resource record set. Returned: always Sample: |
|
geo_location dictionary added in community.aws 3.3.0 |
Geograpic location based on which Route53 resonds to DNS queries. Returned: when configured Sample: |
|
health_check string |
Health check associated with this record. Returned: always |
|
identifier string |
An identifier that differentiates among multiple resource record sets that have the same combination of DNS name and type. Returned: always |
|
name string |
Domain name for the record set. Returned: always Sample: |
|
record string |
Domain name for the record set. Returned: always Sample: |
|
record_values list / elements=string added in amazon.aws 11.0.0 |
Record values as a list. Returned: always Sample: |
|
region string |
Which region this should be associated with for latency-based routing. This return value has been deprecated and will be removed in a release after 2027-06-01. Use Returned: always Sample: |
|
resource_records list / elements=string |
Information about the resource records to act upon. Returned: always Sample: |
|
routing_region string added in amazon.aws 11.2.0 |
Which region this should be associated with for latency-based routing. Returned: always Sample: |
|
ttl string |
Resource record cache TTL. Returned: always Sample: |
|
type string |
Resource record set type. Returned: always Sample: |
|
value string |
Record value. Returned: always Sample: |
|
values list / elements=string |
Record values as a list. This return value has been deprecated and will be removed in a release after 2026-12-01. Use Returned: always Sample: |
|
weight string |
Weight of the record. Returned: always Sample: |
|
zone string |
Zone this record set belongs to. Returned: always Sample: |
wait_id string added in amazon.aws 6.3.0 | The wait ID for the applied change. Can be used to wait for the change to propagate later on when Returned: when changed |
Collection links
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/amazon/aws/route53_module.html