Skip to content

aws.route53-record-set resource

Description

RecordSet manages one Route 53 record set: a name, a type, and either a set of plain values or an alias to an AWS resource, optionally governed by a single routing policy. Every write -- create and update alike -- is one ChangeResourceRecordSets UPSERT against the hosted zone, gated by a poll until the change reaches INSYNC. The hosted zone, the name, the type, and the set-identifier together identify the record set at the API, so a change to any of them is a different record set and replaces this one; every other field is reconciled in place by the next UPSERT.

Source: internal/service/route53/record_set_rsrc.go:34

Example usage:

imports: {
  aws: 'github.com/cloudboss/unobin-library-aws'
}

resources: {
  example: aws.route53-record-set {
    # Set input fields here.
  }
}

Inputs

zone-id

string

required

name

string

required

type

string

required

set-identifier

optional(string)

records

list(string)

ttl

optional(integer)

health-check-id

optional(string)

alias

optional(object)
optional(
  object({
    name: string
    zone-id: string
    evaluate-target-health: boolean
  })
)

weighted-routing-policy

optional(object)
optional(
  object({
    weight: integer
  })
)

latency-routing-policy

optional(object)
optional(
  object({
    region: string
  })
)

failover-routing-policy

optional(object)
optional(
  object({
    type: string
  })
)

geolocation-routing-policy

optional(object)
optional(
  object({
    continent-code: optional(string)
    country-code: optional(string)
    subdivision-code: optional(string)
  })
)

multivalue-answer-routing-policy

optional(boolean)

Input Constraints

Zone id rules

Conditional requirement.

Rule logic
Require
input.zone-id != null
&& @core.length(input.zone-id) >= 1

Field combinations

Exactly one of alias or records.

Forbidden together: ttl and alias.

Required together: ttl and records.

At most one of weighted-routing-policy, latency-routing-policy, failover-routing-policy, geolocation-routing-policy, or multivalue-answer-routing-policy.

Required together: weighted-routing-policy and set-identifier.

Required together: latency-routing-policy and set-identifier.

Required together: failover-routing-policy and set-identifier.

Required together: geolocation-routing-policy and set-identifier.

Required together: multivalue-answer-routing-policy and set-identifier.

Failover routing policy rules

failover-routing-policy type must be PRIMARY or SECONDARY.

Rule logic
When
input.failover-routing-policy != null
Require
input.failover-routing-policy.type == 'PRIMARY'
|| input.failover-routing-policy.type == 'SECONDARY'

Latency routing policy rules

latency-routing-policy region must be a valid AWS region.

Rule logic
When
input.latency-routing-policy != null
Require
input.latency-routing-policy.region == 'us-east-1'
|| input.latency-routing-policy.region == 'us-east-2'
|| input.latency-routing-policy.region == 'us-west-1'
|| input.latency-routing-policy.region == 'us-west-2'
|| input.latency-routing-policy.region == 'ca-central-1'
|| input.latency-routing-policy.region == 'ca-west-1'
|| input.latency-routing-policy.region == 'eu-west-1'
|| input.latency-routing-policy.region == 'eu-west-2'
|| input.latency-routing-policy.region == 'eu-west-3'
|| input.latency-routing-policy.region == 'eu-central-1'
|| input.latency-routing-policy.region == 'eu-central-2'
|| input.latency-routing-policy.region == 'eu-north-1'
|| input.latency-routing-policy.region == 'eu-south-1'
|| input.latency-routing-policy.region == 'eu-south-2'
|| input.latency-routing-policy.region == 'ap-east-1'
|| input.latency-routing-policy.region == 'ap-east-2'
|| input.latency-routing-policy.region == 'ap-south-1'
|| input.latency-routing-policy.region == 'ap-south-2'
|| input.latency-routing-policy.region == 'ap-southeast-1'
|| input.latency-routing-policy.region == 'ap-southeast-2'
|| input.latency-routing-policy.region == 'ap-southeast-3'
|| input.latency-routing-policy.region == 'ap-southeast-4'
|| input.latency-routing-policy.region == 'ap-southeast-5'
|| input.latency-routing-policy.region == 'ap-southeast-6'
|| input.latency-routing-policy.region == 'ap-southeast-7'
|| input.latency-routing-policy.region == 'ap-northeast-1'
|| input.latency-routing-policy.region == 'ap-northeast-2'
|| input.latency-routing-policy.region == 'ap-northeast-3'
|| input.latency-routing-policy.region == 'sa-east-1'
|| input.latency-routing-policy.region == 'me-south-1'
|| input.latency-routing-policy.region == 'me-central-1'
|| input.latency-routing-policy.region == 'af-south-1'
|| input.latency-routing-policy.region == 'il-central-1'
|| input.latency-routing-policy.region == 'mx-central-1'
|| input.latency-routing-policy.region == 'cn-north-1'
|| input.latency-routing-policy.region == 'cn-northwest-1'
|| input.latency-routing-policy.region == 'us-gov-east-1'
|| input.latency-routing-policy.region == 'us-gov-west-1'
|| input.latency-routing-policy.region == 'eusc-de-east-1'

Type rules

Conditional requirement.

Rule logic
Require
input.type == 'A'
|| input.type == 'AAAA'
|| input.type == 'CAA'
|| input.type == 'CNAME'
|| input.type == 'DS'
|| input.type == 'MX'
|| input.type == 'NAPTR'
|| input.type == 'NS'
|| input.type == 'PTR'
|| input.type == 'SOA'
|| input.type == 'SPF'
|| input.type == 'SRV'
|| input.type == 'TXT'
|| input.type == 'TLSA'
|| input.type == 'SSHFP'
|| input.type == 'SVCB'
|| input.type == 'HTTPS'

Outputs

fqdn

string

zone-id

string

name

string

type

string

set-identifier

string