CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7

A Pulumi provider SDK for creating and managing Amazon Web Services (AWS) cloud resources in Go, providing strongly-typed resource classes and data sources for all major AWS services.

Overview
Eval results
Files

route53.mddocs/reference/networking/

Route 53

The route53 package provides resources for managing DNS hosted zones, records, health checks, resolver rules, traffic policies, and related Route 53 features.

Import

import "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53"

Available Resources and Data Sources

// Resources
NewCidrCollection(ctx, name, args, opts) (*CidrCollection, error)
NewCidrLocation(ctx, name, args, opts) (*CidrLocation, error)
NewDelegationSet(ctx, name, args, opts) (*DelegationSet, error)
NewHealthCheck(ctx, name, args, opts) (*HealthCheck, error)
NewHostedZoneDnsSec(ctx, name, args, opts) (*HostedZoneDnsSec, error)
NewKeySigningKey(ctx, name, args, opts) (*KeySigningKey, error)
NewProfilesAssociation(ctx, name, args, opts) (*ProfilesAssociation, error)
NewProfilesProfile(ctx, name, args, opts) (*ProfilesProfile, error)
NewProfilesResourceAssociation(ctx, name, args, opts) (*ProfilesResourceAssociation, error)
NewQueryLog(ctx, name, args, opts) (*QueryLog, error)
NewRecord(ctx, name, args, opts) (*Record, error)
NewRecordsExclusive(ctx, name, args, opts) (*RecordsExclusive, error)
NewResolverConfig(ctx, name, args, opts) (*ResolverConfig, error)
NewResolverDnsSecConfig(ctx, name, args, opts) (*ResolverDnsSecConfig, error)
NewResolverEndpoint(ctx, name, args, opts) (*ResolverEndpoint, error)
NewResolverFirewallConfig(ctx, name, args, opts) (*ResolverFirewallConfig, error)
NewResolverFirewallDomainList(ctx, name, args, opts) (*ResolverFirewallDomainList, error)
NewResolverFirewallRule(ctx, name, args, opts) (*ResolverFirewallRule, error)
NewResolverFirewallRuleGroup(ctx, name, args, opts) (*ResolverFirewallRuleGroup, error)
NewResolverFirewallRuleGroupAssociation(ctx, name, args, opts) (*ResolverFirewallRuleGroupAssociation, error)
NewResolverQueryLogConfig(ctx, name, args, opts) (*ResolverQueryLogConfig, error)
NewResolverQueryLogConfigAssociation(ctx, name, args, opts) (*ResolverQueryLogConfigAssociation, error)
NewResolverRule(ctx, name, args, opts) (*ResolverRule, error)
NewResolverRuleAssociation(ctx, name, args, opts) (*ResolverRuleAssociation, error)
NewTrafficPolicy(ctx, name, args, opts) (*TrafficPolicy, error)
NewTrafficPolicyInstance(ctx, name, args, opts) (*TrafficPolicyInstance, error)
NewVpcAssociationAuthorization(ctx, name, args, opts) (*VpcAssociationAuthorization, error)
NewZone(ctx, name, args, opts) (*Zone, error)
NewZoneAssociation(ctx, name, args, opts) (*ZoneAssociation, error)

// Data Sources (lookup functions)
GetCidrCollection(ctx, name, id, state, opts) (*CidrCollection, error)
GetCidrLocation(ctx, name, id, state, opts) (*CidrLocation, error)
GetDelegationSet(ctx, name, id, state, opts) (*DelegationSet, error)
GetHealthCheck(ctx, name, id, state, opts) (*HealthCheck, error)
GetHostedZoneDnsSec(ctx, name, id, state, opts) (*HostedZoneDnsSec, error)
GetKeySigningKey(ctx, name, id, state, opts) (*KeySigningKey, error)
GetQueryLog(ctx, name, id, state, opts) (*QueryLog, error)
GetRecord(ctx, name, id, state, opts) (*Record, error)
GetResolverConfig(ctx, name, id, state, opts) (*ResolverConfig, error)
GetResolverDnsSecConfig(ctx, name, id, state, opts) (*ResolverDnsSecConfig, error)
GetResolverEndpoint(ctx, name, id, state, opts) (*ResolverEndpoint, error)
GetResolverFirewallConfig(ctx, name, id, state, opts) (*ResolverFirewallConfig, error)
GetResolverFirewallDomainList(ctx, name, id, state, opts) (*ResolverFirewallDomainList, error)
GetResolverFirewallRule(ctx, name, id, state, opts) (*ResolverFirewallRule, error)
GetResolverFirewallRuleGroup(ctx, name, id, state, opts) (*ResolverFirewallRuleGroup, error)
GetResolverFirewallRuleGroupAssociation(ctx, name, id, state, opts) (*ResolverFirewallRuleGroupAssociation, error)
GetResolverQueryLogConfig(ctx, name, id, state, opts) (*ResolverQueryLogConfig, error)
GetResolverQueryLogConfigAssociation(ctx, name, id, state, opts) (*ResolverQueryLogConfigAssociation, error)
GetResolverRule(ctx, name, id, state, opts) (*ResolverRule, error)
GetResolverRuleAssociation(ctx, name, id, state, opts) (*ResolverRuleAssociation, error)
GetTrafficPolicy(ctx, name, id, state, opts) (*TrafficPolicy, error)
GetTrafficPolicyInstance(ctx, name, id, state, opts) (*TrafficPolicyInstance, error)
GetVpcAssociationAuthorization(ctx, name, id, state, opts) (*VpcAssociationAuthorization, error)
GetZone(ctx, name, id, state, opts) (*Zone, error)
GetZoneAssociation(ctx, name, id, state, opts) (*ZoneAssociation, error)
GetZones(ctx, args, opts) (*GetZonesResult, error)
GetZonesOutput(ctx, args, opts) GetZonesResultOutput

// Invoke functions (data source lookups)
LookupZone(ctx, args, opts) (*LookupZoneResult, error)
GetRecords(ctx, args, opts) (*GetRecordsResult, error)
GetRecordsOutput(ctx, args, opts) GetRecordsResultOutput
GetTrafficPolicyDocument(ctx, args, opts) (*GetTrafficPolicyDocumentResult, error)
GetTrafficPolicyDocumentOutput(ctx, args, opts) GetTrafficPolicyDocumentResultOutput
GetProfilesProfiles(ctx, args, opts) (*GetProfilesProfilesResult, error)
GetProfilesProfilesOutput(ctx, args, opts) GetProfilesProfilesResultOutput
GetResolverFirewallRules(ctx, args, opts) (*GetResolverFirewallRulesResult, error)
GetResolverFirewallRulesOutput(ctx, args, opts) GetResolverFirewallRulesResultOutput
GetResolverRules(ctx, args, opts) (*GetResolverRulesResult, error)
GetResolverRulesOutput(ctx, args, opts) GetResolverRulesResultOutput

Zone

Manages a Route 53 hosted zone. For DNSSEC management, use route53.KeySigningKey and route53.HostedZoneDnsSec alongside this resource.

Constructor

func NewZone(
    ctx  *pulumi.Context,
    name string,
    args *route53.ZoneArgs,
    opts ...pulumi.ResourceOption,
) (*route53.Zone, error)

ZoneArgs Fields

type ZoneArgs struct {
    // This is the name of the hosted zone (e.g., "example.com"). Required.
    Name pulumi.StringInput

    // A comment for the hosted zone. Defaults to "Managed by Pulumi".
    Comment pulumi.StringPtrInput

    // ID of a reusable delegation set whose NS records to assign to this zone.
    // Conflicts with Vpcs (delegation sets work only for public zones).
    DelegationSetId pulumi.StringPtrInput

    // Enable accelerated recovery for the hosted zone. Default: false.
    EnableAcceleratedRecovery pulumi.BoolPtrInput

    // Destroy all records when destroying the zone (including those managed externally). Default: false.
    ForceDestroy pulumi.BoolPtrInput

    // Resource tags.
    Tags pulumi.StringMapInput

    // VPC association blocks for a private hosted zone. At least one VPC is required for private zones.
    // Conflicts with DelegationSetId.
    Vpcs ZoneVpcArrayInput
}

