github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/networkfirewall/firewallPolicy.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 networkfirewall 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 an AWS Network Firewall Firewall Policy 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/networkfirewall" 26 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 27 // 28 // ) 29 // 30 // func main() { 31 // pulumi.Run(func(ctx *pulumi.Context) error { 32 // _, err := networkfirewall.NewFirewallPolicy(ctx, "example", &networkfirewall.FirewallPolicyArgs{ 33 // Name: pulumi.String("example"), 34 // FirewallPolicy: &networkfirewall.FirewallPolicyFirewallPolicyArgs{ 35 // StatelessDefaultActions: pulumi.StringArray{ 36 // pulumi.String("aws:pass"), 37 // }, 38 // StatelessFragmentDefaultActions: pulumi.StringArray{ 39 // pulumi.String("aws:drop"), 40 // }, 41 // StatelessRuleGroupReferences: networkfirewall.FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArray{ 42 // &networkfirewall.FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgs{ 43 // Priority: pulumi.Int(1), 44 // ResourceArn: pulumi.Any(exampleAwsNetworkfirewallRuleGroup.Arn), 45 // }, 46 // }, 47 // TlsInspectionConfigurationArn: pulumi.String("arn:aws:network-firewall:REGION:ACCT:tls-configuration/example"), 48 // }, 49 // Tags: pulumi.StringMap{ 50 // "Tag1": pulumi.String("Value1"), 51 // "Tag2": pulumi.String("Value2"), 52 // }, 53 // }) 54 // if err != nil { 55 // return err 56 // } 57 // return nil 58 // }) 59 // } 60 // 61 // ``` 62 // <!--End PulumiCodeChooser --> 63 // 64 // ## Policy with a HOME_NET Override 65 // 66 // <!--Start PulumiCodeChooser --> 67 // ```go 68 // package main 69 // 70 // import ( 71 // 72 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall" 73 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 74 // 75 // ) 76 // 77 // func main() { 78 // pulumi.Run(func(ctx *pulumi.Context) error { 79 // _, err := networkfirewall.NewFirewallPolicy(ctx, "example", &networkfirewall.FirewallPolicyArgs{ 80 // Name: pulumi.String("example"), 81 // FirewallPolicy: &networkfirewall.FirewallPolicyFirewallPolicyArgs{ 82 // PolicyVariables: &networkfirewall.FirewallPolicyFirewallPolicyPolicyVariablesArgs{ 83 // RuleVariables: networkfirewall.FirewallPolicyFirewallPolicyPolicyVariablesRuleVariableArray{ 84 // &networkfirewall.FirewallPolicyFirewallPolicyPolicyVariablesRuleVariableArgs{ 85 // Key: pulumi.String("HOME_NET"), 86 // IpSet: &networkfirewall.FirewallPolicyFirewallPolicyPolicyVariablesRuleVariableIpSetArgs{ 87 // Definitions: pulumi.StringArray{ 88 // pulumi.String("10.0.0.0/16"), 89 // pulumi.String("10.1.0.0/24"), 90 // }, 91 // }, 92 // }, 93 // }, 94 // }, 95 // StatelessDefaultActions: pulumi.StringArray{ 96 // pulumi.String("aws:pass"), 97 // }, 98 // StatelessFragmentDefaultActions: pulumi.StringArray{ 99 // pulumi.String("aws:drop"), 100 // }, 101 // StatelessRuleGroupReferences: networkfirewall.FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArray{ 102 // &networkfirewall.FirewallPolicyFirewallPolicyStatelessRuleGroupReferenceArgs{ 103 // Priority: pulumi.Int(1), 104 // ResourceArn: pulumi.Any(exampleAwsNetworkfirewallRuleGroup.Arn), 105 // }, 106 // }, 107 // }, 108 // Tags: pulumi.StringMap{ 109 // "Tag1": pulumi.String("Value1"), 110 // "Tag2": pulumi.String("Value2"), 111 // }, 112 // }) 113 // if err != nil { 114 // return err 115 // } 116 // return nil 117 // }) 118 // } 119 // 120 // ``` 121 // <!--End PulumiCodeChooser --> 122 // 123 // ## Policy with a Custom Action for Stateless Inspection 124 // 125 // <!--Start PulumiCodeChooser --> 126 // ```go 127 // package main 128 // 129 // import ( 130 // 131 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/networkfirewall" 132 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 133 // 134 // ) 135 // 136 // func main() { 137 // pulumi.Run(func(ctx *pulumi.Context) error { 138 // _, err := networkfirewall.NewFirewallPolicy(ctx, "test", &networkfirewall.FirewallPolicyArgs{ 139 // Name: pulumi.String("example"), 140 // FirewallPolicy: &networkfirewall.FirewallPolicyFirewallPolicyArgs{ 141 // StatelessDefaultActions: pulumi.StringArray{ 142 // pulumi.String("aws:pass"), 143 // pulumi.String("ExampleCustomAction"), 144 // }, 145 // StatelessFragmentDefaultActions: pulumi.StringArray{ 146 // pulumi.String("aws:drop"), 147 // }, 148 // StatelessCustomActions: networkfirewall.FirewallPolicyFirewallPolicyStatelessCustomActionArray{ 149 // &networkfirewall.FirewallPolicyFirewallPolicyStatelessCustomActionArgs{ 150 // ActionDefinition: &networkfirewall.FirewallPolicyFirewallPolicyStatelessCustomActionActionDefinitionArgs{ 151 // PublishMetricAction: &networkfirewall.FirewallPolicyFirewallPolicyStatelessCustomActionActionDefinitionPublishMetricActionArgs{ 152 // Dimensions: networkfirewall.FirewallPolicyFirewallPolicyStatelessCustomActionActionDefinitionPublishMetricActionDimensionArray{ 153 // &networkfirewall.FirewallPolicyFirewallPolicyStatelessCustomActionActionDefinitionPublishMetricActionDimensionArgs{ 154 // Value: pulumi.String("1"), 155 // }, 156 // }, 157 // }, 158 // }, 159 // ActionName: pulumi.String("ExampleCustomAction"), 160 // }, 161 // }, 162 // }, 163 // }) 164 // if err != nil { 165 // return err 166 // } 167 // return nil 168 // }) 169 // } 170 // 171 // ``` 172 // <!--End PulumiCodeChooser --> 173 // 174 // ## Import 175 // 176 // Using `pulumi import`, import Network Firewall Policies using their `arn`. For example: 177 // 178 // ```sh 179 // $ pulumi import aws:networkfirewall/firewallPolicy:FirewallPolicy example arn:aws:network-firewall:us-west-1:123456789012:firewall-policy/example 180 // ``` 181 type FirewallPolicy struct { 182 pulumi.CustomResourceState 183 184 // The Amazon Resource Name (ARN) that identifies the firewall policy. 185 Arn pulumi.StringOutput `pulumi:"arn"` 186 // A friendly description of the firewall policy. 187 Description pulumi.StringPtrOutput `pulumi:"description"` 188 // KMS encryption configuration settings. See Encryption Configuration below for details. 189 EncryptionConfiguration FirewallPolicyEncryptionConfigurationPtrOutput `pulumi:"encryptionConfiguration"` 190 // A configuration block describing the rule groups and policy actions to use in the firewall policy. See Firewall Policy below for details. 191 FirewallPolicy FirewallPolicyFirewallPolicyOutput `pulumi:"firewallPolicy"` 192 // A friendly name of the firewall policy. 193 Name pulumi.StringOutput `pulumi:"name"` 194 // Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 195 Tags pulumi.StringMapOutput `pulumi:"tags"` 196 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 197 // 198 // Deprecated: Please use `tags` instead. 199 TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"` 200 // A string token used when updating a firewall policy. 201 UpdateToken pulumi.StringOutput `pulumi:"updateToken"` 202 } 203 204 // NewFirewallPolicy registers a new resource with the given unique name, arguments, and options. 205 func NewFirewallPolicy(ctx *pulumi.Context, 206 name string, args *FirewallPolicyArgs, opts ...pulumi.ResourceOption) (*FirewallPolicy, error) { 207 if args == nil { 208 return nil, errors.New("missing one or more required arguments") 209 } 210 211 if args.FirewallPolicy == nil { 212 return nil, errors.New("invalid value for required argument 'FirewallPolicy'") 213 } 214 opts = internal.PkgResourceDefaultOpts(opts) 215 var resource FirewallPolicy 216 err := ctx.RegisterResource("aws:networkfirewall/firewallPolicy:FirewallPolicy", name, args, &resource, opts...) 217 if err != nil { 218 return nil, err 219 } 220 return &resource, nil 221 } 222 223 // GetFirewallPolicy gets an existing FirewallPolicy resource's state with the given name, ID, and optional 224 // state properties that are used to uniquely qualify the lookup (nil if not required). 225 func GetFirewallPolicy(ctx *pulumi.Context, 226 name string, id pulumi.IDInput, state *FirewallPolicyState, opts ...pulumi.ResourceOption) (*FirewallPolicy, error) { 227 var resource FirewallPolicy 228 err := ctx.ReadResource("aws:networkfirewall/firewallPolicy:FirewallPolicy", name, id, state, &resource, opts...) 229 if err != nil { 230 return nil, err 231 } 232 return &resource, nil 233 } 234 235 // Input properties used for looking up and filtering FirewallPolicy resources. 236 type firewallPolicyState struct { 237 // The Amazon Resource Name (ARN) that identifies the firewall policy. 238 Arn *string `pulumi:"arn"` 239 // A friendly description of the firewall policy. 240 Description *string `pulumi:"description"` 241 // KMS encryption configuration settings. See Encryption Configuration below for details. 242 EncryptionConfiguration *FirewallPolicyEncryptionConfiguration `pulumi:"encryptionConfiguration"` 243 // A configuration block describing the rule groups and policy actions to use in the firewall policy. See Firewall Policy below for details. 244 FirewallPolicy *FirewallPolicyFirewallPolicy `pulumi:"firewallPolicy"` 245 // A friendly name of the firewall policy. 246 Name *string `pulumi:"name"` 247 // Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 248 Tags map[string]string `pulumi:"tags"` 249 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 250 // 251 // Deprecated: Please use `tags` instead. 252 TagsAll map[string]string `pulumi:"tagsAll"` 253 // A string token used when updating a firewall policy. 254 UpdateToken *string `pulumi:"updateToken"` 255 } 256 257 type FirewallPolicyState struct { 258 // The Amazon Resource Name (ARN) that identifies the firewall policy. 259 Arn pulumi.StringPtrInput 260 // A friendly description of the firewall policy. 261 Description pulumi.StringPtrInput 262 // KMS encryption configuration settings. See Encryption Configuration below for details. 263 EncryptionConfiguration FirewallPolicyEncryptionConfigurationPtrInput 264 // A configuration block describing the rule groups and policy actions to use in the firewall policy. See Firewall Policy below for details. 265 FirewallPolicy FirewallPolicyFirewallPolicyPtrInput 266 // A friendly name of the firewall policy. 267 Name pulumi.StringPtrInput 268 // Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 269 Tags pulumi.StringMapInput 270 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 271 // 272 // Deprecated: Please use `tags` instead. 273 TagsAll pulumi.StringMapInput 274 // A string token used when updating a firewall policy. 275 UpdateToken pulumi.StringPtrInput 276 } 277 278 func (FirewallPolicyState) ElementType() reflect.Type { 279 return reflect.TypeOf((*firewallPolicyState)(nil)).Elem() 280 } 281 282 type firewallPolicyArgs struct { 283 // A friendly description of the firewall policy. 284 Description *string `pulumi:"description"` 285 // KMS encryption configuration settings. See Encryption Configuration below for details. 286 EncryptionConfiguration *FirewallPolicyEncryptionConfiguration `pulumi:"encryptionConfiguration"` 287 // A configuration block describing the rule groups and policy actions to use in the firewall policy. See Firewall Policy below for details. 288 FirewallPolicy FirewallPolicyFirewallPolicy `pulumi:"firewallPolicy"` 289 // A friendly name of the firewall policy. 290 Name *string `pulumi:"name"` 291 // Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 292 Tags map[string]string `pulumi:"tags"` 293 } 294 295 // The set of arguments for constructing a FirewallPolicy resource. 296 type FirewallPolicyArgs struct { 297 // A friendly description of the firewall policy. 298 Description pulumi.StringPtrInput 299 // KMS encryption configuration settings. See Encryption Configuration below for details. 300 EncryptionConfiguration FirewallPolicyEncryptionConfigurationPtrInput 301 // A configuration block describing the rule groups and policy actions to use in the firewall policy. See Firewall Policy below for details. 302 FirewallPolicy FirewallPolicyFirewallPolicyInput 303 // A friendly name of the firewall policy. 304 Name pulumi.StringPtrInput 305 // Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 306 Tags pulumi.StringMapInput 307 } 308 309 func (FirewallPolicyArgs) ElementType() reflect.Type { 310 return reflect.TypeOf((*firewallPolicyArgs)(nil)).Elem() 311 } 312 313 type FirewallPolicyInput interface { 314 pulumi.Input 315 316 ToFirewallPolicyOutput() FirewallPolicyOutput 317 ToFirewallPolicyOutputWithContext(ctx context.Context) FirewallPolicyOutput 318 } 319 320 func (*FirewallPolicy) ElementType() reflect.Type { 321 return reflect.TypeOf((**FirewallPolicy)(nil)).Elem() 322 } 323 324 func (i *FirewallPolicy) ToFirewallPolicyOutput() FirewallPolicyOutput { 325 return i.ToFirewallPolicyOutputWithContext(context.Background()) 326 } 327 328 func (i *FirewallPolicy) ToFirewallPolicyOutputWithContext(ctx context.Context) FirewallPolicyOutput { 329 return pulumi.ToOutputWithContext(ctx, i).(FirewallPolicyOutput) 330 } 331 332 // FirewallPolicyArrayInput is an input type that accepts FirewallPolicyArray and FirewallPolicyArrayOutput values. 333 // You can construct a concrete instance of `FirewallPolicyArrayInput` via: 334 // 335 // FirewallPolicyArray{ FirewallPolicyArgs{...} } 336 type FirewallPolicyArrayInput interface { 337 pulumi.Input 338 339 ToFirewallPolicyArrayOutput() FirewallPolicyArrayOutput 340 ToFirewallPolicyArrayOutputWithContext(context.Context) FirewallPolicyArrayOutput 341 } 342 343 type FirewallPolicyArray []FirewallPolicyInput 344 345 func (FirewallPolicyArray) ElementType() reflect.Type { 346 return reflect.TypeOf((*[]*FirewallPolicy)(nil)).Elem() 347 } 348 349 func (i FirewallPolicyArray) ToFirewallPolicyArrayOutput() FirewallPolicyArrayOutput { 350 return i.ToFirewallPolicyArrayOutputWithContext(context.Background()) 351 } 352 353 func (i FirewallPolicyArray) ToFirewallPolicyArrayOutputWithContext(ctx context.Context) FirewallPolicyArrayOutput { 354 return pulumi.ToOutputWithContext(ctx, i).(FirewallPolicyArrayOutput) 355 } 356 357 // FirewallPolicyMapInput is an input type that accepts FirewallPolicyMap and FirewallPolicyMapOutput values. 358 // You can construct a concrete instance of `FirewallPolicyMapInput` via: 359 // 360 // FirewallPolicyMap{ "key": FirewallPolicyArgs{...} } 361 type FirewallPolicyMapInput interface { 362 pulumi.Input 363 364 ToFirewallPolicyMapOutput() FirewallPolicyMapOutput 365 ToFirewallPolicyMapOutputWithContext(context.Context) FirewallPolicyMapOutput 366 } 367 368 type FirewallPolicyMap map[string]FirewallPolicyInput 369 370 func (FirewallPolicyMap) ElementType() reflect.Type { 371 return reflect.TypeOf((*map[string]*FirewallPolicy)(nil)).Elem() 372 } 373 374 func (i FirewallPolicyMap) ToFirewallPolicyMapOutput() FirewallPolicyMapOutput { 375 return i.ToFirewallPolicyMapOutputWithContext(context.Background()) 376 } 377 378 func (i FirewallPolicyMap) ToFirewallPolicyMapOutputWithContext(ctx context.Context) FirewallPolicyMapOutput { 379 return pulumi.ToOutputWithContext(ctx, i).(FirewallPolicyMapOutput) 380 } 381 382 type FirewallPolicyOutput struct{ *pulumi.OutputState } 383 384 func (FirewallPolicyOutput) ElementType() reflect.Type { 385 return reflect.TypeOf((**FirewallPolicy)(nil)).Elem() 386 } 387 388 func (o FirewallPolicyOutput) ToFirewallPolicyOutput() FirewallPolicyOutput { 389 return o 390 } 391 392 func (o FirewallPolicyOutput) ToFirewallPolicyOutputWithContext(ctx context.Context) FirewallPolicyOutput { 393 return o 394 } 395 396 // The Amazon Resource Name (ARN) that identifies the firewall policy. 397 func (o FirewallPolicyOutput) Arn() pulumi.StringOutput { 398 return o.ApplyT(func(v *FirewallPolicy) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) 399 } 400 401 // A friendly description of the firewall policy. 402 func (o FirewallPolicyOutput) Description() pulumi.StringPtrOutput { 403 return o.ApplyT(func(v *FirewallPolicy) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput) 404 } 405 406 // KMS encryption configuration settings. See Encryption Configuration below for details. 407 func (o FirewallPolicyOutput) EncryptionConfiguration() FirewallPolicyEncryptionConfigurationPtrOutput { 408 return o.ApplyT(func(v *FirewallPolicy) FirewallPolicyEncryptionConfigurationPtrOutput { 409 return v.EncryptionConfiguration 410 }).(FirewallPolicyEncryptionConfigurationPtrOutput) 411 } 412 413 // A configuration block describing the rule groups and policy actions to use in the firewall policy. See Firewall Policy below for details. 414 func (o FirewallPolicyOutput) FirewallPolicy() FirewallPolicyFirewallPolicyOutput { 415 return o.ApplyT(func(v *FirewallPolicy) FirewallPolicyFirewallPolicyOutput { return v.FirewallPolicy }).(FirewallPolicyFirewallPolicyOutput) 416 } 417 418 // A friendly name of the firewall policy. 419 func (o FirewallPolicyOutput) Name() pulumi.StringOutput { 420 return o.ApplyT(func(v *FirewallPolicy) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput) 421 } 422 423 // Map of resource tags to associate with the resource. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level. 424 func (o FirewallPolicyOutput) Tags() pulumi.StringMapOutput { 425 return o.ApplyT(func(v *FirewallPolicy) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput) 426 } 427 428 // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block. 429 // 430 // Deprecated: Please use `tags` instead. 431 func (o FirewallPolicyOutput) TagsAll() pulumi.StringMapOutput { 432 return o.ApplyT(func(v *FirewallPolicy) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput) 433 } 434 435 // A string token used when updating a firewall policy. 436 func (o FirewallPolicyOutput) UpdateToken() pulumi.StringOutput { 437 return o.ApplyT(func(v *FirewallPolicy) pulumi.StringOutput { return v.UpdateToken }).(pulumi.StringOutput) 438 } 439 440 type FirewallPolicyArrayOutput struct{ *pulumi.OutputState } 441 442 func (FirewallPolicyArrayOutput) ElementType() reflect.Type { 443 return reflect.TypeOf((*[]*FirewallPolicy)(nil)).Elem() 444 } 445 446 func (o FirewallPolicyArrayOutput) ToFirewallPolicyArrayOutput() FirewallPolicyArrayOutput { 447 return o 448 } 449 450 func (o FirewallPolicyArrayOutput) ToFirewallPolicyArrayOutputWithContext(ctx context.Context) FirewallPolicyArrayOutput { 451 return o 452 } 453 454 func (o FirewallPolicyArrayOutput) Index(i pulumi.IntInput) FirewallPolicyOutput { 455 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *FirewallPolicy { 456 return vs[0].([]*FirewallPolicy)[vs[1].(int)] 457 }).(FirewallPolicyOutput) 458 } 459 460 type FirewallPolicyMapOutput struct{ *pulumi.OutputState } 461 462 func (FirewallPolicyMapOutput) ElementType() reflect.Type { 463 return reflect.TypeOf((*map[string]*FirewallPolicy)(nil)).Elem() 464 } 465 466 func (o FirewallPolicyMapOutput) ToFirewallPolicyMapOutput() FirewallPolicyMapOutput { 467 return o 468 } 469 470 func (o FirewallPolicyMapOutput) ToFirewallPolicyMapOutputWithContext(ctx context.Context) FirewallPolicyMapOutput { 471 return o 472 } 473 474 func (o FirewallPolicyMapOutput) MapIndex(k pulumi.StringInput) FirewallPolicyOutput { 475 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *FirewallPolicy { 476 return vs[0].(map[string]*FirewallPolicy)[vs[1].(string)] 477 }).(FirewallPolicyOutput) 478 } 479 480 func init() { 481 pulumi.RegisterInputType(reflect.TypeOf((*FirewallPolicyInput)(nil)).Elem(), &FirewallPolicy{}) 482 pulumi.RegisterInputType(reflect.TypeOf((*FirewallPolicyArrayInput)(nil)).Elem(), FirewallPolicyArray{}) 483 pulumi.RegisterInputType(reflect.TypeOf((*FirewallPolicyMapInput)(nil)).Elem(), FirewallPolicyMap{}) 484 pulumi.RegisterOutputType(FirewallPolicyOutput{}) 485 pulumi.RegisterOutputType(FirewallPolicyArrayOutput{}) 486 pulumi.RegisterOutputType(FirewallPolicyMapOutput{}) 487 }