github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/cfg/remediationConfiguration.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 cfg 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 Config Remediation Configuration. 16 // 17 // > **Note:** Config Remediation Configuration requires an existing Config Rule to be present. 18 // 19 // ## Example Usage 20 // 21 // AWS managed rules can be used by setting the source owner to `AWS` and the source identifier to the name of the managed rule. More information about AWS managed rules can be found in the [AWS Config Developer Guide](https://docs.aws.amazon.com/config/latest/developerguide/evaluate-config_use-managed-rules.html). 22 // 23 // <!--Start PulumiCodeChooser --> 24 // ```go 25 // package main 26 // 27 // import ( 28 // 29 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/cfg" 30 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 31 // 32 // ) 33 // 34 // func main() { 35 // pulumi.Run(func(ctx *pulumi.Context) error { 36 // this, err := cfg.NewRule(ctx, "this", &cfg.RuleArgs{ 37 // Name: pulumi.String("example"), 38 // Source: &cfg.RuleSourceArgs{ 39 // Owner: pulumi.String("AWS"), 40 // SourceIdentifier: pulumi.String("S3_BUCKET_VERSIONING_ENABLED"), 41 // }, 42 // }) 43 // if err != nil { 44 // return err 45 // } 46 // _, err = cfg.NewRemediationConfiguration(ctx, "this", &cfg.RemediationConfigurationArgs{ 47 // ConfigRuleName: this.Name, 48 // ResourceType: pulumi.String("AWS::S3::Bucket"), 49 // TargetType: pulumi.String("SSM_DOCUMENT"), 50 // TargetId: pulumi.String("AWS-EnableS3BucketEncryption"), 51 // TargetVersion: pulumi.String("1"), 52 // Parameters: cfg.RemediationConfigurationParameterArray{ 53 // &cfg.RemediationConfigurationParameterArgs{ 54 // Name: pulumi.String("AutomationAssumeRole"), 55 // StaticValue: pulumi.String("arn:aws:iam::875924563244:role/security_config"), 56 // }, 57 // &cfg.RemediationConfigurationParameterArgs{ 58 // Name: pulumi.String("BucketName"), 59 // ResourceValue: pulumi.String("RESOURCE_ID"), 60 // }, 61 // &cfg.RemediationConfigurationParameterArgs{ 62 // Name: pulumi.String("SSEAlgorithm"), 63 // StaticValue: pulumi.String("AES256"), 64 // }, 65 // }, 66 // Automatic: pulumi.Bool(true), 67 // MaximumAutomaticAttempts: pulumi.Int(10), 68 // RetryAttemptSeconds: pulumi.Int(600), 69 // ExecutionControls: &cfg.RemediationConfigurationExecutionControlsArgs{ 70 // SsmControls: &cfg.RemediationConfigurationExecutionControlsSsmControlsArgs{ 71 // ConcurrentExecutionRatePercentage: pulumi.Int(25), 72 // ErrorPercentage: pulumi.Int(20), 73 // }, 74 // }, 75 // }) 76 // if err != nil { 77 // return err 78 // } 79 // return nil 80 // }) 81 // } 82 // 83 // ``` 84 // <!--End PulumiCodeChooser --> 85 // 86 // ## Import 87 // 88 // Using `pulumi import`, import Remediation Configurations using the name config_rule_name. For example: 89 // 90 // ```sh 91 // $ pulumi import aws:cfg/remediationConfiguration:RemediationConfiguration this example 92 // ``` 93 type RemediationConfiguration struct { 94 pulumi.CustomResourceState 95 96 // ARN of the Config Remediation Configuration. 97 Arn pulumi.StringOutput `pulumi:"arn"` 98 // Remediation is triggered automatically if `true`. 99 Automatic pulumi.BoolPtrOutput `pulumi:"automatic"` 100 // Name of the AWS Config rule. 101 ConfigRuleName pulumi.StringOutput `pulumi:"configRuleName"` 102 // Configuration block for execution controls. See below. 103 ExecutionControls RemediationConfigurationExecutionControlsPtrOutput `pulumi:"executionControls"` 104 // Maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5. 105 MaximumAutomaticAttempts pulumi.IntPtrOutput `pulumi:"maximumAutomaticAttempts"` 106 // Can be specified multiple times for each parameter. Each parameter block supports arguments below. 107 Parameters RemediationConfigurationParameterArrayOutput `pulumi:"parameters"` 108 // Type of resource. 109 ResourceType pulumi.StringPtrOutput `pulumi:"resourceType"` 110 // Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds. 111 RetryAttemptSeconds pulumi.IntPtrOutput `pulumi:"retryAttemptSeconds"` 112 // Target ID is the name of the public document. 113 TargetId pulumi.StringOutput `pulumi:"targetId"` 114 // Type of the target. Target executes remediation. For example, SSM document. 115 // 116 // The following arguments are optional: 117 TargetType pulumi.StringOutput `pulumi:"targetType"` 118 // Version of the target. For example, version of the SSM document 119 TargetVersion pulumi.StringPtrOutput `pulumi:"targetVersion"` 120 } 121 122 // NewRemediationConfiguration registers a new resource with the given unique name, arguments, and options. 123 func NewRemediationConfiguration(ctx *pulumi.Context, 124 name string, args *RemediationConfigurationArgs, opts ...pulumi.ResourceOption) (*RemediationConfiguration, error) { 125 if args == nil { 126 return nil, errors.New("missing one or more required arguments") 127 } 128 129 if args.ConfigRuleName == nil { 130 return nil, errors.New("invalid value for required argument 'ConfigRuleName'") 131 } 132 if args.TargetId == nil { 133 return nil, errors.New("invalid value for required argument 'TargetId'") 134 } 135 if args.TargetType == nil { 136 return nil, errors.New("invalid value for required argument 'TargetType'") 137 } 138 opts = internal.PkgResourceDefaultOpts(opts) 139 var resource RemediationConfiguration 140 err := ctx.RegisterResource("aws:cfg/remediationConfiguration:RemediationConfiguration", name, args, &resource, opts...) 141 if err != nil { 142 return nil, err 143 } 144 return &resource, nil 145 } 146 147 // GetRemediationConfiguration gets an existing RemediationConfiguration resource's state with the given name, ID, and optional 148 // state properties that are used to uniquely qualify the lookup (nil if not required). 149 func GetRemediationConfiguration(ctx *pulumi.Context, 150 name string, id pulumi.IDInput, state *RemediationConfigurationState, opts ...pulumi.ResourceOption) (*RemediationConfiguration, error) { 151 var resource RemediationConfiguration 152 err := ctx.ReadResource("aws:cfg/remediationConfiguration:RemediationConfiguration", name, id, state, &resource, opts...) 153 if err != nil { 154 return nil, err 155 } 156 return &resource, nil 157 } 158 159 // Input properties used for looking up and filtering RemediationConfiguration resources. 160 type remediationConfigurationState struct { 161 // ARN of the Config Remediation Configuration. 162 Arn *string `pulumi:"arn"` 163 // Remediation is triggered automatically if `true`. 164 Automatic *bool `pulumi:"automatic"` 165 // Name of the AWS Config rule. 166 ConfigRuleName *string `pulumi:"configRuleName"` 167 // Configuration block for execution controls. See below. 168 ExecutionControls *RemediationConfigurationExecutionControls `pulumi:"executionControls"` 169 // Maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5. 170 MaximumAutomaticAttempts *int `pulumi:"maximumAutomaticAttempts"` 171 // Can be specified multiple times for each parameter. Each parameter block supports arguments below. 172 Parameters []RemediationConfigurationParameter `pulumi:"parameters"` 173 // Type of resource. 174 ResourceType *string `pulumi:"resourceType"` 175 // Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds. 176 RetryAttemptSeconds *int `pulumi:"retryAttemptSeconds"` 177 // Target ID is the name of the public document. 178 TargetId *string `pulumi:"targetId"` 179 // Type of the target. Target executes remediation. For example, SSM document. 180 // 181 // The following arguments are optional: 182 TargetType *string `pulumi:"targetType"` 183 // Version of the target. For example, version of the SSM document 184 TargetVersion *string `pulumi:"targetVersion"` 185 } 186 187 type RemediationConfigurationState struct { 188 // ARN of the Config Remediation Configuration. 189 Arn pulumi.StringPtrInput 190 // Remediation is triggered automatically if `true`. 191 Automatic pulumi.BoolPtrInput 192 // Name of the AWS Config rule. 193 ConfigRuleName pulumi.StringPtrInput 194 // Configuration block for execution controls. See below. 195 ExecutionControls RemediationConfigurationExecutionControlsPtrInput 196 // Maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5. 197 MaximumAutomaticAttempts pulumi.IntPtrInput 198 // Can be specified multiple times for each parameter. Each parameter block supports arguments below. 199 Parameters RemediationConfigurationParameterArrayInput 200 // Type of resource. 201 ResourceType pulumi.StringPtrInput 202 // Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds. 203 RetryAttemptSeconds pulumi.IntPtrInput 204 // Target ID is the name of the public document. 205 TargetId pulumi.StringPtrInput 206 // Type of the target. Target executes remediation. For example, SSM document. 207 // 208 // The following arguments are optional: 209 TargetType pulumi.StringPtrInput 210 // Version of the target. For example, version of the SSM document 211 TargetVersion pulumi.StringPtrInput 212 } 213 214 func (RemediationConfigurationState) ElementType() reflect.Type { 215 return reflect.TypeOf((*remediationConfigurationState)(nil)).Elem() 216 } 217 218 type remediationConfigurationArgs struct { 219 // Remediation is triggered automatically if `true`. 220 Automatic *bool `pulumi:"automatic"` 221 // Name of the AWS Config rule. 222 ConfigRuleName string `pulumi:"configRuleName"` 223 // Configuration block for execution controls. See below. 224 ExecutionControls *RemediationConfigurationExecutionControls `pulumi:"executionControls"` 225 // Maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5. 226 MaximumAutomaticAttempts *int `pulumi:"maximumAutomaticAttempts"` 227 // Can be specified multiple times for each parameter. Each parameter block supports arguments below. 228 Parameters []RemediationConfigurationParameter `pulumi:"parameters"` 229 // Type of resource. 230 ResourceType *string `pulumi:"resourceType"` 231 // Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds. 232 RetryAttemptSeconds *int `pulumi:"retryAttemptSeconds"` 233 // Target ID is the name of the public document. 234 TargetId string `pulumi:"targetId"` 235 // Type of the target. Target executes remediation. For example, SSM document. 236 // 237 // The following arguments are optional: 238 TargetType string `pulumi:"targetType"` 239 // Version of the target. For example, version of the SSM document 240 TargetVersion *string `pulumi:"targetVersion"` 241 } 242 243 // The set of arguments for constructing a RemediationConfiguration resource. 244 type RemediationConfigurationArgs struct { 245 // Remediation is triggered automatically if `true`. 246 Automatic pulumi.BoolPtrInput 247 // Name of the AWS Config rule. 248 ConfigRuleName pulumi.StringInput 249 // Configuration block for execution controls. See below. 250 ExecutionControls RemediationConfigurationExecutionControlsPtrInput 251 // Maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5. 252 MaximumAutomaticAttempts pulumi.IntPtrInput 253 // Can be specified multiple times for each parameter. Each parameter block supports arguments below. 254 Parameters RemediationConfigurationParameterArrayInput 255 // Type of resource. 256 ResourceType pulumi.StringPtrInput 257 // Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds. 258 RetryAttemptSeconds pulumi.IntPtrInput 259 // Target ID is the name of the public document. 260 TargetId pulumi.StringInput 261 // Type of the target. Target executes remediation. For example, SSM document. 262 // 263 // The following arguments are optional: 264 TargetType pulumi.StringInput 265 // Version of the target. For example, version of the SSM document 266 TargetVersion pulumi.StringPtrInput 267 } 268 269 func (RemediationConfigurationArgs) ElementType() reflect.Type { 270 return reflect.TypeOf((*remediationConfigurationArgs)(nil)).Elem() 271 } 272 273 type RemediationConfigurationInput interface { 274 pulumi.Input 275 276 ToRemediationConfigurationOutput() RemediationConfigurationOutput 277 ToRemediationConfigurationOutputWithContext(ctx context.Context) RemediationConfigurationOutput 278 } 279 280 func (*RemediationConfiguration) ElementType() reflect.Type { 281 return reflect.TypeOf((**RemediationConfiguration)(nil)).Elem() 282 } 283 284 func (i *RemediationConfiguration) ToRemediationConfigurationOutput() RemediationConfigurationOutput { 285 return i.ToRemediationConfigurationOutputWithContext(context.Background()) 286 } 287 288 func (i *RemediationConfiguration) ToRemediationConfigurationOutputWithContext(ctx context.Context) RemediationConfigurationOutput { 289 return pulumi.ToOutputWithContext(ctx, i).(RemediationConfigurationOutput) 290 } 291 292 // RemediationConfigurationArrayInput is an input type that accepts RemediationConfigurationArray and RemediationConfigurationArrayOutput values. 293 // You can construct a concrete instance of `RemediationConfigurationArrayInput` via: 294 // 295 // RemediationConfigurationArray{ RemediationConfigurationArgs{...} } 296 type RemediationConfigurationArrayInput interface { 297 pulumi.Input 298 299 ToRemediationConfigurationArrayOutput() RemediationConfigurationArrayOutput 300 ToRemediationConfigurationArrayOutputWithContext(context.Context) RemediationConfigurationArrayOutput 301 } 302 303 type RemediationConfigurationArray []RemediationConfigurationInput 304 305 func (RemediationConfigurationArray) ElementType() reflect.Type { 306 return reflect.TypeOf((*[]*RemediationConfiguration)(nil)).Elem() 307 } 308 309 func (i RemediationConfigurationArray) ToRemediationConfigurationArrayOutput() RemediationConfigurationArrayOutput { 310 return i.ToRemediationConfigurationArrayOutputWithContext(context.Background()) 311 } 312 313 func (i RemediationConfigurationArray) ToRemediationConfigurationArrayOutputWithContext(ctx context.Context) RemediationConfigurationArrayOutput { 314 return pulumi.ToOutputWithContext(ctx, i).(RemediationConfigurationArrayOutput) 315 } 316 317 // RemediationConfigurationMapInput is an input type that accepts RemediationConfigurationMap and RemediationConfigurationMapOutput values. 318 // You can construct a concrete instance of `RemediationConfigurationMapInput` via: 319 // 320 // RemediationConfigurationMap{ "key": RemediationConfigurationArgs{...} } 321 type RemediationConfigurationMapInput interface { 322 pulumi.Input 323 324 ToRemediationConfigurationMapOutput() RemediationConfigurationMapOutput 325 ToRemediationConfigurationMapOutputWithContext(context.Context) RemediationConfigurationMapOutput 326 } 327 328 type RemediationConfigurationMap map[string]RemediationConfigurationInput 329 330 func (RemediationConfigurationMap) ElementType() reflect.Type { 331 return reflect.TypeOf((*map[string]*RemediationConfiguration)(nil)).Elem() 332 } 333 334 func (i RemediationConfigurationMap) ToRemediationConfigurationMapOutput() RemediationConfigurationMapOutput { 335 return i.ToRemediationConfigurationMapOutputWithContext(context.Background()) 336 } 337 338 func (i RemediationConfigurationMap) ToRemediationConfigurationMapOutputWithContext(ctx context.Context) RemediationConfigurationMapOutput { 339 return pulumi.ToOutputWithContext(ctx, i).(RemediationConfigurationMapOutput) 340 } 341 342 type RemediationConfigurationOutput struct{ *pulumi.OutputState } 343 344 func (RemediationConfigurationOutput) ElementType() reflect.Type { 345 return reflect.TypeOf((**RemediationConfiguration)(nil)).Elem() 346 } 347 348 func (o RemediationConfigurationOutput) ToRemediationConfigurationOutput() RemediationConfigurationOutput { 349 return o 350 } 351 352 func (o RemediationConfigurationOutput) ToRemediationConfigurationOutputWithContext(ctx context.Context) RemediationConfigurationOutput { 353 return o 354 } 355 356 // ARN of the Config Remediation Configuration. 357 func (o RemediationConfigurationOutput) Arn() pulumi.StringOutput { 358 return o.ApplyT(func(v *RemediationConfiguration) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput) 359 } 360 361 // Remediation is triggered automatically if `true`. 362 func (o RemediationConfigurationOutput) Automatic() pulumi.BoolPtrOutput { 363 return o.ApplyT(func(v *RemediationConfiguration) pulumi.BoolPtrOutput { return v.Automatic }).(pulumi.BoolPtrOutput) 364 } 365 366 // Name of the AWS Config rule. 367 func (o RemediationConfigurationOutput) ConfigRuleName() pulumi.StringOutput { 368 return o.ApplyT(func(v *RemediationConfiguration) pulumi.StringOutput { return v.ConfigRuleName }).(pulumi.StringOutput) 369 } 370 371 // Configuration block for execution controls. See below. 372 func (o RemediationConfigurationOutput) ExecutionControls() RemediationConfigurationExecutionControlsPtrOutput { 373 return o.ApplyT(func(v *RemediationConfiguration) RemediationConfigurationExecutionControlsPtrOutput { 374 return v.ExecutionControls 375 }).(RemediationConfigurationExecutionControlsPtrOutput) 376 } 377 378 // Maximum number of failed attempts for auto-remediation. If you do not select a number, the default is 5. 379 func (o RemediationConfigurationOutput) MaximumAutomaticAttempts() pulumi.IntPtrOutput { 380 return o.ApplyT(func(v *RemediationConfiguration) pulumi.IntPtrOutput { return v.MaximumAutomaticAttempts }).(pulumi.IntPtrOutput) 381 } 382 383 // Can be specified multiple times for each parameter. Each parameter block supports arguments below. 384 func (o RemediationConfigurationOutput) Parameters() RemediationConfigurationParameterArrayOutput { 385 return o.ApplyT(func(v *RemediationConfiguration) RemediationConfigurationParameterArrayOutput { return v.Parameters }).(RemediationConfigurationParameterArrayOutput) 386 } 387 388 // Type of resource. 389 func (o RemediationConfigurationOutput) ResourceType() pulumi.StringPtrOutput { 390 return o.ApplyT(func(v *RemediationConfiguration) pulumi.StringPtrOutput { return v.ResourceType }).(pulumi.StringPtrOutput) 391 } 392 393 // Maximum time in seconds that AWS Config runs auto-remediation. If you do not select a number, the default is 60 seconds. 394 func (o RemediationConfigurationOutput) RetryAttemptSeconds() pulumi.IntPtrOutput { 395 return o.ApplyT(func(v *RemediationConfiguration) pulumi.IntPtrOutput { return v.RetryAttemptSeconds }).(pulumi.IntPtrOutput) 396 } 397 398 // Target ID is the name of the public document. 399 func (o RemediationConfigurationOutput) TargetId() pulumi.StringOutput { 400 return o.ApplyT(func(v *RemediationConfiguration) pulumi.StringOutput { return v.TargetId }).(pulumi.StringOutput) 401 } 402 403 // Type of the target. Target executes remediation. For example, SSM document. 404 // 405 // The following arguments are optional: 406 func (o RemediationConfigurationOutput) TargetType() pulumi.StringOutput { 407 return o.ApplyT(func(v *RemediationConfiguration) pulumi.StringOutput { return v.TargetType }).(pulumi.StringOutput) 408 } 409 410 // Version of the target. For example, version of the SSM document 411 func (o RemediationConfigurationOutput) TargetVersion() pulumi.StringPtrOutput { 412 return o.ApplyT(func(v *RemediationConfiguration) pulumi.StringPtrOutput { return v.TargetVersion }).(pulumi.StringPtrOutput) 413 } 414 415 type RemediationConfigurationArrayOutput struct{ *pulumi.OutputState } 416 417 func (RemediationConfigurationArrayOutput) ElementType() reflect.Type { 418 return reflect.TypeOf((*[]*RemediationConfiguration)(nil)).Elem() 419 } 420 421 func (o RemediationConfigurationArrayOutput) ToRemediationConfigurationArrayOutput() RemediationConfigurationArrayOutput { 422 return o 423 } 424 425 func (o RemediationConfigurationArrayOutput) ToRemediationConfigurationArrayOutputWithContext(ctx context.Context) RemediationConfigurationArrayOutput { 426 return o 427 } 428 429 func (o RemediationConfigurationArrayOutput) Index(i pulumi.IntInput) RemediationConfigurationOutput { 430 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *RemediationConfiguration { 431 return vs[0].([]*RemediationConfiguration)[vs[1].(int)] 432 }).(RemediationConfigurationOutput) 433 } 434 435 type RemediationConfigurationMapOutput struct{ *pulumi.OutputState } 436 437 func (RemediationConfigurationMapOutput) ElementType() reflect.Type { 438 return reflect.TypeOf((*map[string]*RemediationConfiguration)(nil)).Elem() 439 } 440 441 func (o RemediationConfigurationMapOutput) ToRemediationConfigurationMapOutput() RemediationConfigurationMapOutput { 442 return o 443 } 444 445 func (o RemediationConfigurationMapOutput) ToRemediationConfigurationMapOutputWithContext(ctx context.Context) RemediationConfigurationMapOutput { 446 return o 447 } 448 449 func (o RemediationConfigurationMapOutput) MapIndex(k pulumi.StringInput) RemediationConfigurationOutput { 450 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *RemediationConfiguration { 451 return vs[0].(map[string]*RemediationConfiguration)[vs[1].(string)] 452 }).(RemediationConfigurationOutput) 453 } 454 455 func init() { 456 pulumi.RegisterInputType(reflect.TypeOf((*RemediationConfigurationInput)(nil)).Elem(), &RemediationConfiguration{}) 457 pulumi.RegisterInputType(reflect.TypeOf((*RemediationConfigurationArrayInput)(nil)).Elem(), RemediationConfigurationArray{}) 458 pulumi.RegisterInputType(reflect.TypeOf((*RemediationConfigurationMapInput)(nil)).Elem(), RemediationConfigurationMap{}) 459 pulumi.RegisterOutputType(RemediationConfigurationOutput{}) 460 pulumi.RegisterOutputType(RemediationConfigurationArrayOutput{}) 461 pulumi.RegisterOutputType(RemediationConfigurationMapOutput{}) 462 }