github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/emr/instanceGroup.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  // Provides an Elastic MapReduce Cluster Instance Group configuration.
    16  // See [Amazon Elastic MapReduce Documentation](https://aws.amazon.com/documentation/emr/) for more information.
    17  //
    18  // > **NOTE:** At this time, Instance Groups cannot be destroyed through the API nor
    19  // web interface. Instance Groups are destroyed when the EMR Cluster is destroyed.
    20  // this provider will resize any Instance Group to zero when destroying the resource.
    21  //
    22  // ## Example Usage
    23  //
    24  // <!--Start PulumiCodeChooser -->
    25  // ```go
    26  // package main
    27  //
    28  // import (
    29  //
    30  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    31  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    32  //
    33  // )
    34  //
    35  //	func main() {
    36  //		pulumi.Run(func(ctx *pulumi.Context) error {
    37  //			_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
    38  //				ClusterId:     pulumi.Any(tf_test_cluster.Id),
    39  //				InstanceCount: pulumi.Int(1),
    40  //				InstanceType:  pulumi.String("m5.xlarge"),
    41  //				Name:          pulumi.String("my little instance group"),
    42  //			})
    43  //			if err != nil {
    44  //				return err
    45  //			}
    46  //			return nil
    47  //		})
    48  //	}
    49  //
    50  // ```
    51  // <!--End PulumiCodeChooser -->
    52  //
    53  // ## Import
    54  //
    55  // Using `pulumi import`, import EMR task instance group using their EMR Cluster id and Instance Group id separated by a forward-slash `/`. For example:
    56  //
    57  // ```sh
    58  // $ pulumi import aws:emr/instanceGroup:InstanceGroup task_group j-123456ABCDEF/ig-15EK4O09RZLNR
    59  // ```
    60  type InstanceGroup struct {
    61  	pulumi.CustomResourceState
    62  
    63  	// The autoscaling policy document. This is a JSON formatted string. See [EMR Auto Scaling](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html)
    64  	AutoscalingPolicy pulumi.StringPtrOutput `pulumi:"autoscalingPolicy"`
    65  	// If set, the bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
    66  	BidPrice pulumi.StringPtrOutput `pulumi:"bidPrice"`
    67  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
    68  	ClusterId pulumi.StringOutput `pulumi:"clusterId"`
    69  	// A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.
    70  	//
    71  	// <!--Start PulumiCodeChooser -->
    72  	// ```go
    73  	// package main
    74  	//
    75  	// import (
    76  	// 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    77  	// 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    78  	// )
    79  	//
    80  	// func main() {
    81  	// 	pulumi.Run(func(ctx *pulumi.Context) error {
    82  	// 		_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
    83  	// 			ConfigurationsJson: pulumi.String(`[
    84  	// {
    85  	// "Classification": "hadoop-env",
    86  	// "Configurations": [
    87  	// {
    88  	// "Classification": "export",
    89  	// "Properties": {
    90  	// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
    91  	// }
    92  	// }
    93  	// ],
    94  	// "Properties": {}
    95  	// }
    96  	// ]
    97  	// `),
    98  	// 		})
    99  	// 		if err != nil {
   100  	// 			return err
   101  	// 		}
   102  	// 		return nil
   103  	// 	})
   104  	// }
   105  	// ```
   106  	// <!--End PulumiCodeChooser -->
   107  	ConfigurationsJson pulumi.StringPtrOutput `pulumi:"configurationsJson"`
   108  	// One or more `ebsConfig` blocks as defined below. Changing this forces a new resource to be created.
   109  	EbsConfigs InstanceGroupEbsConfigArrayOutput `pulumi:"ebsConfigs"`
   110  	// Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.
   111  	EbsOptimized pulumi.BoolPtrOutput `pulumi:"ebsOptimized"`
   112  	// target number of instances for the instance group. defaults to 0.
   113  	InstanceCount pulumi.IntOutput `pulumi:"instanceCount"`
   114  	// The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.
   115  	InstanceType pulumi.StringOutput `pulumi:"instanceType"`
   116  	// Human friendly name given to the instance group. Changing this forces a new resource to be created.
   117  	Name pulumi.StringOutput `pulumi:"name"`
   118  	// The number of instances currently running in this instance group.
   119  	RunningInstanceCount pulumi.IntOutput `pulumi:"runningInstanceCount"`
   120  	// The current status of the instance group.
   121  	Status pulumi.StringOutput `pulumi:"status"`
   122  }
   123  
   124  // NewInstanceGroup registers a new resource with the given unique name, arguments, and options.
   125  func NewInstanceGroup(ctx *pulumi.Context,
   126  	name string, args *InstanceGroupArgs, opts ...pulumi.ResourceOption) (*InstanceGroup, error) {
   127  	if args == nil {
   128  		return nil, errors.New("missing one or more required arguments")
   129  	}
   130  
   131  	if args.ClusterId == nil {
   132  		return nil, errors.New("invalid value for required argument 'ClusterId'")
   133  	}
   134  	if args.InstanceType == nil {
   135  		return nil, errors.New("invalid value for required argument 'InstanceType'")
   136  	}
   137  	opts = internal.PkgResourceDefaultOpts(opts)
   138  	var resource InstanceGroup
   139  	err := ctx.RegisterResource("aws:emr/instanceGroup:InstanceGroup", name, args, &resource, opts...)
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  	return &resource, nil
   144  }
   145  
   146  // GetInstanceGroup gets an existing InstanceGroup resource's state with the given name, ID, and optional
   147  // state properties that are used to uniquely qualify the lookup (nil if not required).
   148  func GetInstanceGroup(ctx *pulumi.Context,
   149  	name string, id pulumi.IDInput, state *InstanceGroupState, opts ...pulumi.ResourceOption) (*InstanceGroup, error) {
   150  	var resource InstanceGroup
   151  	err := ctx.ReadResource("aws:emr/instanceGroup:InstanceGroup", name, id, state, &resource, opts...)
   152  	if err != nil {
   153  		return nil, err
   154  	}
   155  	return &resource, nil
   156  }
   157  
   158  // Input properties used for looking up and filtering InstanceGroup resources.
   159  type instanceGroupState struct {
   160  	// The autoscaling policy document. This is a JSON formatted string. See [EMR Auto Scaling](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html)
   161  	AutoscalingPolicy *string `pulumi:"autoscalingPolicy"`
   162  	// If set, the bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
   163  	BidPrice *string `pulumi:"bidPrice"`
   164  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   165  	ClusterId *string `pulumi:"clusterId"`
   166  	// A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.
   167  	//
   168  	// <!--Start PulumiCodeChooser -->
   169  	// ```go
   170  	// package main
   171  	//
   172  	// import (
   173  	// 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
   174  	// 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   175  	// )
   176  	//
   177  	// func main() {
   178  	// 	pulumi.Run(func(ctx *pulumi.Context) error {
   179  	// 		_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
   180  	// 			ConfigurationsJson: pulumi.String(`[
   181  	// {
   182  	// "Classification": "hadoop-env",
   183  	// "Configurations": [
   184  	// {
   185  	// "Classification": "export",
   186  	// "Properties": {
   187  	// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
   188  	// }
   189  	// }
   190  	// ],
   191  	// "Properties": {}
   192  	// }
   193  	// ]
   194  	// `),
   195  	// 		})
   196  	// 		if err != nil {
   197  	// 			return err
   198  	// 		}
   199  	// 		return nil
   200  	// 	})
   201  	// }
   202  	// ```
   203  	// <!--End PulumiCodeChooser -->
   204  	ConfigurationsJson *string `pulumi:"configurationsJson"`
   205  	// One or more `ebsConfig` blocks as defined below. Changing this forces a new resource to be created.
   206  	EbsConfigs []InstanceGroupEbsConfig `pulumi:"ebsConfigs"`
   207  	// Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.
   208  	EbsOptimized *bool `pulumi:"ebsOptimized"`
   209  	// target number of instances for the instance group. defaults to 0.
   210  	InstanceCount *int `pulumi:"instanceCount"`
   211  	// The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.
   212  	InstanceType *string `pulumi:"instanceType"`
   213  	// Human friendly name given to the instance group. Changing this forces a new resource to be created.
   214  	Name *string `pulumi:"name"`
   215  	// The number of instances currently running in this instance group.
   216  	RunningInstanceCount *int `pulumi:"runningInstanceCount"`
   217  	// The current status of the instance group.
   218  	Status *string `pulumi:"status"`
   219  }
   220  
   221  type InstanceGroupState struct {
   222  	// The autoscaling policy document. This is a JSON formatted string. See [EMR Auto Scaling](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html)
   223  	AutoscalingPolicy pulumi.StringPtrInput
   224  	// If set, the bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
   225  	BidPrice pulumi.StringPtrInput
   226  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   227  	ClusterId pulumi.StringPtrInput
   228  	// A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.
   229  	//
   230  	// <!--Start PulumiCodeChooser -->
   231  	// ```go
   232  	// package main
   233  	//
   234  	// import (
   235  	// 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
   236  	// 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   237  	// )
   238  	//
   239  	// func main() {
   240  	// 	pulumi.Run(func(ctx *pulumi.Context) error {
   241  	// 		_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
   242  	// 			ConfigurationsJson: pulumi.String(`[
   243  	// {
   244  	// "Classification": "hadoop-env",
   245  	// "Configurations": [
   246  	// {
   247  	// "Classification": "export",
   248  	// "Properties": {
   249  	// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
   250  	// }
   251  	// }
   252  	// ],
   253  	// "Properties": {}
   254  	// }
   255  	// ]
   256  	// `),
   257  	// 		})
   258  	// 		if err != nil {
   259  	// 			return err
   260  	// 		}
   261  	// 		return nil
   262  	// 	})
   263  	// }
   264  	// ```
   265  	// <!--End PulumiCodeChooser -->
   266  	ConfigurationsJson pulumi.StringPtrInput
   267  	// One or more `ebsConfig` blocks as defined below. Changing this forces a new resource to be created.
   268  	EbsConfigs InstanceGroupEbsConfigArrayInput
   269  	// Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.
   270  	EbsOptimized pulumi.BoolPtrInput
   271  	// target number of instances for the instance group. defaults to 0.
   272  	InstanceCount pulumi.IntPtrInput
   273  	// The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.
   274  	InstanceType pulumi.StringPtrInput
   275  	// Human friendly name given to the instance group. Changing this forces a new resource to be created.
   276  	Name pulumi.StringPtrInput
   277  	// The number of instances currently running in this instance group.
   278  	RunningInstanceCount pulumi.IntPtrInput
   279  	// The current status of the instance group.
   280  	Status pulumi.StringPtrInput
   281  }
   282  
   283  func (InstanceGroupState) ElementType() reflect.Type {
   284  	return reflect.TypeOf((*instanceGroupState)(nil)).Elem()
   285  }
   286  
   287  type instanceGroupArgs struct {
   288  	// The autoscaling policy document. This is a JSON formatted string. See [EMR Auto Scaling](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html)
   289  	AutoscalingPolicy *string `pulumi:"autoscalingPolicy"`
   290  	// If set, the bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
   291  	BidPrice *string `pulumi:"bidPrice"`
   292  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   293  	ClusterId string `pulumi:"clusterId"`
   294  	// A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.
   295  	//
   296  	// <!--Start PulumiCodeChooser -->
   297  	// ```go
   298  	// package main
   299  	//
   300  	// import (
   301  	// 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
   302  	// 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   303  	// )
   304  	//
   305  	// func main() {
   306  	// 	pulumi.Run(func(ctx *pulumi.Context) error {
   307  	// 		_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
   308  	// 			ConfigurationsJson: pulumi.String(`[
   309  	// {
   310  	// "Classification": "hadoop-env",
   311  	// "Configurations": [
   312  	// {
   313  	// "Classification": "export",
   314  	// "Properties": {
   315  	// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
   316  	// }
   317  	// }
   318  	// ],
   319  	// "Properties": {}
   320  	// }
   321  	// ]
   322  	// `),
   323  	// 		})
   324  	// 		if err != nil {
   325  	// 			return err
   326  	// 		}
   327  	// 		return nil
   328  	// 	})
   329  	// }
   330  	// ```
   331  	// <!--End PulumiCodeChooser -->
   332  	ConfigurationsJson *string `pulumi:"configurationsJson"`
   333  	// One or more `ebsConfig` blocks as defined below. Changing this forces a new resource to be created.
   334  	EbsConfigs []InstanceGroupEbsConfig `pulumi:"ebsConfigs"`
   335  	// Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.
   336  	EbsOptimized *bool `pulumi:"ebsOptimized"`
   337  	// target number of instances for the instance group. defaults to 0.
   338  	InstanceCount *int `pulumi:"instanceCount"`
   339  	// The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.
   340  	InstanceType string `pulumi:"instanceType"`
   341  	// Human friendly name given to the instance group. Changing this forces a new resource to be created.
   342  	Name *string `pulumi:"name"`
   343  }
   344  
   345  // The set of arguments for constructing a InstanceGroup resource.
   346  type InstanceGroupArgs struct {
   347  	// The autoscaling policy document. This is a JSON formatted string. See [EMR Auto Scaling](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html)
   348  	AutoscalingPolicy pulumi.StringPtrInput
   349  	// If set, the bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
   350  	BidPrice pulumi.StringPtrInput
   351  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   352  	ClusterId pulumi.StringInput
   353  	// A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.
   354  	//
   355  	// <!--Start PulumiCodeChooser -->
   356  	// ```go
   357  	// package main
   358  	//
   359  	// import (
   360  	// 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
   361  	// 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   362  	// )
   363  	//
   364  	// func main() {
   365  	// 	pulumi.Run(func(ctx *pulumi.Context) error {
   366  	// 		_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
   367  	// 			ConfigurationsJson: pulumi.String(`[
   368  	// {
   369  	// "Classification": "hadoop-env",
   370  	// "Configurations": [
   371  	// {
   372  	// "Classification": "export",
   373  	// "Properties": {
   374  	// "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
   375  	// }
   376  	// }
   377  	// ],
   378  	// "Properties": {}
   379  	// }
   380  	// ]
   381  	// `),
   382  	// 		})
   383  	// 		if err != nil {
   384  	// 			return err
   385  	// 		}
   386  	// 		return nil
   387  	// 	})
   388  	// }
   389  	// ```
   390  	// <!--End PulumiCodeChooser -->
   391  	ConfigurationsJson pulumi.StringPtrInput
   392  	// One or more `ebsConfig` blocks as defined below. Changing this forces a new resource to be created.
   393  	EbsConfigs InstanceGroupEbsConfigArrayInput
   394  	// Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.
   395  	EbsOptimized pulumi.BoolPtrInput
   396  	// target number of instances for the instance group. defaults to 0.
   397  	InstanceCount pulumi.IntPtrInput
   398  	// The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.
   399  	InstanceType pulumi.StringInput
   400  	// Human friendly name given to the instance group. Changing this forces a new resource to be created.
   401  	Name pulumi.StringPtrInput
   402  }
   403  
   404  func (InstanceGroupArgs) ElementType() reflect.Type {
   405  	return reflect.TypeOf((*instanceGroupArgs)(nil)).Elem()
   406  }
   407  
   408  type InstanceGroupInput interface {
   409  	pulumi.Input
   410  
   411  	ToInstanceGroupOutput() InstanceGroupOutput
   412  	ToInstanceGroupOutputWithContext(ctx context.Context) InstanceGroupOutput
   413  }
   414  
   415  func (*InstanceGroup) ElementType() reflect.Type {
   416  	return reflect.TypeOf((**InstanceGroup)(nil)).Elem()
   417  }
   418  
   419  func (i *InstanceGroup) ToInstanceGroupOutput() InstanceGroupOutput {
   420  	return i.ToInstanceGroupOutputWithContext(context.Background())
   421  }
   422  
   423  func (i *InstanceGroup) ToInstanceGroupOutputWithContext(ctx context.Context) InstanceGroupOutput {
   424  	return pulumi.ToOutputWithContext(ctx, i).(InstanceGroupOutput)
   425  }
   426  
   427  // InstanceGroupArrayInput is an input type that accepts InstanceGroupArray and InstanceGroupArrayOutput values.
   428  // You can construct a concrete instance of `InstanceGroupArrayInput` via:
   429  //
   430  //	InstanceGroupArray{ InstanceGroupArgs{...} }
   431  type InstanceGroupArrayInput interface {
   432  	pulumi.Input
   433  
   434  	ToInstanceGroupArrayOutput() InstanceGroupArrayOutput
   435  	ToInstanceGroupArrayOutputWithContext(context.Context) InstanceGroupArrayOutput
   436  }
   437  
   438  type InstanceGroupArray []InstanceGroupInput
   439  
   440  func (InstanceGroupArray) ElementType() reflect.Type {
   441  	return reflect.TypeOf((*[]*InstanceGroup)(nil)).Elem()
   442  }
   443  
   444  func (i InstanceGroupArray) ToInstanceGroupArrayOutput() InstanceGroupArrayOutput {
   445  	return i.ToInstanceGroupArrayOutputWithContext(context.Background())
   446  }
   447  
   448  func (i InstanceGroupArray) ToInstanceGroupArrayOutputWithContext(ctx context.Context) InstanceGroupArrayOutput {
   449  	return pulumi.ToOutputWithContext(ctx, i).(InstanceGroupArrayOutput)
   450  }
   451  
   452  // InstanceGroupMapInput is an input type that accepts InstanceGroupMap and InstanceGroupMapOutput values.
   453  // You can construct a concrete instance of `InstanceGroupMapInput` via:
   454  //
   455  //	InstanceGroupMap{ "key": InstanceGroupArgs{...} }
   456  type InstanceGroupMapInput interface {
   457  	pulumi.Input
   458  
   459  	ToInstanceGroupMapOutput() InstanceGroupMapOutput
   460  	ToInstanceGroupMapOutputWithContext(context.Context) InstanceGroupMapOutput
   461  }
   462  
   463  type InstanceGroupMap map[string]InstanceGroupInput
   464  
   465  func (InstanceGroupMap) ElementType() reflect.Type {
   466  	return reflect.TypeOf((*map[string]*InstanceGroup)(nil)).Elem()
   467  }
   468  
   469  func (i InstanceGroupMap) ToInstanceGroupMapOutput() InstanceGroupMapOutput {
   470  	return i.ToInstanceGroupMapOutputWithContext(context.Background())
   471  }
   472  
   473  func (i InstanceGroupMap) ToInstanceGroupMapOutputWithContext(ctx context.Context) InstanceGroupMapOutput {
   474  	return pulumi.ToOutputWithContext(ctx, i).(InstanceGroupMapOutput)
   475  }
   476  
   477  type InstanceGroupOutput struct{ *pulumi.OutputState }
   478  
   479  func (InstanceGroupOutput) ElementType() reflect.Type {
   480  	return reflect.TypeOf((**InstanceGroup)(nil)).Elem()
   481  }
   482  
   483  func (o InstanceGroupOutput) ToInstanceGroupOutput() InstanceGroupOutput {
   484  	return o
   485  }
   486  
   487  func (o InstanceGroupOutput) ToInstanceGroupOutputWithContext(ctx context.Context) InstanceGroupOutput {
   488  	return o
   489  }
   490  
   491  // The autoscaling policy document. This is a JSON formatted string. See [EMR Auto Scaling](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-automatic-scaling.html)
   492  func (o InstanceGroupOutput) AutoscalingPolicy() pulumi.StringPtrOutput {
   493  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringPtrOutput { return v.AutoscalingPolicy }).(pulumi.StringPtrOutput)
   494  }
   495  
   496  // If set, the bid price for each EC2 instance in the instance group, expressed in USD. By setting this attribute, the instance group is being declared as a Spot Instance, and will implicitly create a Spot request. Leave this blank to use On-Demand Instances.
   497  func (o InstanceGroupOutput) BidPrice() pulumi.StringPtrOutput {
   498  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringPtrOutput { return v.BidPrice }).(pulumi.StringPtrOutput)
   499  }
   500  
   501  // ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   502  func (o InstanceGroupOutput) ClusterId() pulumi.StringOutput {
   503  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringOutput { return v.ClusterId }).(pulumi.StringOutput)
   504  }
   505  
   506  // A JSON string for supplying list of configurations specific to the EMR instance group. Note that this can only be changed when using EMR release 5.21 or later.
   507  //
   508  // <!--Start PulumiCodeChooser -->
   509  // ```go
   510  // package main
   511  //
   512  // import (
   513  //
   514  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
   515  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   516  //
   517  // )
   518  //
   519  //	func main() {
   520  //		pulumi.Run(func(ctx *pulumi.Context) error {
   521  //			_, err := emr.NewInstanceGroup(ctx, "task", &emr.InstanceGroupArgs{
   522  //				ConfigurationsJson: pulumi.String(`[
   523  //
   524  // {
   525  // "Classification": "hadoop-env",
   526  // "Configurations": [
   527  // {
   528  // "Classification": "export",
   529  // "Properties": {
   530  // "JAVA_HOME": "/usr/lib/jvm/java-1.8.0"
   531  // }
   532  // }
   533  // ],
   534  // "Properties": {}
   535  // }
   536  // ]
   537  // `),
   538  //
   539  //			})
   540  //			if err != nil {
   541  //				return err
   542  //			}
   543  //			return nil
   544  //		})
   545  //	}
   546  //
   547  // ```
   548  // <!--End PulumiCodeChooser -->
   549  func (o InstanceGroupOutput) ConfigurationsJson() pulumi.StringPtrOutput {
   550  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringPtrOutput { return v.ConfigurationsJson }).(pulumi.StringPtrOutput)
   551  }
   552  
   553  // One or more `ebsConfig` blocks as defined below. Changing this forces a new resource to be created.
   554  func (o InstanceGroupOutput) EbsConfigs() InstanceGroupEbsConfigArrayOutput {
   555  	return o.ApplyT(func(v *InstanceGroup) InstanceGroupEbsConfigArrayOutput { return v.EbsConfigs }).(InstanceGroupEbsConfigArrayOutput)
   556  }
   557  
   558  // Indicates whether an Amazon EBS volume is EBS-optimized. Changing this forces a new resource to be created.
   559  func (o InstanceGroupOutput) EbsOptimized() pulumi.BoolPtrOutput {
   560  	return o.ApplyT(func(v *InstanceGroup) pulumi.BoolPtrOutput { return v.EbsOptimized }).(pulumi.BoolPtrOutput)
   561  }
   562  
   563  // target number of instances for the instance group. defaults to 0.
   564  func (o InstanceGroupOutput) InstanceCount() pulumi.IntOutput {
   565  	return o.ApplyT(func(v *InstanceGroup) pulumi.IntOutput { return v.InstanceCount }).(pulumi.IntOutput)
   566  }
   567  
   568  // The EC2 instance type for all instances in the instance group. Changing this forces a new resource to be created.
   569  func (o InstanceGroupOutput) InstanceType() pulumi.StringOutput {
   570  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringOutput { return v.InstanceType }).(pulumi.StringOutput)
   571  }
   572  
   573  // Human friendly name given to the instance group. Changing this forces a new resource to be created.
   574  func (o InstanceGroupOutput) Name() pulumi.StringOutput {
   575  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   576  }
   577  
   578  // The number of instances currently running in this instance group.
   579  func (o InstanceGroupOutput) RunningInstanceCount() pulumi.IntOutput {
   580  	return o.ApplyT(func(v *InstanceGroup) pulumi.IntOutput { return v.RunningInstanceCount }).(pulumi.IntOutput)
   581  }
   582  
   583  // The current status of the instance group.
   584  func (o InstanceGroupOutput) Status() pulumi.StringOutput {
   585  	return o.ApplyT(func(v *InstanceGroup) pulumi.StringOutput { return v.Status }).(pulumi.StringOutput)
   586  }
   587  
   588  type InstanceGroupArrayOutput struct{ *pulumi.OutputState }
   589  
   590  func (InstanceGroupArrayOutput) ElementType() reflect.Type {
   591  	return reflect.TypeOf((*[]*InstanceGroup)(nil)).Elem()
   592  }
   593  
   594  func (o InstanceGroupArrayOutput) ToInstanceGroupArrayOutput() InstanceGroupArrayOutput {
   595  	return o
   596  }
   597  
   598  func (o InstanceGroupArrayOutput) ToInstanceGroupArrayOutputWithContext(ctx context.Context) InstanceGroupArrayOutput {
   599  	return o
   600  }
   601  
   602  func (o InstanceGroupArrayOutput) Index(i pulumi.IntInput) InstanceGroupOutput {
   603  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InstanceGroup {
   604  		return vs[0].([]*InstanceGroup)[vs[1].(int)]
   605  	}).(InstanceGroupOutput)
   606  }
   607  
   608  type InstanceGroupMapOutput struct{ *pulumi.OutputState }
   609  
   610  func (InstanceGroupMapOutput) ElementType() reflect.Type {
   611  	return reflect.TypeOf((*map[string]*InstanceGroup)(nil)).Elem()
   612  }
   613  
   614  func (o InstanceGroupMapOutput) ToInstanceGroupMapOutput() InstanceGroupMapOutput {
   615  	return o
   616  }
   617  
   618  func (o InstanceGroupMapOutput) ToInstanceGroupMapOutputWithContext(ctx context.Context) InstanceGroupMapOutput {
   619  	return o
   620  }
   621  
   622  func (o InstanceGroupMapOutput) MapIndex(k pulumi.StringInput) InstanceGroupOutput {
   623  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InstanceGroup {
   624  		return vs[0].(map[string]*InstanceGroup)[vs[1].(string)]
   625  	}).(InstanceGroupOutput)
   626  }
   627  
   628  func init() {
   629  	pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupInput)(nil)).Elem(), &InstanceGroup{})
   630  	pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupArrayInput)(nil)).Elem(), InstanceGroupArray{})
   631  	pulumi.RegisterInputType(reflect.TypeOf((*InstanceGroupMapInput)(nil)).Elem(), InstanceGroupMap{})
   632  	pulumi.RegisterOutputType(InstanceGroupOutput{})
   633  	pulumi.RegisterOutputType(InstanceGroupArrayOutput{})
   634  	pulumi.RegisterOutputType(InstanceGroupMapOutput{})
   635  }