github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/wafv2/webAclLoggingConfiguration.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 wafv2 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 // This resource creates a WAFv2 Web ACL Logging Configuration. 16 // 17 // !> **WARNING:** When logging from a WAFv2 Web ACL to a CloudWatch Log Group, the WAFv2 service tries to create or update a generic Log Resource Policy named `AWSWAF-LOGS`. However, if there are a large number of Web ACLs or if the account frequently creates and deletes Web ACLs, this policy may exceed the maximum policy size. As a result, this resource type will fail to be created. More details about this issue can be found in this issue. To prevent this issue, you can manage a specific resource policy. Please refer to the example below for managing a CloudWatch Log Group with a managed CloudWatch Log Resource Policy. 18 // 19 // ## Example Usage 20 // 21 // ### With Redacted Fields 22 // 23 // <!--Start PulumiCodeChooser --> 24 // ```go 25 // package main 26 // 27 // import ( 28 // 29 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/wafv2" 30 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 31 // 32 // ) 33 // 34 // func main() { 35 // pulumi.Run(func(ctx *pulumi.Context) error { 36 // _, err := wafv2.NewWebAclLoggingConfiguration(ctx, "example", &wafv2.WebAclLoggingConfigurationArgs{ 37 // LogDestinationConfigs: pulumi.StringArray{ 38 // exampleAwsKinesisFirehoseDeliveryStream.Arn, 39 // }, 40 // ResourceArn: pulumi.Any(exampleAwsWafv2WebAcl.Arn), 41 // RedactedFields: wafv2.WebAclLoggingConfigurationRedactedFieldArray{ 42 // &wafv2.WebAclLoggingConfigurationRedactedFieldArgs{ 43 // SingleHeader: &wafv2.WebAclLoggingConfigurationRedactedFieldSingleHeaderArgs{ 44 // Name: pulumi.String("user-agent"), 45 // }, 46 // }, 47 // }, 48 // }) 49 // if err != nil { 50 // return err 51 // } 52 // return nil 53 // }) 54 // } 55 // 56 // ``` 57 // <!--End PulumiCodeChooser --> 58 // 59 // ### With Logging Filter 60 // 61 // <!--Start PulumiCodeChooser --> 62 // ```go 63 // package main 64 // 65 // import ( 66 // 67 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/wafv2" 68 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 69 // 70 // ) 71 // 72 // func main() { 73 // pulumi.Run(func(ctx *pulumi.Context) error { 74 // _, err := wafv2.NewWebAclLoggingConfiguration(ctx, "example", &wafv2.WebAclLoggingConfigurationArgs{ 75 // LogDestinationConfigs: pulumi.StringArray{ 76 // exampleAwsKinesisFirehoseDeliveryStream.Arn, 77 // }, 78 // ResourceArn: pulumi.Any(exampleAwsWafv2WebAcl.Arn), 79 // LoggingFilter: &wafv2.WebAclLoggingConfigurationLoggingFilterArgs{ 80 // DefaultBehavior: pulumi.String("KEEP"), 81 // Filters: wafv2.WebAclLoggingConfigurationLoggingFilterFilterArray{ 82 // &wafv2.WebAclLoggingConfigurationLoggingFilterFilterArgs{ 83 // Behavior: pulumi.String("DROP"), 84 // Conditions: wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionArray{ 85 // &wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionArgs{ 86 // ActionCondition: &wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionActionConditionArgs{ 87 // Action: pulumi.String("COUNT"), 88 // }, 89 // }, 90 // &wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionArgs{ 91 // LabelNameCondition: &wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionLabelNameConditionArgs{ 92 // LabelName: pulumi.String("awswaf:111122223333:rulegroup:testRules:LabelNameZ"), 93 // }, 94 // }, 95 // }, 96 // Requirement: pulumi.String("MEETS_ALL"), 97 // }, 98 // &wafv2.WebAclLoggingConfigurationLoggingFilterFilterArgs{ 99 // Behavior: pulumi.String("KEEP"), 100 // Conditions: wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionArray{ 101 // &wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionArgs{ 102 // ActionCondition: &wafv2.WebAclLoggingConfigurationLoggingFilterFilterConditionActionConditionArgs{ 103 // Action: pulumi.String("ALLOW"), 104 // }, 105 // }, 106 // }, 107 // Requirement: pulumi.String("MEETS_ANY"), 108 // }, 109 // }, 110 // }, 111 // }) 112 // if err != nil { 113 // return err 114 // } 115 // return nil 116 // }) 117 // } 118 // 119 // ``` 120 // <!--End PulumiCodeChooser --> 121 // 122 // ## Import 123 // 124 // Using `pulumi import`, import WAFv2 Web ACL Logging Configurations using the ARN of the WAFv2 Web ACL. For example: 125 // 126 // ```sh 127 // $ pulumi import aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration example arn:aws:wafv2:us-west-2:123456789012:regional/webacl/test-logs/a1b2c3d4-5678-90ab-cdef 128 // ``` 129 type WebAclLoggingConfiguration struct { 130 pulumi.CustomResourceState 131 132 // Configuration block that allows you to associate Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource Names (ARNs) with the web ACL. **Note:** data firehose, log group, or bucket name **must** be prefixed with `aws-waf-logs-`, e.g. `aws-waf-logs-example-firehose`, `aws-waf-logs-example-log-group`, or `aws-waf-logs-example-bucket`. 133 LogDestinationConfigs pulumi.StringArrayOutput `pulumi:"logDestinationConfigs"` 134 // Configuration block that specifies which web requests are kept in the logs and which are dropped. It allows filtering based on the rule action and the web request labels applied by matching rules during web ACL evaluation. For more details, refer to the Logging Filter section below. 135 LoggingFilter WebAclLoggingConfigurationLoggingFilterPtrOutput `pulumi:"loggingFilter"` 136 // Configuration for parts of the request that you want to keep out of the logs. Up to 100 `redactedFields` blocks are supported. See Redacted Fields below for more details. 137 RedactedFields WebAclLoggingConfigurationRedactedFieldArrayOutput `pulumi:"redactedFields"` 138 // Amazon Resource Name (ARN) of the web ACL that you want to associate with `logDestinationConfigs`. 139 ResourceArn pulumi.StringOutput `pulumi:"resourceArn"` 140 } 141 142 // NewWebAclLoggingConfiguration registers a new resource with the given unique name, arguments, and options. 143 func NewWebAclLoggingConfiguration(ctx *pulumi.Context, 144 name string, args *WebAclLoggingConfigurationArgs, opts ...pulumi.ResourceOption) (*WebAclLoggingConfiguration, error) { 145 if args == nil { 146 return nil, errors.New("missing one or more required arguments") 147 } 148 149 if args.LogDestinationConfigs == nil { 150 return nil, errors.New("invalid value for required argument 'LogDestinationConfigs'") 151 } 152 if args.ResourceArn == nil { 153 return nil, errors.New("invalid value for required argument 'ResourceArn'") 154 } 155 opts = internal.PkgResourceDefaultOpts(opts) 156 var resource WebAclLoggingConfiguration 157 err := ctx.RegisterResource("aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration", name, args, &resource, opts...) 158 if err != nil { 159 return nil, err 160 } 161 return &resource, nil 162 } 163 164 // GetWebAclLoggingConfiguration gets an existing WebAclLoggingConfiguration resource's state with the given name, ID, and optional 165 // state properties that are used to uniquely qualify the lookup (nil if not required). 166 func GetWebAclLoggingConfiguration(ctx *pulumi.Context, 167 name string, id pulumi.IDInput, state *WebAclLoggingConfigurationState, opts ...pulumi.ResourceOption) (*WebAclLoggingConfiguration, error) { 168 var resource WebAclLoggingConfiguration 169 err := ctx.ReadResource("aws:wafv2/webAclLoggingConfiguration:WebAclLoggingConfiguration", name, id, state, &resource, opts...) 170 if err != nil { 171 return nil, err 172 } 173 return &resource, nil 174 } 175 176 // Input properties used for looking up and filtering WebAclLoggingConfiguration resources. 177 type webAclLoggingConfigurationState struct { 178 // Configuration block that allows you to associate Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource Names (ARNs) with the web ACL. **Note:** data firehose, log group, or bucket name **must** be prefixed with `aws-waf-logs-`, e.g. `aws-waf-logs-example-firehose`, `aws-waf-logs-example-log-group`, or `aws-waf-logs-example-bucket`. 179 LogDestinationConfigs []string `pulumi:"logDestinationConfigs"` 180 // Configuration block that specifies which web requests are kept in the logs and which are dropped. It allows filtering based on the rule action and the web request labels applied by matching rules during web ACL evaluation. For more details, refer to the Logging Filter section below. 181 LoggingFilter *WebAclLoggingConfigurationLoggingFilter `pulumi:"loggingFilter"` 182 // Configuration for parts of the request that you want to keep out of the logs. Up to 100 `redactedFields` blocks are supported. See Redacted Fields below for more details. 183 RedactedFields []WebAclLoggingConfigurationRedactedField `pulumi:"redactedFields"` 184 // Amazon Resource Name (ARN) of the web ACL that you want to associate with `logDestinationConfigs`. 185 ResourceArn *string `pulumi:"resourceArn"` 186 } 187 188 type WebAclLoggingConfigurationState struct { 189 // Configuration block that allows you to associate Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource Names (ARNs) with the web ACL. **Note:** data firehose, log group, or bucket name **must** be prefixed with `aws-waf-logs-`, e.g. `aws-waf-logs-example-firehose`, `aws-waf-logs-example-log-group`, or `aws-waf-logs-example-bucket`. 190 LogDestinationConfigs pulumi.StringArrayInput 191 // Configuration block that specifies which web requests are kept in the logs and which are dropped. It allows filtering based on the rule action and the web request labels applied by matching rules during web ACL evaluation. For more details, refer to the Logging Filter section below. 192 LoggingFilter WebAclLoggingConfigurationLoggingFilterPtrInput 193 // Configuration for parts of the request that you want to keep out of the logs. Up to 100 `redactedFields` blocks are supported. See Redacted Fields below for more details. 194 RedactedFields WebAclLoggingConfigurationRedactedFieldArrayInput 195 // Amazon Resource Name (ARN) of the web ACL that you want to associate with `logDestinationConfigs`. 196 ResourceArn pulumi.StringPtrInput 197 } 198 199 func (WebAclLoggingConfigurationState) ElementType() reflect.Type { 200 return reflect.TypeOf((*webAclLoggingConfigurationState)(nil)).Elem() 201 } 202 203 type webAclLoggingConfigurationArgs struct { 204 // Configuration block that allows you to associate Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource Names (ARNs) with the web ACL. **Note:** data firehose, log group, or bucket name **must** be prefixed with `aws-waf-logs-`, e.g. `aws-waf-logs-example-firehose`, `aws-waf-logs-example-log-group`, or `aws-waf-logs-example-bucket`. 205 LogDestinationConfigs []string `pulumi:"logDestinationConfigs"` 206 // Configuration block that specifies which web requests are kept in the logs and which are dropped. It allows filtering based on the rule action and the web request labels applied by matching rules during web ACL evaluation. For more details, refer to the Logging Filter section below. 207 LoggingFilter *WebAclLoggingConfigurationLoggingFilter `pulumi:"loggingFilter"` 208 // Configuration for parts of the request that you want to keep out of the logs. Up to 100 `redactedFields` blocks are supported. See Redacted Fields below for more details. 209 RedactedFields []WebAclLoggingConfigurationRedactedField `pulumi:"redactedFields"` 210 // Amazon Resource Name (ARN) of the web ACL that you want to associate with `logDestinationConfigs`. 211 ResourceArn string `pulumi:"resourceArn"` 212 } 213 214 // The set of arguments for constructing a WebAclLoggingConfiguration resource. 215 type WebAclLoggingConfigurationArgs struct { 216 // Configuration block that allows you to associate Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource Names (ARNs) with the web ACL. **Note:** data firehose, log group, or bucket name **must** be prefixed with `aws-waf-logs-`, e.g. `aws-waf-logs-example-firehose`, `aws-waf-logs-example-log-group`, or `aws-waf-logs-example-bucket`. 217 LogDestinationConfigs pulumi.StringArrayInput 218 // Configuration block that specifies which web requests are kept in the logs and which are dropped. It allows filtering based on the rule action and the web request labels applied by matching rules during web ACL evaluation. For more details, refer to the Logging Filter section below. 219 LoggingFilter WebAclLoggingConfigurationLoggingFilterPtrInput 220 // Configuration for parts of the request that you want to keep out of the logs. Up to 100 `redactedFields` blocks are supported. See Redacted Fields below for more details. 221 RedactedFields WebAclLoggingConfigurationRedactedFieldArrayInput 222 // Amazon Resource Name (ARN) of the web ACL that you want to associate with `logDestinationConfigs`. 223 ResourceArn pulumi.StringInput 224 } 225 226 func (WebAclLoggingConfigurationArgs) ElementType() reflect.Type { 227 return reflect.TypeOf((*webAclLoggingConfigurationArgs)(nil)).Elem() 228 } 229 230 type WebAclLoggingConfigurationInput interface { 231 pulumi.Input 232 233 ToWebAclLoggingConfigurationOutput() WebAclLoggingConfigurationOutput 234 ToWebAclLoggingConfigurationOutputWithContext(ctx context.Context) WebAclLoggingConfigurationOutput 235 } 236 237 func (*WebAclLoggingConfiguration) ElementType() reflect.Type { 238 return reflect.TypeOf((**WebAclLoggingConfiguration)(nil)).Elem() 239 } 240 241 func (i *WebAclLoggingConfiguration) ToWebAclLoggingConfigurationOutput() WebAclLoggingConfigurationOutput { 242 return i.ToWebAclLoggingConfigurationOutputWithContext(context.Background()) 243 } 244 245 func (i *WebAclLoggingConfiguration) ToWebAclLoggingConfigurationOutputWithContext(ctx context.Context) WebAclLoggingConfigurationOutput { 246 return pulumi.ToOutputWithContext(ctx, i).(WebAclLoggingConfigurationOutput) 247 } 248 249 // WebAclLoggingConfigurationArrayInput is an input type that accepts WebAclLoggingConfigurationArray and WebAclLoggingConfigurationArrayOutput values. 250 // You can construct a concrete instance of `WebAclLoggingConfigurationArrayInput` via: 251 // 252 // WebAclLoggingConfigurationArray{ WebAclLoggingConfigurationArgs{...} } 253 type WebAclLoggingConfigurationArrayInput interface { 254 pulumi.Input 255 256 ToWebAclLoggingConfigurationArrayOutput() WebAclLoggingConfigurationArrayOutput 257 ToWebAclLoggingConfigurationArrayOutputWithContext(context.Context) WebAclLoggingConfigurationArrayOutput 258 } 259 260 type WebAclLoggingConfigurationArray []WebAclLoggingConfigurationInput 261 262 func (WebAclLoggingConfigurationArray) ElementType() reflect.Type { 263 return reflect.TypeOf((*[]*WebAclLoggingConfiguration)(nil)).Elem() 264 } 265 266 func (i WebAclLoggingConfigurationArray) ToWebAclLoggingConfigurationArrayOutput() WebAclLoggingConfigurationArrayOutput { 267 return i.ToWebAclLoggingConfigurationArrayOutputWithContext(context.Background()) 268 } 269 270 func (i WebAclLoggingConfigurationArray) ToWebAclLoggingConfigurationArrayOutputWithContext(ctx context.Context) WebAclLoggingConfigurationArrayOutput { 271 return pulumi.ToOutputWithContext(ctx, i).(WebAclLoggingConfigurationArrayOutput) 272 } 273 274 // WebAclLoggingConfigurationMapInput is an input type that accepts WebAclLoggingConfigurationMap and WebAclLoggingConfigurationMapOutput values. 275 // You can construct a concrete instance of `WebAclLoggingConfigurationMapInput` via: 276 // 277 // WebAclLoggingConfigurationMap{ "key": WebAclLoggingConfigurationArgs{...} } 278 type WebAclLoggingConfigurationMapInput interface { 279 pulumi.Input 280 281 ToWebAclLoggingConfigurationMapOutput() WebAclLoggingConfigurationMapOutput 282 ToWebAclLoggingConfigurationMapOutputWithContext(context.Context) WebAclLoggingConfigurationMapOutput 283 } 284 285 type WebAclLoggingConfigurationMap map[string]WebAclLoggingConfigurationInput 286 287 func (WebAclLoggingConfigurationMap) ElementType() reflect.Type { 288 return reflect.TypeOf((*map[string]*WebAclLoggingConfiguration)(nil)).Elem() 289 } 290 291 func (i WebAclLoggingConfigurationMap) ToWebAclLoggingConfigurationMapOutput() WebAclLoggingConfigurationMapOutput { 292 return i.ToWebAclLoggingConfigurationMapOutputWithContext(context.Background()) 293 } 294 295 func (i WebAclLoggingConfigurationMap) ToWebAclLoggingConfigurationMapOutputWithContext(ctx context.Context) WebAclLoggingConfigurationMapOutput { 296 return pulumi.ToOutputWithContext(ctx, i).(WebAclLoggingConfigurationMapOutput) 297 } 298 299 type WebAclLoggingConfigurationOutput struct{ *pulumi.OutputState } 300 301 func (WebAclLoggingConfigurationOutput) ElementType() reflect.Type { 302 return reflect.TypeOf((**WebAclLoggingConfiguration)(nil)).Elem() 303 } 304 305 func (o WebAclLoggingConfigurationOutput) ToWebAclLoggingConfigurationOutput() WebAclLoggingConfigurationOutput { 306 return o 307 } 308 309 func (o WebAclLoggingConfigurationOutput) ToWebAclLoggingConfigurationOutputWithContext(ctx context.Context) WebAclLoggingConfigurationOutput { 310 return o 311 } 312 313 // Configuration block that allows you to associate Amazon Kinesis Data Firehose, Cloudwatch Log log group, or S3 bucket Amazon Resource Names (ARNs) with the web ACL. **Note:** data firehose, log group, or bucket name **must** be prefixed with `aws-waf-logs-`, e.g. `aws-waf-logs-example-firehose`, `aws-waf-logs-example-log-group`, or `aws-waf-logs-example-bucket`. 314 func (o WebAclLoggingConfigurationOutput) LogDestinationConfigs() pulumi.StringArrayOutput { 315 return o.ApplyT(func(v *WebAclLoggingConfiguration) pulumi.StringArrayOutput { return v.LogDestinationConfigs }).(pulumi.StringArrayOutput) 316 } 317 318 // Configuration block that specifies which web requests are kept in the logs and which are dropped. It allows filtering based on the rule action and the web request labels applied by matching rules during web ACL evaluation. For more details, refer to the Logging Filter section below. 319 func (o WebAclLoggingConfigurationOutput) LoggingFilter() WebAclLoggingConfigurationLoggingFilterPtrOutput { 320 return o.ApplyT(func(v *WebAclLoggingConfiguration) WebAclLoggingConfigurationLoggingFilterPtrOutput { 321 return v.LoggingFilter 322 }).(WebAclLoggingConfigurationLoggingFilterPtrOutput) 323 } 324 325 // Configuration for parts of the request that you want to keep out of the logs. Up to 100 `redactedFields` blocks are supported. See Redacted Fields below for more details. 326 func (o WebAclLoggingConfigurationOutput) RedactedFields() WebAclLoggingConfigurationRedactedFieldArrayOutput { 327 return o.ApplyT(func(v *WebAclLoggingConfiguration) WebAclLoggingConfigurationRedactedFieldArrayOutput { 328 return v.RedactedFields 329 }).(WebAclLoggingConfigurationRedactedFieldArrayOutput) 330 } 331 332 // Amazon Resource Name (ARN) of the web ACL that you want to associate with `logDestinationConfigs`. 333 func (o WebAclLoggingConfigurationOutput) ResourceArn() pulumi.StringOutput { 334 return o.ApplyT(func(v *WebAclLoggingConfiguration) pulumi.StringOutput { return v.ResourceArn }).(pulumi.StringOutput) 335 } 336 337 type WebAclLoggingConfigurationArrayOutput struct{ *pulumi.OutputState } 338 339 func (WebAclLoggingConfigurationArrayOutput) ElementType() reflect.Type { 340 return reflect.TypeOf((*[]*WebAclLoggingConfiguration)(nil)).Elem() 341 } 342 343 func (o WebAclLoggingConfigurationArrayOutput) ToWebAclLoggingConfigurationArrayOutput() WebAclLoggingConfigurationArrayOutput { 344 return o 345 } 346 347 func (o WebAclLoggingConfigurationArrayOutput) ToWebAclLoggingConfigurationArrayOutputWithContext(ctx context.Context) WebAclLoggingConfigurationArrayOutput { 348 return o 349 } 350 351 func (o WebAclLoggingConfigurationArrayOutput) Index(i pulumi.IntInput) WebAclLoggingConfigurationOutput { 352 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *WebAclLoggingConfiguration { 353 return vs[0].([]*WebAclLoggingConfiguration)[vs[1].(int)] 354 }).(WebAclLoggingConfigurationOutput) 355 } 356 357 type WebAclLoggingConfigurationMapOutput struct{ *pulumi.OutputState } 358 359 func (WebAclLoggingConfigurationMapOutput) ElementType() reflect.Type { 360 return reflect.TypeOf((*map[string]*WebAclLoggingConfiguration)(nil)).Elem() 361 } 362 363 func (o WebAclLoggingConfigurationMapOutput) ToWebAclLoggingConfigurationMapOutput() WebAclLoggingConfigurationMapOutput { 364 return o 365 } 366 367 func (o WebAclLoggingConfigurationMapOutput) ToWebAclLoggingConfigurationMapOutputWithContext(ctx context.Context) WebAclLoggingConfigurationMapOutput { 368 return o 369 } 370 371 func (o WebAclLoggingConfigurationMapOutput) MapIndex(k pulumi.StringInput) WebAclLoggingConfigurationOutput { 372 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *WebAclLoggingConfiguration { 373 return vs[0].(map[string]*WebAclLoggingConfiguration)[vs[1].(string)] 374 }).(WebAclLoggingConfigurationOutput) 375 } 376 377 func init() { 378 pulumi.RegisterInputType(reflect.TypeOf((*WebAclLoggingConfigurationInput)(nil)).Elem(), &WebAclLoggingConfiguration{}) 379 pulumi.RegisterInputType(reflect.TypeOf((*WebAclLoggingConfigurationArrayInput)(nil)).Elem(), WebAclLoggingConfigurationArray{}) 380 pulumi.RegisterInputType(reflect.TypeOf((*WebAclLoggingConfigurationMapInput)(nil)).Elem(), WebAclLoggingConfigurationMap{}) 381 pulumi.RegisterOutputType(WebAclLoggingConfigurationOutput{}) 382 pulumi.RegisterOutputType(WebAclLoggingConfigurationArrayOutput{}) 383 pulumi.RegisterOutputType(WebAclLoggingConfigurationMapOutput{}) 384 }