github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/emr/blockPublicAccessConfiguration.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 emr 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 // Resource for managing an AWS EMR block public access configuration. This region level security configuration restricts the launch of EMR clusters that have associated security groups permitting public access on unspecified ports. See the [EMR Block Public Access Configuration](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-block-public-access.html) documentation for further information. 16 // 17 // ## Example Usage 18 // 19 // ### Basic Usage 20 // 21 // <!--Start PulumiCodeChooser --> 22 // ```go 23 // package main 24 // 25 // import ( 26 // 27 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr" 28 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 29 // 30 // ) 31 // 32 // func main() { 33 // pulumi.Run(func(ctx *pulumi.Context) error { 34 // _, err := emr.NewBlockPublicAccessConfiguration(ctx, "example", &emr.BlockPublicAccessConfigurationArgs{ 35 // BlockPublicSecurityGroupRules: pulumi.Bool(true), 36 // }) 37 // if err != nil { 38 // return err 39 // } 40 // return nil 41 // }) 42 // } 43 // 44 // ``` 45 // <!--End PulumiCodeChooser --> 46 // 47 // ### Default Configuration 48 // 49 // By default, each AWS region is equipped with a block public access configuration that prevents EMR clusters from being launched if they have security group rules permitting public access on any port except for port 22. The default configuration can be managed using this resource. 50 // 51 // <!--Start PulumiCodeChooser --> 52 // ```go 53 // package main 54 // 55 // import ( 56 // 57 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr" 58 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 59 // 60 // ) 61 // 62 // func main() { 63 // pulumi.Run(func(ctx *pulumi.Context) error { 64 // _, err := emr.NewBlockPublicAccessConfiguration(ctx, "example", &emr.BlockPublicAccessConfigurationArgs{ 65 // BlockPublicSecurityGroupRules: pulumi.Bool(true), 66 // PermittedPublicSecurityGroupRuleRanges: emr.BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArray{ 67 // &emr.BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArgs{ 68 // MinRange: pulumi.Int(22), 69 // MaxRange: pulumi.Int(22), 70 // }, 71 // }, 72 // }) 73 // if err != nil { 74 // return err 75 // } 76 // return nil 77 // }) 78 // } 79 // 80 // ``` 81 // <!--End PulumiCodeChooser --> 82 // 83 // > **NOTE:** If an `emr.BlockPublicAccessConfiguration` resource is destroyed, the configuration will reset to this default configuration. 84 // 85 // ### Multiple Permitted Public Security Group Rule Ranges 86 // 87 // The resource permits specification of multiple `permittedPublicSecurityGroupRuleRange` blocks. 88 // 89 // <!--Start PulumiCodeChooser --> 90 // ```go 91 // package main 92 // 93 // import ( 94 // 95 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr" 96 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 97 // 98 // ) 99 // 100 // func main() { 101 // pulumi.Run(func(ctx *pulumi.Context) error { 102 // _, err := emr.NewBlockPublicAccessConfiguration(ctx, "example", &emr.BlockPublicAccessConfigurationArgs{ 103 // BlockPublicSecurityGroupRules: pulumi.Bool(true), 104 // PermittedPublicSecurityGroupRuleRanges: emr.BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArray{ 105 // &emr.BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArgs{ 106 // MinRange: pulumi.Int(22), 107 // MaxRange: pulumi.Int(22), 108 // }, 109 // &emr.BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArgs{ 110 // MinRange: pulumi.Int(100), 111 // MaxRange: pulumi.Int(101), 112 // }, 113 // }, 114 // }) 115 // if err != nil { 116 // return err 117 // } 118 // return nil 119 // }) 120 // } 121 // 122 // ``` 123 // <!--End PulumiCodeChooser --> 124 // 125 // ### Disabling Block Public Access 126 // 127 // To permit EMR clusters to be launched in the configured region regardless of associated security group rules, the Block Public Access feature can be disabled using this resource. 128 // 129 // <!--Start PulumiCodeChooser --> 130 // ```go 131 // package main 132 // 133 // import ( 134 // 135 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr" 136 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 137 // 138 // ) 139 // 140 // func main() { 141 // pulumi.Run(func(ctx *pulumi.Context) error { 142 // _, err := emr.NewBlockPublicAccessConfiguration(ctx, "example", &emr.BlockPublicAccessConfigurationArgs{ 143 // BlockPublicSecurityGroupRules: pulumi.Bool(false), 144 // }) 145 // if err != nil { 146 // return err 147 // } 148 // return nil 149 // }) 150 // } 151 // 152 // ``` 153 // <!--End PulumiCodeChooser --> 154 // 155 // ## Import 156 // 157 // Using `pulumi import`, import the current EMR Block Public Access Configuration. For example: 158 // 159 // ```sh 160 // $ pulumi import aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration example current 161 // ``` 162 type BlockPublicAccessConfiguration struct { 163 pulumi.CustomResourceState 164 165 // Enable or disable EMR Block Public Access. 166 // 167 // The following arguments are optional: 168 BlockPublicSecurityGroupRules pulumi.BoolOutput `pulumi:"blockPublicSecurityGroupRules"` 169 // Configuration block for defining permitted public security group rule port ranges. Can be defined multiple times per resource. Only valid if `blockPublicSecurityGroupRules` is set to `true`. 170 PermittedPublicSecurityGroupRuleRanges BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArrayOutput `pulumi:"permittedPublicSecurityGroupRuleRanges"` 171 } 172 173 // NewBlockPublicAccessConfiguration registers a new resource with the given unique name, arguments, and options. 174 func NewBlockPublicAccessConfiguration(ctx *pulumi.Context, 175 name string, args *BlockPublicAccessConfigurationArgs, opts ...pulumi.ResourceOption) (*BlockPublicAccessConfiguration, error) { 176 if args == nil { 177 return nil, errors.New("missing one or more required arguments") 178 } 179 180 if args.BlockPublicSecurityGroupRules == nil { 181 return nil, errors.New("invalid value for required argument 'BlockPublicSecurityGroupRules'") 182 } 183 opts = internal.PkgResourceDefaultOpts(opts) 184 var resource BlockPublicAccessConfiguration 185 err := ctx.RegisterResource("aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration", name, args, &resource, opts...) 186 if err != nil { 187 return nil, err 188 } 189 return &resource, nil 190 } 191 192 // GetBlockPublicAccessConfiguration gets an existing BlockPublicAccessConfiguration resource's state with the given name, ID, and optional 193 // state properties that are used to uniquely qualify the lookup (nil if not required). 194 func GetBlockPublicAccessConfiguration(ctx *pulumi.Context, 195 name string, id pulumi.IDInput, state *BlockPublicAccessConfigurationState, opts ...pulumi.ResourceOption) (*BlockPublicAccessConfiguration, error) { 196 var resource BlockPublicAccessConfiguration 197 err := ctx.ReadResource("aws:emr/blockPublicAccessConfiguration:BlockPublicAccessConfiguration", name, id, state, &resource, opts...) 198 if err != nil { 199 return nil, err 200 } 201 return &resource, nil 202 } 203 204 // Input properties used for looking up and filtering BlockPublicAccessConfiguration resources. 205 type blockPublicAccessConfigurationState struct { 206 // Enable or disable EMR Block Public Access. 207 // 208 // The following arguments are optional: 209 BlockPublicSecurityGroupRules *bool `pulumi:"blockPublicSecurityGroupRules"` 210 // Configuration block for defining permitted public security group rule port ranges. Can be defined multiple times per resource. Only valid if `blockPublicSecurityGroupRules` is set to `true`. 211 PermittedPublicSecurityGroupRuleRanges []BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRange `pulumi:"permittedPublicSecurityGroupRuleRanges"` 212 } 213 214 type BlockPublicAccessConfigurationState struct { 215 // Enable or disable EMR Block Public Access. 216 // 217 // The following arguments are optional: 218 BlockPublicSecurityGroupRules pulumi.BoolPtrInput 219 // Configuration block for defining permitted public security group rule port ranges. Can be defined multiple times per resource. Only valid if `blockPublicSecurityGroupRules` is set to `true`. 220 PermittedPublicSecurityGroupRuleRanges BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArrayInput 221 } 222 223 func (BlockPublicAccessConfigurationState) ElementType() reflect.Type { 224 return reflect.TypeOf((*blockPublicAccessConfigurationState)(nil)).Elem() 225 } 226 227 type blockPublicAccessConfigurationArgs struct { 228 // Enable or disable EMR Block Public Access. 229 // 230 // The following arguments are optional: 231 BlockPublicSecurityGroupRules bool `pulumi:"blockPublicSecurityGroupRules"` 232 // Configuration block for defining permitted public security group rule port ranges. Can be defined multiple times per resource. Only valid if `blockPublicSecurityGroupRules` is set to `true`. 233 PermittedPublicSecurityGroupRuleRanges []BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRange `pulumi:"permittedPublicSecurityGroupRuleRanges"` 234 } 235 236 // The set of arguments for constructing a BlockPublicAccessConfiguration resource. 237 type BlockPublicAccessConfigurationArgs struct { 238 // Enable or disable EMR Block Public Access. 239 // 240 // The following arguments are optional: 241 BlockPublicSecurityGroupRules pulumi.BoolInput 242 // Configuration block for defining permitted public security group rule port ranges. Can be defined multiple times per resource. Only valid if `blockPublicSecurityGroupRules` is set to `true`. 243 PermittedPublicSecurityGroupRuleRanges BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArrayInput 244 } 245 246 func (BlockPublicAccessConfigurationArgs) ElementType() reflect.Type { 247 return reflect.TypeOf((*blockPublicAccessConfigurationArgs)(nil)).Elem() 248 } 249 250 type BlockPublicAccessConfigurationInput interface { 251 pulumi.Input 252 253 ToBlockPublicAccessConfigurationOutput() BlockPublicAccessConfigurationOutput 254 ToBlockPublicAccessConfigurationOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationOutput 255 } 256 257 func (*BlockPublicAccessConfiguration) ElementType() reflect.Type { 258 return reflect.TypeOf((**BlockPublicAccessConfiguration)(nil)).Elem() 259 } 260 261 func (i *BlockPublicAccessConfiguration) ToBlockPublicAccessConfigurationOutput() BlockPublicAccessConfigurationOutput { 262 return i.ToBlockPublicAccessConfigurationOutputWithContext(context.Background()) 263 } 264 265 func (i *BlockPublicAccessConfiguration) ToBlockPublicAccessConfigurationOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationOutput { 266 return pulumi.ToOutputWithContext(ctx, i).(BlockPublicAccessConfigurationOutput) 267 } 268 269 // BlockPublicAccessConfigurationArrayInput is an input type that accepts BlockPublicAccessConfigurationArray and BlockPublicAccessConfigurationArrayOutput values. 270 // You can construct a concrete instance of `BlockPublicAccessConfigurationArrayInput` via: 271 // 272 // BlockPublicAccessConfigurationArray{ BlockPublicAccessConfigurationArgs{...} } 273 type BlockPublicAccessConfigurationArrayInput interface { 274 pulumi.Input 275 276 ToBlockPublicAccessConfigurationArrayOutput() BlockPublicAccessConfigurationArrayOutput 277 ToBlockPublicAccessConfigurationArrayOutputWithContext(context.Context) BlockPublicAccessConfigurationArrayOutput 278 } 279 280 type BlockPublicAccessConfigurationArray []BlockPublicAccessConfigurationInput 281 282 func (BlockPublicAccessConfigurationArray) ElementType() reflect.Type { 283 return reflect.TypeOf((*[]*BlockPublicAccessConfiguration)(nil)).Elem() 284 } 285 286 func (i BlockPublicAccessConfigurationArray) ToBlockPublicAccessConfigurationArrayOutput() BlockPublicAccessConfigurationArrayOutput { 287 return i.ToBlockPublicAccessConfigurationArrayOutputWithContext(context.Background()) 288 } 289 290 func (i BlockPublicAccessConfigurationArray) ToBlockPublicAccessConfigurationArrayOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationArrayOutput { 291 return pulumi.ToOutputWithContext(ctx, i).(BlockPublicAccessConfigurationArrayOutput) 292 } 293 294 // BlockPublicAccessConfigurationMapInput is an input type that accepts BlockPublicAccessConfigurationMap and BlockPublicAccessConfigurationMapOutput values. 295 // You can construct a concrete instance of `BlockPublicAccessConfigurationMapInput` via: 296 // 297 // BlockPublicAccessConfigurationMap{ "key": BlockPublicAccessConfigurationArgs{...} } 298 type BlockPublicAccessConfigurationMapInput interface { 299 pulumi.Input 300 301 ToBlockPublicAccessConfigurationMapOutput() BlockPublicAccessConfigurationMapOutput 302 ToBlockPublicAccessConfigurationMapOutputWithContext(context.Context) BlockPublicAccessConfigurationMapOutput 303 } 304 305 type BlockPublicAccessConfigurationMap map[string]BlockPublicAccessConfigurationInput 306 307 func (BlockPublicAccessConfigurationMap) ElementType() reflect.Type { 308 return reflect.TypeOf((*map[string]*BlockPublicAccessConfiguration)(nil)).Elem() 309 } 310 311 func (i BlockPublicAccessConfigurationMap) ToBlockPublicAccessConfigurationMapOutput() BlockPublicAccessConfigurationMapOutput { 312 return i.ToBlockPublicAccessConfigurationMapOutputWithContext(context.Background()) 313 } 314 315 func (i BlockPublicAccessConfigurationMap) ToBlockPublicAccessConfigurationMapOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationMapOutput { 316 return pulumi.ToOutputWithContext(ctx, i).(BlockPublicAccessConfigurationMapOutput) 317 } 318 319 type BlockPublicAccessConfigurationOutput struct{ *pulumi.OutputState } 320 321 func (BlockPublicAccessConfigurationOutput) ElementType() reflect.Type { 322 return reflect.TypeOf((**BlockPublicAccessConfiguration)(nil)).Elem() 323 } 324 325 func (o BlockPublicAccessConfigurationOutput) ToBlockPublicAccessConfigurationOutput() BlockPublicAccessConfigurationOutput { 326 return o 327 } 328 329 func (o BlockPublicAccessConfigurationOutput) ToBlockPublicAccessConfigurationOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationOutput { 330 return o 331 } 332 333 // Enable or disable EMR Block Public Access. 334 // 335 // The following arguments are optional: 336 func (o BlockPublicAccessConfigurationOutput) BlockPublicSecurityGroupRules() pulumi.BoolOutput { 337 return o.ApplyT(func(v *BlockPublicAccessConfiguration) pulumi.BoolOutput { return v.BlockPublicSecurityGroupRules }).(pulumi.BoolOutput) 338 } 339 340 // Configuration block for defining permitted public security group rule port ranges. Can be defined multiple times per resource. Only valid if `blockPublicSecurityGroupRules` is set to `true`. 341 func (o BlockPublicAccessConfigurationOutput) PermittedPublicSecurityGroupRuleRanges() BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArrayOutput { 342 return o.ApplyT(func(v *BlockPublicAccessConfiguration) BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArrayOutput { 343 return v.PermittedPublicSecurityGroupRuleRanges 344 }).(BlockPublicAccessConfigurationPermittedPublicSecurityGroupRuleRangeArrayOutput) 345 } 346 347 type BlockPublicAccessConfigurationArrayOutput struct{ *pulumi.OutputState } 348 349 func (BlockPublicAccessConfigurationArrayOutput) ElementType() reflect.Type { 350 return reflect.TypeOf((*[]*BlockPublicAccessConfiguration)(nil)).Elem() 351 } 352 353 func (o BlockPublicAccessConfigurationArrayOutput) ToBlockPublicAccessConfigurationArrayOutput() BlockPublicAccessConfigurationArrayOutput { 354 return o 355 } 356 357 func (o BlockPublicAccessConfigurationArrayOutput) ToBlockPublicAccessConfigurationArrayOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationArrayOutput { 358 return o 359 } 360 361 func (o BlockPublicAccessConfigurationArrayOutput) Index(i pulumi.IntInput) BlockPublicAccessConfigurationOutput { 362 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BlockPublicAccessConfiguration { 363 return vs[0].([]*BlockPublicAccessConfiguration)[vs[1].(int)] 364 }).(BlockPublicAccessConfigurationOutput) 365 } 366 367 type BlockPublicAccessConfigurationMapOutput struct{ *pulumi.OutputState } 368 369 func (BlockPublicAccessConfigurationMapOutput) ElementType() reflect.Type { 370 return reflect.TypeOf((*map[string]*BlockPublicAccessConfiguration)(nil)).Elem() 371 } 372 373 func (o BlockPublicAccessConfigurationMapOutput) ToBlockPublicAccessConfigurationMapOutput() BlockPublicAccessConfigurationMapOutput { 374 return o 375 } 376 377 func (o BlockPublicAccessConfigurationMapOutput) ToBlockPublicAccessConfigurationMapOutputWithContext(ctx context.Context) BlockPublicAccessConfigurationMapOutput { 378 return o 379 } 380 381 func (o BlockPublicAccessConfigurationMapOutput) MapIndex(k pulumi.StringInput) BlockPublicAccessConfigurationOutput { 382 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BlockPublicAccessConfiguration { 383 return vs[0].(map[string]*BlockPublicAccessConfiguration)[vs[1].(string)] 384 }).(BlockPublicAccessConfigurationOutput) 385 } 386 387 func init() { 388 pulumi.RegisterInputType(reflect.TypeOf((*BlockPublicAccessConfigurationInput)(nil)).Elem(), &BlockPublicAccessConfiguration{}) 389 pulumi.RegisterInputType(reflect.TypeOf((*BlockPublicAccessConfigurationArrayInput)(nil)).Elem(), BlockPublicAccessConfigurationArray{}) 390 pulumi.RegisterInputType(reflect.TypeOf((*BlockPublicAccessConfigurationMapInput)(nil)).Elem(), BlockPublicAccessConfigurationMap{}) 391 pulumi.RegisterOutputType(BlockPublicAccessConfigurationOutput{}) 392 pulumi.RegisterOutputType(BlockPublicAccessConfigurationArrayOutput{}) 393 pulumi.RegisterOutputType(BlockPublicAccessConfigurationMapOutput{}) 394 }