class Jets::Resource::Route53::RecordSet
def cname
def cname if endpoint_types.include?("REGIONAL") "!GetAtt DomainName.RegionalDomainName" else "!GetAtt DomainName.DistributionDomainName" end end
def definition
def definition { dns_record: { type: "AWS::Route53::RecordSet", properties: record_set_properties } } end
def domain_name
def domain_name Jets::Resource::ApiGateway::DomainName.new end
def domain_name_hosted_zone
def domain_name_hosted_zone if endpoint_types.include?("REGIONAL") "!GetAtt DomainName.RegionalHostedZoneId" else "!GetAtt DomainName.DistributionHostedZoneId" end end
def endpoint_types
def endpoint_types domain_name.endpoint_types end
def hosted_zone_name
def hosted_zone_name name = Jets.config.domain.hosted_zone_name name.ends_with?('.') ? name : "#{name}." # add trailing period if missing end
def name
def name # Weird looking but correct: domain_name is object and domain_name is also method domain_name.domain_name end
def outputs
def outputs { "DnsRecord" => "!Ref DnsRecord", } end
def record_set_properties
def record_set_properties base = { comment: "DNS record managed by Jets", name: name, } hosted_zone_id = Jets.config.domain.hosted_zone_id if hosted_zone_id base[:hosted_zone_id] = hosted_zone_id else base[:hosted_zone_name] = hosted_zone_name end if Jets.config.domain.apex base.merge( alias_target: { dns_name: cname, hosted_zone_id: domain_name_hosted_zone, }, type: "A", ) else base.merge({ type: "CNAME", ttl: "60", resource_records: [cname], }) end end