github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/route53/resolverFirewallRule.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 route53 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 // Provides a Route 53 Resolver DNS Firewall rule resource. 16 // 17 // ## Example Usage 18 // 19 // <!--Start PulumiCodeChooser --> 20 // ```go 21 // package main 22 // 23 // import ( 24 // 25 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/route53" 26 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 27 // 28 // ) 29 // 30 // func main() { 31 // pulumi.Run(func(ctx *pulumi.Context) error { 32 // example, err := route53.NewResolverFirewallDomainList(ctx, "example", &route53.ResolverFirewallDomainListArgs{ 33 // Name: pulumi.String("example"), 34 // Domains: pulumi.StringArray{ 35 // pulumi.String("example.com"), 36 // }, 37 // Tags: nil, 38 // }) 39 // if err != nil { 40 // return err 41 // } 42 // exampleResolverFirewallRuleGroup, err := route53.NewResolverFirewallRuleGroup(ctx, "example", &route53.ResolverFirewallRuleGroupArgs{ 43 // Name: pulumi.String("example"), 44 // Tags: nil, 45 // }) 46 // if err != nil { 47 // return err 48 // } 49 // _, err = route53.NewResolverFirewallRule(ctx, "example", &route53.ResolverFirewallRuleArgs{ 50 // Name: pulumi.String("example"), 51 // Action: pulumi.String("BLOCK"), 52 // BlockOverrideDnsType: pulumi.String("CNAME"), 53 // BlockOverrideDomain: pulumi.String("example.com"), 54 // BlockOverrideTtl: pulumi.Int(1), 55 // BlockResponse: pulumi.String("OVERRIDE"), 56 // FirewallDomainListId: example.ID(), 57 // FirewallRuleGroupId: exampleResolverFirewallRuleGroup.ID(), 58 // Priority: pulumi.Int(100), 59 // }) 60 // if err != nil { 61 // return err 62 // } 63 // return nil 64 // }) 65 // } 66 // 67 // ``` 68 // <!--End PulumiCodeChooser --> 69 // 70 // ## Import 71 // 72 // Using `pulumi import`, import Route 53 Resolver DNS Firewall rules using the Route 53 Resolver DNS Firewall rule group ID and domain list ID separated by ':'. For example: 73 // 74 // ```sh 75 // $ pulumi import aws:route53/resolverFirewallRule:ResolverFirewallRule example rslvr-frg-0123456789abcdef:rslvr-fdl-0123456789abcdef 76 // ``` 77 type ResolverFirewallRule struct { 78 pulumi.CustomResourceState 79 80 // The action that DNS Firewall should take on a DNS query when it matches one of the domains in the rule's domain list. Valid values: `ALLOW`, `BLOCK`, `ALERT`. 81 Action pulumi.StringOutput `pulumi:"action"` 82 // The DNS record's type. This determines the format of the record value that you provided in BlockOverrideDomain. Value values: `CNAME`. 83 BlockOverrideDnsType pulumi.StringPtrOutput `pulumi:"blockOverrideDnsType"` 84 // The custom DNS record to send back in response to the query. 85 BlockOverrideDomain pulumi.StringPtrOutput `pulumi:"blockOverrideDomain"` 86 // The recommended amount of time, in seconds, for the DNS resolver or web browser to cache the provided override record. Minimum value of 0. Maximum value of 604800. 87 BlockOverrideTtl pulumi.IntPtrOutput `pulumi:"blockOverrideTtl"` 88 // The way that you want DNS Firewall to block the request. Valid values: `NODATA`, `NXDOMAIN`, `OVERRIDE`. 89 BlockResponse pulumi.StringPtrOutput `pulumi:"blockResponse"` 90 // The ID of the domain list that you want to use in the rule. 91 FirewallDomainListId pulumi.StringOutput `pulumi:"firewallDomainListId"` 92 // The unique identifier of the firewall rule group where you want to create the rule. 93 FirewallRuleGroupId pulumi.StringOutput `pulumi:"firewallRuleGroupId"` 94 // A name that lets you identify the rule, to manage and use it. 95 Name pulumi.StringOutput `pulumi:"name"` 96 // The setting that determines the processing order of the rule in the rule group. DNS Firewall processes the rules in a rule group by order of priority, starting from the lowest setting. 97 Priority pulumi.IntOutput `pulumi:"priority"` 98 } 99 100 // NewResolverFirewallRule registers a new resource with the given unique name, arguments, and options. 101 func NewResolverFirewallRule(ctx *pulumi.Context, 102 name string, args *ResolverFirewallRuleArgs, opts ...pulumi.ResourceOption) (*ResolverFirewallRule, error) { 103 if args == nil { 104 return nil, errors.New("missing one or more required arguments") 105 } 106 107 if args.Action == nil { 108 return nil, errors.New("invalid value for required argument 'Action'") 109 } 110 if args.FirewallDomainListId == nil { 111 return nil, errors.New("invalid value for required argument 'FirewallDomainListId'") 112 } 113 if args.FirewallRuleGroupId == nil { 114 return nil, errors.New("invalid value for required argument 'FirewallRuleGroupId'") 115 } 116 if args.Priority == nil { 117 return nil, errors.New("invalid value for required argument 'Priority'") 118 } 119 opts = internal.PkgResourceDefaultOpts(opts) 120 var resource ResolverFirewallRule 121 err := ctx.RegisterResource("aws:route53/resolverFirewallRule:ResolverFirewallRule", name, args, &resource, opts...) 122 if err != nil { 123 return nil, err 124 } 125 return &resource, nil 126 } 127 128 // GetResolverFirewallRule gets an existing ResolverFirewallRule resource's state with the given name, ID, and optional 129 // state properties that are used to uniquely qualify the lookup (nil if not required). 130 func GetResolverFirewallRule(ctx *pulumi.Context, 131 name string, id pulumi.IDInput, state *ResolverFirewallRuleState, opts ...pulumi.ResourceOption) (*ResolverFirewallRule, error) { 132 var resource ResolverFirewallRule 133 err := ctx.ReadResource("aws:route53/resolverFirewallRule:ResolverFirewallRule", name, id, state, &resource, opts...) 134 if err != nil { 135 return nil, err 136 } 137 return &resource, nil 138 } 139 140 // Input properties used for looking up and filtering ResolverFirewallRule resources. 141 type resolverFirewallRuleState struct { 142 // The action that DNS Firewall should take on a DNS query when it matches one of the domains in the rule's domain list. Valid values: `ALLOW`, `BLOCK`, `ALERT`. 143 Action *string `pulumi:"action"` 144 // The DNS record's type. This determines the format of the record value that you provided in BlockOverrideDomain. Value values: `CNAME`. 145 BlockOverrideDnsType *string `pulumi:"blockOverrideDnsType"` 146 // The custom DNS record to send back in response to the query. 147 BlockOverrideDomain *string `pulumi:"blockOverrideDomain"` 148 // The recommended amount of time, in seconds, for the DNS resolver or web browser to cache the provided override record. Minimum value of 0. Maximum value of 604800. 149 BlockOverrideTtl *int `pulumi:"blockOverrideTtl"` 150 // The way that you want DNS Firewall to block the request. Valid values: `NODATA`, `NXDOMAIN`, `OVERRIDE`. 151 BlockResponse *string `pulumi:"blockResponse"` 152 // The ID of the domain list that you want to use in the rule. 153 FirewallDomainListId *string `pulumi:"firewallDomainListId"` 154 // The unique identifier of the firewall rule group where you want to create the rule. 155 FirewallRuleGroupId *string `pulumi:"firewallRuleGroupId"` 156 // A name that lets you identify the rule, to manage and use it. 157 Name *string `pulumi:"name"` 158 // The setting that determines the processing order of the rule in the rule group. DNS Firewall processes the rules in a rule group by order of priority, starting from the lowest setting. 159 Priority *int `pulumi:"priority"` 160 } 161 162 type ResolverFirewallRuleState struct { 163 // The action that DNS Firewall should take on a DNS query when it matches one of the domains in the rule's domain list. Valid values: `ALLOW`, `BLOCK`, `ALERT`. 164 Action pulumi.StringPtrInput 165 // The DNS record's type. This determines the format of the record value that you provided in BlockOverrideDomain. Value values: `CNAME`. 166 BlockOverrideDnsType pulumi.StringPtrInput 167 // The custom DNS record to send back in response to the query. 168 BlockOverrideDomain pulumi.StringPtrInput 169 // The recommended amount of time, in seconds, for the DNS resolver or web browser to cache the provided override record. Minimum value of 0. Maximum value of 604800. 170 BlockOverrideTtl pulumi.IntPtrInput 171 // The way that you want DNS Firewall to block the request. Valid values: `NODATA`, `NXDOMAIN`, `OVERRIDE`. 172 BlockResponse pulumi.StringPtrInput 173 // The ID of the domain list that you want to use in the rule. 174 FirewallDomainListId pulumi.StringPtrInput 175 // The unique identifier of the firewall rule group where you want to create the rule. 176 FirewallRuleGroupId pulumi.StringPtrInput 177 // A name that lets you identify the rule, to manage and use it. 178 Name pulumi.StringPtrInput 179 // The setting that determines the processing order of the rule in the rule group. DNS Firewall processes the rules in a rule group by order of priority, starting from the lowest setting. 180 Priority pulumi.IntPtrInput 181 } 182 183 func (ResolverFirewallRuleState) ElementType() reflect.Type { 184 return reflect.TypeOf((*resolverFirewallRuleState)(nil)).Elem() 185 } 186 187 type resolverFirewallRuleArgs struct { 188 // The action that DNS Firewall should take on a DNS query when it matches one of the domains in the rule's domain list. Valid values: `ALLOW`, `BLOCK`, `ALERT`. 189 Action string `pulumi:"action"` 190 // The DNS record's type. This determines the format of the record value that you provided in BlockOverrideDomain. Value values: `CNAME`. 191 BlockOverrideDnsType *string `pulumi:"blockOverrideDnsType"` 192 // The custom DNS record to send back in response to the query. 193 BlockOverrideDomain *string `pulumi:"blockOverrideDomain"` 194 // The recommended amount of time, in seconds, for the DNS resolver or web browser to cache the provided override record. Minimum value of 0. Maximum value of 604800. 195 BlockOverrideTtl *int `pulumi:"blockOverrideTtl"` 196 // The way that you want DNS Firewall to block the request. Valid values: `NODATA`, `NXDOMAIN`, `OVERRIDE`. 197 BlockResponse *string `pulumi:"blockResponse"` 198 // The ID of the domain list that you want to use in the rule. 199 FirewallDomainListId string `pulumi:"firewallDomainListId"` 200 // The unique identifier of the firewall rule group where you want to create the rule. 201 FirewallRuleGroupId string `pulumi:"firewallRuleGroupId"` 202 // A name that lets you identify the rule, to manage and use it. 203 Name *string `pulumi:"name"` 204 // The setting that determines the processing order of the rule in the rule group. DNS Firewall processes the rules in a rule group by order of priority, starting from the lowest setting. 205 Priority int `pulumi:"priority"` 206 } 207 208 // The set of arguments for constructing a ResolverFirewallRule resource. 209 type ResolverFirewallRuleArgs struct { 210 // The action that DNS Firewall should take on a DNS query when it matches one of the domains in the rule's domain list. Valid values: `ALLOW`, `BLOCK`, `ALERT`. 211 Action pulumi.StringInput 212 // The DNS record's type. This determines the format of the record value that you provided in BlockOverrideDomain. Value values: `CNAME`. 213 BlockOverrideDnsType pulumi.StringPtrInput 214 // The custom DNS record to send back in response to the query. 215 BlockOverrideDomain pulumi.StringPtrInput 216 // The recommended amount of time, in seconds, for the DNS resolver or web browser to cache the provided override record. Minimum value of 0. Maximum value of 604800. 217 BlockOverrideTtl pulumi.IntPtrInput 218 // The way that you want DNS Firewall to block the request. Valid values: `NODATA`, `NXDOMAIN`, `OVERRIDE`. 219 BlockResponse pulumi.StringPtrInput 220 // The ID of the domain list that you want to use in the rule. 221 FirewallDomainListId pulumi.StringInput 222 // The unique identifier of the firewall rule group where you want to create the rule. 223 FirewallRuleGroupId pulumi.StringInput 224 // A name that lets you identify the rule, to manage and use it. 225 Name pulumi.StringPtrInput 226 // The setting that determines the processing order of the rule in the rule group. DNS Firewall processes the rules in a rule group by order of priority, starting from the lowest setting. 227 Priority pulumi.IntInput 228 } 229 230 func (ResolverFirewallRuleArgs) ElementType() reflect.Type { 231 return reflect.TypeOf((*resolverFirewallRuleArgs)(nil)).Elem() 232 } 233 234 type ResolverFirewallRuleInput interface { 235 pulumi.Input 236 237 ToResolverFirewallRuleOutput() ResolverFirewallRuleOutput 238 ToResolverFirewallRuleOutputWithContext(ctx context.Context) ResolverFirewallRuleOutput 239 } 240 241 func (*ResolverFirewallRule) ElementType() reflect.Type { 242 return reflect.TypeOf((**ResolverFirewallRule)(nil)).Elem() 243 } 244 245 func (i *ResolverFirewallRule) ToResolverFirewallRuleOutput() ResolverFirewallRuleOutput { 246 return i.ToResolverFirewallRuleOutputWithContext(context.Background()) 247 } 248 249 func (i *ResolverFirewallRule) ToResolverFirewallRuleOutputWithContext(ctx context.Context) ResolverFirewallRuleOutput { 250 return pulumi.ToOutputWithContext(ctx, i).(ResolverFirewallRuleOutput) 251 } 252 253 // ResolverFirewallRuleArrayInput is an input type that accepts ResolverFirewallRuleArray and ResolverFirewallRuleArrayOutput values. 254 // You can construct a concrete instance of `ResolverFirewallRuleArrayInput` via: 255 // 256 // ResolverFirewallRuleArray{ ResolverFirewallRuleArgs{...} } 257 type ResolverFirewallRuleArrayInput interface { 258 pulumi.Input 259 260 ToResolverFirewallRuleArrayOutput() ResolverFirewallRuleArrayOutput 261 ToResolverFirewallRuleArrayOutputWithContext(context.Context) ResolverFirewallRuleArrayOutput 262 } 263 264 type ResolverFirewallRuleArray []ResolverFirewallRuleInput 265 266 func (ResolverFirewallRuleArray) ElementType() reflect.Type { 267 return reflect.TypeOf((*[]*ResolverFirewallRule)(nil)).Elem() 268 } 269 270 func (i ResolverFirewallRuleArray) ToResolverFirewallRuleArrayOutput() ResolverFirewallRuleArrayOutput { 271 return i.ToResolverFirewallRuleArrayOutputWithContext(context.Background()) 272 } 273 274 func (i ResolverFirewallRuleArray) ToResolverFirewallRuleArrayOutputWithContext(ctx context.Context) ResolverFirewallRuleArrayOutput { 275 return pulumi.ToOutputWithContext(ctx, i).(ResolverFirewallRuleArrayOutput) 276 } 277 278 // ResolverFirewallRuleMapInput is an input type that accepts ResolverFirewallRuleMap and ResolverFirewallRuleMapOutput values. 279 // You can construct a concrete instance of `ResolverFirewallRuleMapInput` via: 280 // 281 // ResolverFirewallRuleMap{ "key": ResolverFirewallRuleArgs{...} } 282 type ResolverFirewallRuleMapInput interface { 283 pulumi.Input 284 285 ToResolverFirewallRuleMapOutput() ResolverFirewallRuleMapOutput 286 ToResolverFirewallRuleMapOutputWithContext(context.Context) ResolverFirewallRuleMapOutput 287 } 288 289 type ResolverFirewallRuleMap map[string]ResolverFirewallRuleInput 290 291 func (ResolverFirewallRuleMap) ElementType() reflect.Type { 292 return reflect.TypeOf((*map[string]*ResolverFirewallRule)(nil)).Elem() 293 } 294 295 func (i ResolverFirewallRuleMap) ToResolverFirewallRuleMapOutput() ResolverFirewallRuleMapOutput { 296 return i.ToResolverFirewallRuleMapOutputWithContext(context.Background()) 297 } 298 299 func (i ResolverFirewallRuleMap) ToResolverFirewallRuleMapOutputWithContext(ctx context.Context) ResolverFirewallRuleMapOutput { 300 return pulumi.ToOutputWithContext(ctx, i).(ResolverFirewallRuleMapOutput) 301 } 302 303 type ResolverFirewallRuleOutput struct{ *pulumi.OutputState } 304 305 func (ResolverFirewallRuleOutput) ElementType() reflect.Type { 306 return reflect.TypeOf((**ResolverFirewallRule)(nil)).Elem() 307 } 308 309 func (o ResolverFirewallRuleOutput) ToResolverFirewallRuleOutput() ResolverFirewallRuleOutput { 310 return o 311 } 312 313 func (o ResolverFirewallRuleOutput) ToResolverFirewallRuleOutputWithContext(ctx context.Context) ResolverFirewallRuleOutput { 314 return o 315 } 316 317 // The action that DNS Firewall should take on a DNS query when it matches one of the domains in the rule's domain list. Valid values: `ALLOW`, `BLOCK`, `ALERT`. 318 func (o ResolverFirewallRuleOutput) Action() pulumi.StringOutput { 319 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringOutput { return v.Action }).(pulumi.StringOutput) 320 } 321 322 // The DNS record's type. This determines the format of the record value that you provided in BlockOverrideDomain. Value values: `CNAME`. 323 func (o ResolverFirewallRuleOutput) BlockOverrideDnsType() pulumi.StringPtrOutput { 324 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringPtrOutput { return v.BlockOverrideDnsType }).(pulumi.StringPtrOutput) 325 } 326 327 // The custom DNS record to send back in response to the query. 328 func (o ResolverFirewallRuleOutput) BlockOverrideDomain() pulumi.StringPtrOutput { 329 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringPtrOutput { return v.BlockOverrideDomain }).(pulumi.StringPtrOutput) 330 } 331 332 // The recommended amount of time, in seconds, for the DNS resolver or web browser to cache the provided override record. Minimum value of 0. Maximum value of 604800. 333 func (o ResolverFirewallRuleOutput) BlockOverrideTtl() pulumi.IntPtrOutput { 334 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.IntPtrOutput { return v.BlockOverrideTtl }).(pulumi.IntPtrOutput) 335 } 336 337 // The way that you want DNS Firewall to block the request. Valid values: `NODATA`, `NXDOMAIN`, `OVERRIDE`. 338 func (o ResolverFirewallRuleOutput) BlockResponse() pulumi.StringPtrOutput { 339 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringPtrOutput { return v.BlockResponse }).(pulumi.StringPtrOutput) 340 } 341 342 // The ID of the domain list that you want to use in the rule. 343 func (o ResolverFirewallRuleOutput) FirewallDomainListId() pulumi.StringOutput { 344 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringOutput { return v.FirewallDomainListId }).(pulumi.StringOutput) 345 } 346 347 // The unique identifier of the firewall rule group where you want to create the rule. 348 func (o ResolverFirewallRuleOutput) FirewallRuleGroupId() pulumi.StringOutput { 349 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringOutput { return v.FirewallRuleGroupId }).(pulumi.StringOutput) 350 } 351 352 // A name that lets you identify the rule, to manage and use it. 353 func (o ResolverFirewallRuleOutput) Name() pulumi.StringOutput { 354 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) 355 } 356 357 // The setting that determines the processing order of the rule in the rule group. DNS Firewall processes the rules in a rule group by order of priority, starting from the lowest setting. 358 func (o ResolverFirewallRuleOutput) Priority() pulumi.IntOutput { 359 return o.ApplyT(func(v *ResolverFirewallRule) pulumi.IntOutput { return v.Priority }).(pulumi.IntOutput) 360 } 361 362 type ResolverFirewallRuleArrayOutput struct{ *pulumi.OutputState } 363 364 func (ResolverFirewallRuleArrayOutput) ElementType() reflect.Type { 365 return reflect.TypeOf((*[]*ResolverFirewallRule)(nil)).Elem() 366 } 367 368 func (o ResolverFirewallRuleArrayOutput) ToResolverFirewallRuleArrayOutput() ResolverFirewallRuleArrayOutput { 369 return o 370 } 371 372 func (o ResolverFirewallRuleArrayOutput) ToResolverFirewallRuleArrayOutputWithContext(ctx context.Context) ResolverFirewallRuleArrayOutput { 373 return o 374 } 375 376 func (o ResolverFirewallRuleArrayOutput) Index(i pulumi.IntInput) ResolverFirewallRuleOutput { 377 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *ResolverFirewallRule { 378 return vs[0].([]*ResolverFirewallRule)[vs[1].(int)] 379 }).(ResolverFirewallRuleOutput) 380 } 381 382 type ResolverFirewallRuleMapOutput struct{ *pulumi.OutputState } 383 384 func (ResolverFirewallRuleMapOutput) ElementType() reflect.Type { 385 return reflect.TypeOf((*map[string]*ResolverFirewallRule)(nil)).Elem() 386 } 387 388 func (o ResolverFirewallRuleMapOutput) ToResolverFirewallRuleMapOutput() ResolverFirewallRuleMapOutput { 389 return o 390 } 391 392 func (o ResolverFirewallRuleMapOutput) ToResolverFirewallRuleMapOutputWithContext(ctx context.Context) ResolverFirewallRuleMapOutput { 393 return o 394 } 395 396 func (o ResolverFirewallRuleMapOutput) MapIndex(k pulumi.StringInput) ResolverFirewallRuleOutput { 397 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *ResolverFirewallRule { 398 return vs[0].(map[string]*ResolverFirewallRule)[vs[1].(string)] 399 }).(ResolverFirewallRuleOutput) 400 } 401 402 func init() { 403 pulumi.RegisterInputType(reflect.TypeOf((*ResolverFirewallRuleInput)(nil)).Elem(), &ResolverFirewallRule{}) 404 pulumi.RegisterInputType(reflect.TypeOf((*ResolverFirewallRuleArrayInput)(nil)).Elem(), ResolverFirewallRuleArray{}) 405 pulumi.RegisterInputType(reflect.TypeOf((*ResolverFirewallRuleMapInput)(nil)).Elem(), ResolverFirewallRuleMap{}) 406 pulumi.RegisterOutputType(ResolverFirewallRuleOutput{}) 407 pulumi.RegisterOutputType(ResolverFirewallRuleArrayOutput{}) 408 pulumi.RegisterOutputType(ResolverFirewallRuleMapOutput{}) 409 }