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  }