Skip to content

aws.apigatewayv2-domain-name resource

Description

DomainName manages an API Gateway v2 custom domain and its regional endpoint configuration. API Gateway accepts exactly one domain-name-configuration, so the list length and the ARN syntax are checked in validate. Endpoint-type, security-policy, and routing-mode are also checked there because the service accepts the documented values case-insensitively, which the constraint layer cannot express compactly.

Source: internal/service/apigatewayv2/domain_name_rsrc.go:45

Example usage:

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

resources: {
  example: aws.apigatewayv2-domain-name {
    # Set input fields here.
  }
}

Inputs

domain-name

string

required

DomainName is the custom host name and the resource identity. It must be 1 to 512 characters, counted in validate because AWS counts characters and the constraint layer counts bytes.

domain-name-configurations

list(object)
list(
  object({
    certificate-arn: string
    endpoint-type: string
    ip-address-type: optional(string)
    ownership-verification-certificate-arn: optional(string)
    security-policy: string
  })
)

required

DomainNameConfigurations holds exactly one regional configuration. The list form follows the SDK and CloudFormation member name.

mutual-tls-authentication

optional(object)
optional(
  object({
    truststore-uri: string
    truststore-version: optional(string)
  })
)

MutualTlsAuthentication enables mutual TLS with an S3 truststore. Removing the block sends the service's empty truststore-uri sentinel, which disables mutual TLS instead of leaving the existing setting alone.

routing-mode

optional(string)

RoutingMode selects how the domain routes requests. Omitted on create lets the service use its default, API_MAPPING_ONLY.

tags

map(string)

Tags label the domain. Keys with the aws: prefix are ignored when sending creates and updates, matching AWS system-tag behavior.

Input Constraints

Domain name configurations rules

domain-name-configurations must have exactly one item.

Rule logic
Require
(input.domain-name-configurations == null || @core.length(input.domain-name-configurations) >= 1)
&& (input.domain-name-configurations == null || @core.length(input.domain-name-configurations) <= 1)

domain-name-configurations ip-address-type must be ipv4 or dualstack.

Rule logic
For each
input.domain-name-configurations
When
@each.value.ip-address-type != null
Require
@each.value.ip-address-type == 'ipv4'
|| @each.value.ip-address-type == 'dualstack'

Outputs

domain-name

string

arn

string

api-gateway-domain-name

string

target-domain-name

string

hosted-zone-id

string

api-mapping-selection-expression

string

domain-name-status

string

domain-name-status-message

string

ip-address-type

string

ownership-verification-certificate-arn

string

routing-mode

string

tags

map(string)