Zone Output Attributes

FieldTypeDescription
Arnpulumi.StringOutputARN of the hosted zone
Commentpulumi.StringOutputHosted zone comment
DelegationSetIdpulumi.StringPtrOutputReusable delegation set ID
Namepulumi.StringOutputZone name
NameServerspulumi.StringArrayOutputList of authoritative name servers
PrimaryNameServerpulumi.StringOutputPrimary name server (created the SOA record)
ZoneIdpulumi.StringOutputRoute 53 hosted zone ID for use in records
VpcsZoneVpcArrayOutputAssociated VPCs (private zones only)

Example — Public Hosted Zone

import (
    "github.com/pulumi/pulumi-aws/sdk/v7/go/aws/route53"
    "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
    pulumi.Run(func(ctx *pulumi.Context) error {
        zone, err := route53.NewZone(ctx, "primary", &route53.ZoneArgs{
            Name: pulumi.String("example.com"),
        })
        if err != nil {
            return err
        }
        ctx.Export("zoneId", zone.ZoneId)
        return nil
    })
}

Example — Private Hosted Zone

primary, _ := ec2.NewVpc(ctx, "primary", &ec2.VpcArgs{
    CidrBlock:          pulumi.String("10.6.0.0/16"),
    EnableDnsHostnames: pulumi.Bool(true),
    EnableDnsSupport:   pulumi.Bool(true),
})

_, err := route53.NewZone(ctx, "private", &route53.ZoneArgs{
    Name: pulumi.String("example.com"),
    Vpcs: route53.ZoneVpcArray{
        &route53.ZoneVpcArgs{
            VpcId: primary.ID(),
        },
    },
})

Example — Public Subdomain Zone with NS Delegation

main, _ := route53.NewZone(ctx, "main", &route53.ZoneArgs{
    Name: pulumi.String("example.com"),
})
dev, _ := route53.NewZone(ctx, "dev", &route53.ZoneArgs{
    Name: pulumi.String("dev.example.com"),
    Tags: pulumi.StringMap{"Environment": pulumi.String("dev")},
})
// Delegate the subdomain by creating an NS record in the parent zone
_, err := route53.NewRecord(ctx, "dev-ns", &route53.RecordArgs{
    ZoneId:  main.ZoneId,
    Name:    pulumi.String("dev.example.com"),
    Type:    pulumi.String(route53.RecordTypeNS),
    Ttl:     pulumi.Int(30),
    Records: dev.NameServers,
})

Record

Manages a Route 53 DNS record.

Constructor

func NewRecord(
    ctx  *pulumi.Context,
    name string,
    args *route53.RecordArgs,
    opts ...pulumi.ResourceOption,
) (*route53.Record, error)

RecordArgs Fields

