Domain Name
Manages an Amazon API Gateway Version 2 domain name. More information can be found in the Amazon API Gateway Developer Guide.
Note: This resource establishes ownership of and the TLS settings for a particular domain name. An API stage can be associated with the domain name using the
aws.apigatewayv2.ApiMapping
resource.
Example Usage
Basic
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.apigatewayv2.DomainName("example", {
domainName: "ws-api.example.com",
domainNameConfiguration: {
certificateArn: exampleAwsAcmCertificate.arn,
endpointType: "REGIONAL",
securityPolicy: "TLS_1_2",
},
});
Content copied to clipboard
import pulumi
import pulumi_aws as aws
example = aws.apigatewayv2.DomainName("example",
domain_name="ws-api.example.com",
domain_name_configuration={
"certificate_arn": example_aws_acm_certificate["arn"],
"endpoint_type": "REGIONAL",
"security_policy": "TLS_1_2",
})
Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.ApiGatewayV2.DomainName("example", new()
{
Domain = "ws-api.example.com",
DomainNameConfiguration = new Aws.ApiGatewayV2.Inputs.DomainNameDomainNameConfigurationArgs
{
CertificateArn = exampleAwsAcmCertificate.Arn,
EndpointType = "REGIONAL",
SecurityPolicy = "TLS_1_2",
},
});
});
Content copied to clipboard
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
_, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{
DomainName: pulumi.String("ws-api.example.com"),
DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
CertificateArn: pulumi.Any(exampleAwsAcmCertificate.Arn),
EndpointType: pulumi.String("REGIONAL"),
SecurityPolicy: pulumi.String("TLS_1_2"),
},
})
if err != nil {
return err
}
return nil
})
}
Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.apigatewayv2.DomainName;
import com.pulumi.aws.apigatewayv2.DomainNameArgs;
import com.pulumi.aws.apigatewayv2.inputs.DomainNameDomainNameConfigurationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new DomainName("example", DomainNameArgs.builder()
.domainName("ws-api.example.com")
.domainNameConfiguration(DomainNameDomainNameConfigurationArgs.builder()
.certificateArn(exampleAwsAcmCertificate.arn())
.endpointType("REGIONAL")
.securityPolicy("TLS_1_2")
.build())
.build());
}
}
Content copied to clipboard
resources:
example:
type: aws:apigatewayv2:DomainName
properties:
domainName: ws-api.example.com
domainNameConfiguration:
certificateArn: ${exampleAwsAcmCertificate.arn}
endpointType: REGIONAL
securityPolicy: TLS_1_2
Content copied to clipboard
Associated Route 53 Resource Record
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.apigatewayv2.DomainName("example", {
domainName: "http-api.example.com",
domainNameConfiguration: {
certificateArn: exampleAwsAcmCertificate.arn,
endpointType: "REGIONAL",
securityPolicy: "TLS_1_2",
},
});
const exampleRecord = new aws.route53.Record("example", {
name: example.domainName,
type: aws.route53.RecordType.A,
zoneId: exampleAwsRoute53Zone.zoneId,
aliases: [{
name: example.domainNameConfiguration.apply(domainNameConfiguration => domainNameConfiguration.targetDomainName),
zoneId: example.domainNameConfiguration.apply(domainNameConfiguration => domainNameConfiguration.hostedZoneId),
evaluateTargetHealth: false,
}],
});
Content copied to clipboard
import pulumi
import pulumi_aws as aws
example = aws.apigatewayv2.DomainName("example",
domain_name="http-api.example.com",
domain_name_configuration={
"certificate_arn": example_aws_acm_certificate["arn"],
"endpoint_type": "REGIONAL",
"security_policy": "TLS_1_2",
})
example_record = aws.route53.Record("example",
name=example.domain_name,
type=aws.route53.RecordType.A,
zone_id=example_aws_route53_zone["zoneId"],
aliases=[{
"name": example.domain_name_configuration.target_domain_name,
"zone_id": example.domain_name_configuration.hosted_zone_id,
"evaluate_target_health": False,
}])
Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
var example = new Aws.ApiGatewayV2.DomainName("example", new()
{
Domain = "http-api.example.com",
DomainNameConfiguration = new Aws.ApiGatewayV2.Inputs.DomainNameDomainNameConfigurationArgs
{
CertificateArn = exampleAwsAcmCertificate.Arn,
EndpointType = "REGIONAL",
SecurityPolicy = "TLS_1_2",
},
});
var exampleRecord = new Aws.Route53.Record("example", new()
{
Name = example.Domain,
Type = Aws.Route53.RecordType.A,
ZoneId = exampleAwsRoute53Zone.ZoneId,
Aliases = new[]
{
new Aws.Route53.Inputs.RecordAliasArgs
{
Name = example.DomainNameConfiguration.Apply(domainNameConfiguration => domainNameConfiguration.TargetDomainName),
ZoneId = example.DomainNameConfiguration.Apply(domainNameConfiguration => domainNameConfiguration.HostedZoneId),
EvaluateTargetHealth = false,
},
},
});
});
Content copied to clipboard
package main
import (
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2"
"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53"
"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
pulumi.Run(func(ctx *pulumi.Context) error {
example, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{
DomainName: pulumi.String("http-api.example.com"),
DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{
CertificateArn: pulumi.Any(exampleAwsAcmCertificate.Arn),
EndpointType: pulumi.String("REGIONAL"),
SecurityPolicy: pulumi.String("TLS_1_2"),
},
})
if err != nil {
return err
}
_, err = route53.NewRecord(ctx, "example", &route53.RecordArgs{
Name: example.DomainName,
Type: pulumi.String(route53.RecordTypeA),
ZoneId: pulumi.Any(exampleAwsRoute53Zone.ZoneId),
Aliases: route53.RecordAliasArray{
&route53.RecordAliasArgs{
Name: example.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
return &domainNameConfiguration.TargetDomainName, nil
}).(pulumi.StringPtrOutput),
ZoneId: example.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) {
return &domainNameConfiguration.HostedZoneId, nil
}).(pulumi.StringPtrOutput),
EvaluateTargetHealth: pulumi.Bool(false),
},
},
})
if err != nil {
return err
}
return nil
})
}
Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.apigatewayv2.DomainName;
import com.pulumi.aws.apigatewayv2.DomainNameArgs;
import com.pulumi.aws.apigatewayv2.inputs.DomainNameDomainNameConfigurationArgs;
import com.pulumi.aws.route53.Record;
import com.pulumi.aws.route53.RecordArgs;
import com.pulumi.aws.route53.inputs.RecordAliasArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var example = new DomainName("example", DomainNameArgs.builder()
.domainName("http-api.example.com")
.domainNameConfiguration(DomainNameDomainNameConfigurationArgs.builder()
.certificateArn(exampleAwsAcmCertificate.arn())
.endpointType("REGIONAL")
.securityPolicy("TLS_1_2")
.build())
.build());
var exampleRecord = new Record("exampleRecord", RecordArgs.builder()
.name(example.domainName())
.type("A")
.zoneId(exampleAwsRoute53Zone.zoneId())
.aliases(RecordAliasArgs.builder()
.name(example.domainNameConfiguration().applyValue(domainNameConfiguration -> domainNameConfiguration.targetDomainName()))
.zoneId(example.domainNameConfiguration().applyValue(domainNameConfiguration -> domainNameConfiguration.hostedZoneId()))
.evaluateTargetHealth(false)
.build())
.build());
}
}
Content copied to clipboard
resources:
example:
type: aws:apigatewayv2:DomainName
properties:
domainName: http-api.example.com
domainNameConfiguration:
certificateArn: ${exampleAwsAcmCertificate.arn}
endpointType: REGIONAL
securityPolicy: TLS_1_2
exampleRecord:
type: aws:route53:Record
name: example
properties:
name: ${example.domainName}
type: A
zoneId: ${exampleAwsRoute53Zone.zoneId}
aliases:
- name: ${example.domainNameConfiguration.targetDomainName}
zoneId: ${example.domainNameConfiguration.hostedZoneId}
evaluateTargetHealth: false
Content copied to clipboard
Import
Using pulumi import
, import aws_apigatewayv2_domain_name
using the domain name. For example:
$ pulumi import aws:apigatewayv2/domainName:DomainName example ws-api.example.com
Content copied to clipboard
Properties
Link copied to clipboard
API mapping selection expression for the domain name.
Link copied to clipboard
Domain name. Must be between 1 and 512 characters in length.
Link copied to clipboard
Domain name configuration. See below.
Link copied to clipboard
Mutual TLS authentication configuration for the domain name.
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard