github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/apigatewayv2/domainName.go (about) 1 // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT. 2 // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** 3 4 package apigatewayv2 5 6 import ( 7 "context" 8 "reflect" 9 10 "errors" 11 "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal" 12 "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 13 ) 14 15 // Manages an Amazon API Gateway Version 2 domain name. 16 // More information can be found in the [Amazon API Gateway Developer Guide](https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html). 17 // 18 // > **Note:** This resource establishes ownership of and the TLS settings for 19 // a particular domain name. An API stage can be associated with the domain name using the `apigatewayv2.ApiMapping` resource. 20 // 21 // ## Example Usage 22 // 23 // ### Basic 24 // 25 // <!--Start PulumiCodeChooser --> 26 // ```go 27 // package main 28 // 29 // import ( 30 // 31 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2" 32 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 33 // 34 // ) 35 // 36 // func main() { 37 // pulumi.Run(func(ctx *pulumi.Context) error { 38 // _, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{ 39 // DomainName: pulumi.String("ws-api.example.com"), 40 // DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{ 41 // CertificateArn: pulumi.Any(exampleAwsAcmCertificate.Arn), 42 // EndpointType: pulumi.String("REGIONAL"), 43 // SecurityPolicy: pulumi.String("TLS_1_2"), 44 // }, 45 // }) 46 // if err != nil { 47 // return err 48 // } 49 // return nil 50 // }) 51 // } 52 // 53 // ``` 54 // <!--End PulumiCodeChooser --> 55 // 56 // ### Associated Route 53 Resource Record 57 // 58 // <!--Start PulumiCodeChooser --> 59 // ```go 60 // package main 61 // 62 // import ( 63 // 64 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/apigatewayv2" 65 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53" 66 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 67 // 68 // ) 69 // 70 // func main() { 71 // pulumi.Run(func(ctx *pulumi.Context) error { 72 // example, err := apigatewayv2.NewDomainName(ctx, "example", &apigatewayv2.DomainNameArgs{ 73 // DomainName: pulumi.String("http-api.example.com"), 74 // DomainNameConfiguration: &apigatewayv2.DomainNameDomainNameConfigurationArgs{ 75 // CertificateArn: pulumi.Any(exampleAwsAcmCertificate.Arn), 76 // EndpointType: pulumi.String("REGIONAL"), 77 // SecurityPolicy: pulumi.String("TLS_1_2"), 78 // }, 79 // }) 80 // if err != nil { 81 // return err 82 // } 83 // _, err = route53.NewRecord(ctx, "example", &route53.RecordArgs{ 84 // Name: example.DomainName, 85 // Type: pulumi.String(route53.RecordTypeA), 86 // ZoneId: pulumi.Any(exampleAwsRoute53Zone.ZoneId), 87 // Aliases: route53.RecordAliasArray{ 88 // &route53.RecordAliasArgs{ 89 // Name: example.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) { 90 // return &domainNameConfiguration.TargetDomainName, nil 91 // }).(pulumi.StringPtrOutput), 92 // ZoneId: example.DomainNameConfiguration.ApplyT(func(domainNameConfiguration apigatewayv2.DomainNameDomainNameConfiguration) (*string, error) { 93 // return &domainNameConfiguration.HostedZoneId, nil 94 // }).(pulumi.StringPtrOutput), 95 // EvaluateTargetHealth: pulumi.Bool(false), 96 // }, 97 // }, 98 // }) 99 // if err != nil { 100 // return err 101 // } 102 // return nil 103 // }) 104 // } 105 // 106 // ``` 107 // <!--End PulumiCodeChooser --> 108 // 109 // ## Import 110 // 111 // Using `pulumi import`, import `aws_apigatewayv2_domain_name` using the domain name. For example: 112 // 113 // ```sh 114 // $ pulumi import aws:apigatewayv2/domainName:DomainName example ws-api.example.com 115 // ``` 116 type DomainName struct { 117 pulumi.CustomResourceState 118 119 // [API mapping selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-mapping-selection-expressions) for the domain name. 120 ApiMappingSelectionExpression pulumi.StringOutput `pulumi:"apiMappingSelectionExpression"` 121 // ARN of the domain name. 122 Arn pulumi.StringOutput `pulumi:"arn"` 123 // Domain name. Must be between 1 and 512 characters in length. 124 DomainName pulumi.StringOutput `pulumi:"domainName"` 125 // Domain name configuration. See below. 126 DomainNameConfiguration DomainNameDomainNameConfigurationOutput `pulumi:"domainNameConfiguration"` 127 // Mutual TLS authentication configuration for the domain name. 128 MutualTlsAuthentication DomainNameMutualTlsAuthenticationPtrOutput `pulumi:"mutualTlsAuthentication"` 129 // Map of tags to assign to the domain name. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 130 Tags pulumi.StringMapOutput `pulumi:"tags"` 131 // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 132 // 133 // Deprecated: Please use `tags` instead. 134 TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` 135 } 136 137 // NewDomainName registers a new resource with the given unique name, arguments, and options. 138 func NewDomainName(ctx *pulumi.Context, 139 name string, args *DomainNameArgs, opts ...pulumi.ResourceOption) (*DomainName, error) { 140 if args == nil { 141 return nil, errors.New("missing one or more required arguments") 142 } 143 144 if args.DomainName == nil { 145 return nil, errors.New("invalid value for required argument 'DomainName'") 146 } 147 if args.DomainNameConfiguration == nil { 148 return nil, errors.New("invalid value for required argument 'DomainNameConfiguration'") 149 } 150 opts = internal.PkgResourceDefaultOpts(opts) 151 var resource DomainName 152 err := ctx.RegisterResource("aws:apigatewayv2/domainName:DomainName", name, args, &resource, opts...) 153 if err != nil { 154 return nil, err 155 } 156 return &resource, nil 157 } 158 159 // GetDomainName gets an existing DomainName resource's state with the given name, ID, and optional 160 // state properties that are used to uniquely qualify the lookup (nil if not required). 161 func GetDomainName(ctx *pulumi.Context, 162 name string, id pulumi.IDInput, state *DomainNameState, opts ...pulumi.ResourceOption) (*DomainName, error) { 163 var resource DomainName 164 err := ctx.ReadResource("aws:apigatewayv2/domainName:DomainName", name, id, state, &resource, opts...) 165 if err != nil { 166 return nil, err 167 } 168 return &resource, nil 169 } 170 171 // Input properties used for looking up and filtering DomainName resources. 172 type domainNameState struct { 173 // [API mapping selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-mapping-selection-expressions) for the domain name. 174 ApiMappingSelectionExpression *string `pulumi:"apiMappingSelectionExpression"` 175 // ARN of the domain name. 176 Arn *string `pulumi:"arn"` 177 // Domain name. Must be between 1 and 512 characters in length. 178 DomainName *string `pulumi:"domainName"` 179 // Domain name configuration. See below. 180 DomainNameConfiguration *DomainNameDomainNameConfiguration `pulumi:"domainNameConfiguration"` 181 // Mutual TLS authentication configuration for the domain name. 182 MutualTlsAuthentication *DomainNameMutualTlsAuthentication `pulumi:"mutualTlsAuthentication"` 183 // Map of tags to assign to the domain name. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 184 Tags map[string]string `pulumi:"tags"` 185 // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 186 // 187 // Deprecated: Please use `tags` instead. 188 TagsAll map[string]string `pulumi:"tagsAll"` 189 } 190 191 type DomainNameState struct { 192 // [API mapping selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-mapping-selection-expressions) for the domain name. 193 ApiMappingSelectionExpression pulumi.StringPtrInput 194 // ARN of the domain name. 195 Arn pulumi.StringPtrInput 196 // Domain name. Must be between 1 and 512 characters in length. 197 DomainName pulumi.StringPtrInput 198 // Domain name configuration. See below. 199 DomainNameConfiguration DomainNameDomainNameConfigurationPtrInput 200 // Mutual TLS authentication configuration for the domain name. 201 MutualTlsAuthentication DomainNameMutualTlsAuthenticationPtrInput 202 // Map of tags to assign to the domain name. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 203 Tags pulumi.StringMapInput 204 // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 205 // 206 // Deprecated: Please use `tags` instead. 207 TagsAll pulumi.StringMapInput 208 } 209 210 func (DomainNameState) ElementType() reflect.Type { 211 return reflect.TypeOf((*domainNameState)(nil)).Elem() 212 } 213 214 type domainNameArgs struct { 215 // Domain name. Must be between 1 and 512 characters in length. 216 DomainName string `pulumi:"domainName"` 217 // Domain name configuration. See below. 218 DomainNameConfiguration DomainNameDomainNameConfiguration `pulumi:"domainNameConfiguration"` 219 // Mutual TLS authentication configuration for the domain name. 220 MutualTlsAuthentication *DomainNameMutualTlsAuthentication `pulumi:"mutualTlsAuthentication"` 221 // Map of tags to assign to the domain name. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 222 Tags map[string]string `pulumi:"tags"` 223 } 224 225 // The set of arguments for constructing a DomainName resource. 226 type DomainNameArgs struct { 227 // Domain name. Must be between 1 and 512 characters in length. 228 DomainName pulumi.StringInput 229 // Domain name configuration. See below. 230 DomainNameConfiguration DomainNameDomainNameConfigurationInput 231 // Mutual TLS authentication configuration for the domain name. 232 MutualTlsAuthentication DomainNameMutualTlsAuthenticationPtrInput 233 // Map of tags to assign to the domain name. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 234 Tags pulumi.StringMapInput 235 } 236 237 func (DomainNameArgs) ElementType() reflect.Type { 238 return reflect.TypeOf((*domainNameArgs)(nil)).Elem() 239 } 240 241 type DomainNameInput interface { 242 pulumi.Input 243 244 ToDomainNameOutput() DomainNameOutput 245 ToDomainNameOutputWithContext(ctx context.Context) DomainNameOutput 246 } 247 248 func (*DomainName) ElementType() reflect.Type { 249 return reflect.TypeOf((**DomainName)(nil)).Elem() 250 } 251 252 func (i *DomainName) ToDomainNameOutput() DomainNameOutput { 253 return i.ToDomainNameOutputWithContext(context.Background()) 254 } 255 256 func (i *DomainName) ToDomainNameOutputWithContext(ctx context.Context) DomainNameOutput { 257 return pulumi.ToOutputWithContext(ctx, i).(DomainNameOutput) 258 } 259 260 // DomainNameArrayInput is an input type that accepts DomainNameArray and DomainNameArrayOutput values. 261 // You can construct a concrete instance of `DomainNameArrayInput` via: 262 // 263 // DomainNameArray{ DomainNameArgs{...} } 264 type DomainNameArrayInput interface { 265 pulumi.Input 266 267 ToDomainNameArrayOutput() DomainNameArrayOutput 268 ToDomainNameArrayOutputWithContext(context.Context) DomainNameArrayOutput 269 } 270 271 type DomainNameArray []DomainNameInput 272 273 func (DomainNameArray) ElementType() reflect.Type { 274 return reflect.TypeOf((*[]*DomainName)(nil)).Elem() 275 } 276 277 func (i DomainNameArray) ToDomainNameArrayOutput() DomainNameArrayOutput { 278 return i.ToDomainNameArrayOutputWithContext(context.Background()) 279 } 280 281 func (i DomainNameArray) ToDomainNameArrayOutputWithContext(ctx context.Context) DomainNameArrayOutput { 282 return pulumi.ToOutputWithContext(ctx, i).(DomainNameArrayOutput) 283 } 284 285 // DomainNameMapInput is an input type that accepts DomainNameMap and DomainNameMapOutput values. 286 // You can construct a concrete instance of `DomainNameMapInput` via: 287 // 288 // DomainNameMap{ "key": DomainNameArgs{...} } 289 type DomainNameMapInput interface { 290 pulumi.Input 291 292 ToDomainNameMapOutput() DomainNameMapOutput 293 ToDomainNameMapOutputWithContext(context.Context) DomainNameMapOutput 294 } 295 296 type DomainNameMap map[string]DomainNameInput 297 298 func (DomainNameMap) ElementType() reflect.Type { 299 return reflect.TypeOf((*map[string]*DomainName)(nil)).Elem() 300 } 301 302 func (i DomainNameMap) ToDomainNameMapOutput() DomainNameMapOutput { 303 return i.ToDomainNameMapOutputWithContext(context.Background()) 304 } 305 306 func (i DomainNameMap) ToDomainNameMapOutputWithContext(ctx context.Context) DomainNameMapOutput { 307 return pulumi.ToOutputWithContext(ctx, i).(DomainNameMapOutput) 308 } 309 310 type DomainNameOutput struct{ *pulumi.OutputState } 311 312 func (DomainNameOutput) ElementType() reflect.Type { 313 return reflect.TypeOf((**DomainName)(nil)).Elem() 314 } 315 316 func (o DomainNameOutput) ToDomainNameOutput() DomainNameOutput { 317 return o 318 } 319 320 func (o DomainNameOutput) ToDomainNameOutputWithContext(ctx context.Context) DomainNameOutput { 321 return o 322 } 323 324 // [API mapping selection expression](https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-websocket-api-selection-expressions.html#apigateway-websocket-api-mapping-selection-expressions) for the domain name. 325 func (o DomainNameOutput) ApiMappingSelectionExpression() pulumi.StringOutput { 326 return o.ApplyT(func(v *DomainName) pulumi.StringOutput { return v.ApiMappingSelectionExpression }).(pulumi.StringOutput) 327 } 328 329 // ARN of the domain name. 330 func (o DomainNameOutput) Arn() pulumi.StringOutput { 331 return o.ApplyT(func(v *DomainName) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) 332 } 333 334 // Domain name. Must be between 1 and 512 characters in length. 335 func (o DomainNameOutput) DomainName() pulumi.StringOutput { 336 return o.ApplyT(func(v *DomainName) pulumi.StringOutput { return v.DomainName }).(pulumi.StringOutput) 337 } 338 339 // Domain name configuration. See below. 340 func (o DomainNameOutput) DomainNameConfiguration() DomainNameDomainNameConfigurationOutput { 341 return o.ApplyT(func(v *DomainName) DomainNameDomainNameConfigurationOutput { return v.DomainNameConfiguration }).(DomainNameDomainNameConfigurationOutput) 342 } 343 344 // Mutual TLS authentication configuration for the domain name. 345 func (o DomainNameOutput) MutualTlsAuthentication() DomainNameMutualTlsAuthenticationPtrOutput { 346 return o.ApplyT(func(v *DomainName) DomainNameMutualTlsAuthenticationPtrOutput { return v.MutualTlsAuthentication }).(DomainNameMutualTlsAuthenticationPtrOutput) 347 } 348 349 // Map of tags to assign to the domain name. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 350 func (o DomainNameOutput) Tags() pulumi.StringMapOutput { 351 return o.ApplyT(func(v *DomainName) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) 352 } 353 354 // Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 355 // 356 // Deprecated: Please use `tags` instead. 357 func (o DomainNameOutput) TagsAll() pulumi.StringMapOutput { 358 return o.ApplyT(func(v *DomainName) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) 359 } 360 361 type DomainNameArrayOutput struct{ *pulumi.OutputState } 362 363 func (DomainNameArrayOutput) ElementType() reflect.Type { 364 return reflect.TypeOf((*[]*DomainName)(nil)).Elem() 365 } 366 367 func (o DomainNameArrayOutput) ToDomainNameArrayOutput() DomainNameArrayOutput { 368 return o 369 } 370 371 func (o DomainNameArrayOutput) ToDomainNameArrayOutputWithContext(ctx context.Context) DomainNameArrayOutput { 372 return o 373 } 374 375 func (o DomainNameArrayOutput) Index(i pulumi.IntInput) DomainNameOutput { 376 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *DomainName { 377 return vs[0].([]*DomainName)[vs[1].(int)] 378 }).(DomainNameOutput) 379 } 380 381 type DomainNameMapOutput struct{ *pulumi.OutputState } 382 383 func (DomainNameMapOutput) ElementType() reflect.Type { 384 return reflect.TypeOf((*map[string]*DomainName)(nil)).Elem() 385 } 386 387 func (o DomainNameMapOutput) ToDomainNameMapOutput() DomainNameMapOutput { 388 return o 389 } 390 391 func (o DomainNameMapOutput) ToDomainNameMapOutputWithContext(ctx context.Context) DomainNameMapOutput { 392 return o 393 } 394 395 func (o DomainNameMapOutput) MapIndex(k pulumi.StringInput) DomainNameOutput { 396 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *DomainName { 397 return vs[0].(map[string]*DomainName)[vs[1].(string)] 398 }).(DomainNameOutput) 399 } 400 401 func init() { 402 pulumi.RegisterInputType(reflect.TypeOf((*DomainNameInput)(nil)).Elem(), &DomainName{}) 403 pulumi.RegisterInputType(reflect.TypeOf((*DomainNameArrayInput)(nil)).Elem(), DomainNameArray{}) 404 pulumi.RegisterInputType(reflect.TypeOf((*DomainNameMapInput)(nil)).Elem(), DomainNameMap{}) 405 pulumi.RegisterOutputType(DomainNameOutput{}) 406 pulumi.RegisterOutputType(DomainNameArrayOutput{}) 407 pulumi.RegisterOutputType(DomainNameMapOutput{}) 408 }