type RecordArgs struct {
    // Hosted zone ID to contain this record. Required.
    ZoneId pulumi.StringInput

    // Record name (e.g., "www" or "www.example.com"). Required.
    Name pulumi.StringInput

    // Record type. Required.
    // Valid values: "A", "AAAA", "CAA", "CNAME", "DS", "HTTPS", "MX", "NAPTR",
    // "NS", "PTR", "SOA", "SPF", "SRV", "SSHFP", "SVCB", "TLSA", "TXT".
    Type pulumi.StringInput

    // TTL in seconds. Conflicts with Aliases.
    Ttl pulumi.IntPtrInput

    // Record values. Conflicts with Aliases. Exactly one of Records or Aliases must be set.
    Records pulumi.StringArrayInput

    // Alias record block. Conflicts with Ttl and Records.
    Aliases RecordAliasArrayInput

    // Allow overwriting an existing record. Default: false.
    AllowOverwrite pulumi.BoolPtrInput

    // Health check to associate with this record.
    HealthCheckId pulumi.StringPtrInput

    // Unique set identifier. Required when using routing policies.
    SetIdentifier pulumi.StringPtrInput

    // Weighted routing policy block. Conflicts with other routing policies.
    WeightedRoutingPolicies RecordWeightedRoutingPolicyArrayInput

    // Latency-based routing policy block.
    LatencyRoutingPolicies RecordLatencyRoutingPolicyArrayInput

    // Geolocation routing policy block.
    GeolocationRoutingPolicies RecordGeolocationRoutingPolicyArrayInput

    // Geoproximity routing policy block.
    GeoproximityRoutingPolicy RecordGeoproximityRoutingPolicyPtrInput

    // Failover routing policy block.
    FailoverRoutingPolicies RecordFailoverRoutingPolicyArrayInput

    // CIDR-based routing policy block.
    CidrRoutingPolicy RecordCidrRoutingPolicyPtrInput

    // Multivalue answer routing policy. Conflicts with other routing policies.
    MultivalueAnswerRoutingPolicy pulumi.BoolPtrInput
}

Record Output Attributes

FieldTypeDescription
Fqdnpulumi.StringOutputFully-qualified domain name built from zone domain and record name
Namepulumi.StringOutputRecord name
Typepulumi.StringOutputRecord type
ZoneIdpulumi.StringOutputContaining hosted zone ID

Supported Record Types

A, AAAA, CAA, CNAME, DS, HTTPS, MX, NAPTR, NS, PTR, SOA, SPF, SRV, SSHFP, SVCB, TLSA, TXT

Constants are available as route53.RecordTypeA, route53.RecordTypeAAAA, route53.RecordTypeCNAME, route53.RecordTypeNS, etc.

Example — Simple A Record

_, err := route53.NewRecord(ctx, "www", &route53.RecordArgs{
    ZoneId:  pulumi.Any(primary.ZoneId),
    Name:    pulumi.String("www.example.com"),
    Type:    pulumi.String(route53.RecordTypeA),
    Ttl:     pulumi.Int(300),
    Records: pulumi.StringArray{pulumi.String("93.184.216.34")},
})

Example — Alias Record (pointing to an ALB)

// TTL is always 60s for alias records; omit the Ttl field.
_, err := route53.NewRecord(ctx, "alias", &route53.RecordArgs{
    ZoneId: pulumi.Any(primary.ZoneId),
    Name:   pulumi.String("example.com"),
    Type:   pulumi.String(route53.RecordTypeA),
    Aliases: route53.RecordAliasArray{
        &route53.RecordAliasArgs{
            Name:                 alb.DnsName,
            ZoneId:               alb.ZoneId,
            EvaluateTargetHealth: pulumi.Bool(true),
        },
    },
})

Example — Weighted Routing Policy

_, err := route53.NewRecord(ctx, "www-dev", &route53.RecordArgs{
    ZoneId: pulumi.Any(primary.ZoneId),
    Name:   pulumi.String("www"),
    Type:   pulumi.String(route53.RecordTypeCNAME),
    Ttl:    pulumi.Int(5),
    WeightedRoutingPolicies: route53.RecordWeightedRoutingPolicyArray{
        &route53.RecordWeightedRoutingPolicyArgs{Weight: pulumi.Int(10)},
    },
    SetIdentifier: pulumi.String("dev"),
    Records:       pulumi.StringArray{pulumi.String("dev.example.com")},
})

HealthCheck

Provides a Route 53 health check resource.

Constructor

func NewHealthCheck(
    ctx  *pulumi.Context,
    name string,
    args *route53.HealthCheckArgs,
    opts ...pulumi.ResourceOption,
) (*route53.HealthCheck, error)

Key HealthCheckArgs Fields

FieldTypeDescription
Typepulumi.StringInputRequired. Protocol type: HTTP, HTTPS, HTTP_STR_MATCH, HTTPS_STR_MATCH, TCP, CALCULATED, CLOUDWATCH_METRIC, RECOVERY_CONTROL
Fqdnpulumi.StringPtrInputFQDN of the endpoint. Sent as Host header when IpAddress is set
IpAddresspulumi.StringPtrInputIP address of the endpoint
Portpulumi.IntPtrInputPort to connect to
ResourcePathpulumi.StringPtrInputPath for HTTP/HTTPS checks
SearchStringpulumi.StringPtrInputString to search in first 5120 bytes. HTTP_STR_MATCH / HTTPS_STR_MATCH only
RequestIntervalpulumi.IntPtrInputSeconds between checks
FailureThresholdpulumi.IntInputConsecutive failures to mark unhealthy
EnableSnipulumi.BoolPtrInputSend SNI in TLS handshake. Default: true for HTTPS, false otherwise
MeasureLatencypulumi.BoolPtrInputEnable CloudWatch latency graphs
Regionspulumi.StringArrayInputAWS regions from which to run the check
ChildHealthcheckspulumi.StringArrayInputChild health check IDs. CALCULATED type only
ChildHealthThresholdpulumi.IntPtrInputMinimum healthy children (0–256). CALCULATED type only
CloudwatchAlarmNamepulumi.StringPtrInputCloudWatch alarm name. CLOUDWATCH_METRIC type only
CloudwatchAlarmRegionpulumi.StringPtrInputRegion of the CloudWatch alarm
InsufficientDataHealthStatuspulumi.StringPtrInputStatus when CloudWatch has insufficient data: Healthy, Unhealthy, LastKnownStatus
InvertHealthcheckpulumi.BoolPtrInputInvert the health check result
Disabledpulumi.BoolPtrInputStop Route 53 from performing health checks
RoutingControlArnpulumi.StringPtrInputARC routing control ARN. RECOVERY_CONTROL type only
ReferenceNamepulumi.StringPtrInputReference name for identification
Triggerspulumi.StringMapInputMap of values that trigger in-place updates when changed
Tagspulumi.StringMapInputResource tags

HealthCheck Output Attributes

FieldTypeDescription
Arnpulumi.StringOutputARN of the health check
Typepulumi.StringOutputProtocol type
Fqdnpulumi.StringPtrOutputEndpoint FQDN
IpAddresspulumi.StringPtrOutputEndpoint IP address

Example — HTTP Health Check

_, err := route53.NewHealthCheck(ctx, "example", &route53.HealthCheckArgs{
    Fqdn:             pulumi.String("example.com"),
    Port:             pulumi.Int(80),
    Type:             pulumi.String("HTTP"),
    ResourcePath:     pulumi.String("/health"),
    FailureThreshold: pulumi.Int(5),
    RequestInterval:  pulumi.Int(30),
    Tags: pulumi.StringMap{
        "Name": pulumi.String("example-health-check"),
    },
})

Example — CloudWatch Metric Health Check

alarm, _ := cloudwatch.NewMetricAlarm(ctx, "alarm", &cloudwatch.MetricAlarmArgs{
    Name:               pulumi.String("cpu-alarm"),
    ComparisonOperator: pulumi.String("GreaterThanOrEqualToThreshold"),
    EvaluationPeriods:  pulumi.Int(2),
    MetricName:         pulumi.String("CPUUtilization"),
    Namespace:          pulumi.String("AWS/EC2"),
    Period:             pulumi.Int(120),
    Statistic:          pulumi.String("Average"),
    Threshold:          pulumi.Float64(80),
})
_, err := route53.NewHealthCheck(ctx, "cw-check", &route53.HealthCheckArgs{
    Type:                         pulumi.String("CLOUDWATCH_METRIC"),
    CloudwatchAlarmName:          alarm.Name,
    CloudwatchAlarmRegion:        pulumi.String("us-west-2"),
    InsufficientDataHealthStatus: pulumi.String("Healthy"),
})

LookupZone — Zone Data Source

Look up an existing hosted zone by name or ID.

Function Signature

func LookupZone(
    ctx  *pulumi.Context,
    args *route53.LookupZoneArgs,
    opts ...pulumi.InvokeOption,
) (*route53.LookupZoneResult, error)

LookupZoneArgs Fields

type LookupZoneArgs struct {
    // Hosted zone name to look up (e.g., "example.com").
    Name *string `pulumi:"name"`

    // Zone ID to look up. Mutually exclusive with Name.
    ZoneId *string `pulumi:"zoneId"`

    // When true, restrict lookup to private hosted zones.
    PrivateZone *bool `pulumi:"privateZone"`

    // Filter to private zones associated with this VPC ID.
    VpcId *string `pulumi:"vpcId"`

    // Tags that must exactly match the hosted zone.
    Tags map[string]string `pulumi:"tags"`

    // Enable accelerated recovery filter.
    EnableAcceleratedRecovery *bool `pulumi:"enableAcceleratedRecovery"`
}

LookupZoneResult Fields

type LookupZoneResult struct {
    // ARN of the hosted zone.
    Arn string `pulumi:"arn"`

    // Caller reference value.
    CallerReference string `pulumi:"callerReference"`

    // Comment on the hosted zone.
    Comment string `pulumi:"comment"`

    // Provider-assigned unique resource ID.
    Id string `pulumi:"id"`

    // The hosted zone name.
    Name string `pulumi:"name"`

    // List of authoritative name servers.
    NameServers []string `pulumi:"nameServers"`

    // Primary name server.
    PrimaryNameServer string `pulumi:"primaryNameServer"`

    // Whether this is a private hosted zone.
    PrivateZone *bool `pulumi:"privateZone"`

    // Number of record sets in the zone.
    ResourceRecordSetCount int `pulumi:"resourceRecordSetCount"`

    // Tags assigned to the zone.
    Tags map[string]string `pulumi:"tags"`

    // Associated VPC ID (private zones).
    VpcId *string `pulumi:"vpcId"`

    // Hosted zone identifier.
    ZoneId string `pulumi:"zoneId"`

    // Service that created this hosted zone (e.g., servicediscovery.amazonaws.com).
    LinkedServicePrincipal string `pulumi:"linkedServicePrincipal"`

    // Description provided by the linked service.
    LinkedServiceDescription string `pulumi:"linkedServiceDescription"`

    // Whether accelerated recovery is enabled.
    EnableAcceleratedRecovery *bool `pulumi:"enableAcceleratedRecovery"`
}

Example — Data Source Lookup

zone, err := route53.LookupZone(ctx, &route53.LookupZoneArgs{
    Name:        pulumi.StringRef("example.com"),
    PrivateZone: pulumi.BoolRef(false),
})
if err != nil {
    return err
}
// Use zone.ZoneId when creating records
_, err = route53.NewRecord(ctx, "api", &route53.RecordArgs{
    ZoneId:  pulumi.String(zone.ZoneId),
    Name:    pulumi.String("api.example.com"),
    Type:    pulumi.String(route53.RecordTypeA),
    Ttl:     pulumi.Int(300),
    Records: pulumi.StringArray{pulumi.String("1.2.3.4")},
})

Import

Hosted zones are imported using the zone ID:

pulumi import aws:route53/zone:Zone myzone Z1D633PJN98FT9

Records are imported using {zone_id}_{name}_{type}:

pulumi import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS

With a set identifier:

pulumi import aws_route53_record.example Z4KAPRWWNC7JR_dev_NS_dev

Health checks are imported using the health check ID:

pulumi import aws:route53/healthCheck:HealthCheck http_check abcdef11-2222-3333-4444-555555fedcba

Install with Tessl CLI

npx tessl i tessl/golang-github-com-pulumi-pulumi-aws-sdk-v7@7.16.1

docs

index.md

tile.json