github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/emr/instanceFleet.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 Fleet configuration.
    16  // See [Amazon Elastic MapReduce Documentation](https://aws.amazon.com/documentation/emr/) for more information.
    17  //
    18  // > **NOTE:** At this time, Instance Fleets cannot be destroyed through the API nor
    19  // web interface. Instance Fleets are destroyed when the EMR Cluster is destroyed.
    20  // the provider will resize any Instance Fleet 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.NewInstanceFleet(ctx, "task", &emr.InstanceFleetArgs{
    38  //				ClusterId: pulumi.Any(cluster.Id),
    39  //				InstanceTypeConfigs: emr.InstanceFleetInstanceTypeConfigArray{
    40  //					&emr.InstanceFleetInstanceTypeConfigArgs{
    41  //						BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),
    42  //						EbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{
    43  //							&emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{
    44  //								Size:               pulumi.Int(100),
    45  //								Type:               pulumi.String("gp2"),
    46  //								VolumesPerInstance: pulumi.Int(1),
    47  //							},
    48  //						},
    49  //						InstanceType:     pulumi.String("m4.xlarge"),
    50  //						WeightedCapacity: pulumi.Int(1),
    51  //					},
    52  //					&emr.InstanceFleetInstanceTypeConfigArgs{
    53  //						BidPriceAsPercentageOfOnDemandPrice: pulumi.Float64(100),
    54  //						EbsConfigs: emr.InstanceFleetInstanceTypeConfigEbsConfigArray{
    55  //							&emr.InstanceFleetInstanceTypeConfigEbsConfigArgs{
    56  //								Size:               pulumi.Int(100),
    57  //								Type:               pulumi.String("gp2"),
    58  //								VolumesPerInstance: pulumi.Int(1),
    59  //							},
    60  //						},
    61  //						InstanceType:     pulumi.String("m4.2xlarge"),
    62  //						WeightedCapacity: pulumi.Int(2),
    63  //					},
    64  //				},
    65  //				LaunchSpecifications: &emr.InstanceFleetLaunchSpecificationsArgs{
    66  //					SpotSpecifications: emr.InstanceFleetLaunchSpecificationsSpotSpecificationArray{
    67  //						&emr.InstanceFleetLaunchSpecificationsSpotSpecificationArgs{
    68  //							AllocationStrategy:     pulumi.String("capacity-optimized"),
    69  //							BlockDurationMinutes:   pulumi.Int(0),
    70  //							TimeoutAction:          pulumi.String("TERMINATE_CLUSTER"),
    71  //							TimeoutDurationMinutes: pulumi.Int(10),
    72  //						},
    73  //					},
    74  //				},
    75  //				Name:                   pulumi.String("task fleet"),
    76  //				TargetOnDemandCapacity: pulumi.Int(1),
    77  //				TargetSpotCapacity:     pulumi.Int(1),
    78  //			})
    79  //			if err != nil {
    80  //				return err
    81  //			}
    82  //			return nil
    83  //		})
    84  //	}
    85  //
    86  // ```
    87  // <!--End PulumiCodeChooser -->
    88  //
    89  // ## Import
    90  //
    91  // Using `pulumi import`, import EMR Instance Fleet using the EMR Cluster identifier and Instance Fleet identifier separated by a forward slash (`/`). For example:
    92  //
    93  // ```sh
    94  // $ pulumi import aws:emr/instanceFleet:InstanceFleet example j-123456ABCDEF/if-15EK4O09RZLNR
    95  // ```
    96  type InstanceFleet struct {
    97  	pulumi.CustomResourceState
    98  
    99  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   100  	ClusterId pulumi.StringOutput `pulumi:"clusterId"`
   101  	// Configuration block for instance fleet
   102  	InstanceTypeConfigs InstanceFleetInstanceTypeConfigArrayOutput `pulumi:"instanceTypeConfigs"`
   103  	// Configuration block for launch specification
   104  	LaunchSpecifications InstanceFleetLaunchSpecificationsPtrOutput `pulumi:"launchSpecifications"`
   105  	// Friendly name given to the instance fleet.
   106  	Name pulumi.StringOutput `pulumi:"name"`
   107  	// The number of On-Demand units that have been provisioned for the instance
   108  	// fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might be less than or greater than TargetOnDemandCapacity.
   109  	ProvisionedOnDemandCapacity pulumi.IntOutput `pulumi:"provisionedOnDemandCapacity"`
   110  	// The number of Spot units that have been provisioned for this instance fleet
   111  	// to fulfill TargetSpotCapacity. This provisioned capacity might be less than or greater than TargetSpotCapacity.
   112  	ProvisionedSpotCapacity pulumi.IntOutput `pulumi:"provisionedSpotCapacity"`
   113  	// The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
   114  	TargetOnDemandCapacity pulumi.IntPtrOutput `pulumi:"targetOnDemandCapacity"`
   115  	// The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
   116  	TargetSpotCapacity pulumi.IntPtrOutput `pulumi:"targetSpotCapacity"`
   117  }
   118  
   119  // NewInstanceFleet registers a new resource with the given unique name, arguments, and options.
   120  func NewInstanceFleet(ctx *pulumi.Context,
   121  	name string, args *InstanceFleetArgs, opts ...pulumi.ResourceOption) (*InstanceFleet, error) {
   122  	if args == nil {
   123  		return nil, errors.New("missing one or more required arguments")
   124  	}
   125  
   126  	if args.ClusterId == nil {
   127  		return nil, errors.New("invalid value for required argument 'ClusterId'")
   128  	}
   129  	opts = internal.PkgResourceDefaultOpts(opts)
   130  	var resource InstanceFleet
   131  	err := ctx.RegisterResource("aws:emr/instanceFleet:InstanceFleet", name, args, &resource, opts...)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &resource, nil
   136  }
   137  
   138  // GetInstanceFleet gets an existing InstanceFleet resource's state with the given name, ID, and optional
   139  // state properties that are used to uniquely qualify the lookup (nil if not required).
   140  func GetInstanceFleet(ctx *pulumi.Context,
   141  	name string, id pulumi.IDInput, state *InstanceFleetState, opts ...pulumi.ResourceOption) (*InstanceFleet, error) {
   142  	var resource InstanceFleet
   143  	err := ctx.ReadResource("aws:emr/instanceFleet:InstanceFleet", name, id, state, &resource, opts...)
   144  	if err != nil {
   145  		return nil, err
   146  	}
   147  	return &resource, nil
   148  }
   149  
   150  // Input properties used for looking up and filtering InstanceFleet resources.
   151  type instanceFleetState struct {
   152  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   153  	ClusterId *string `pulumi:"clusterId"`
   154  	// Configuration block for instance fleet
   155  	InstanceTypeConfigs []InstanceFleetInstanceTypeConfig `pulumi:"instanceTypeConfigs"`
   156  	// Configuration block for launch specification
   157  	LaunchSpecifications *InstanceFleetLaunchSpecifications `pulumi:"launchSpecifications"`
   158  	// Friendly name given to the instance fleet.
   159  	Name *string `pulumi:"name"`
   160  	// The number of On-Demand units that have been provisioned for the instance
   161  	// fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might be less than or greater than TargetOnDemandCapacity.
   162  	ProvisionedOnDemandCapacity *int `pulumi:"provisionedOnDemandCapacity"`
   163  	// The number of Spot units that have been provisioned for this instance fleet
   164  	// to fulfill TargetSpotCapacity. This provisioned capacity might be less than or greater than TargetSpotCapacity.
   165  	ProvisionedSpotCapacity *int `pulumi:"provisionedSpotCapacity"`
   166  	// The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
   167  	TargetOnDemandCapacity *int `pulumi:"targetOnDemandCapacity"`
   168  	// The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
   169  	TargetSpotCapacity *int `pulumi:"targetSpotCapacity"`
   170  }
   171  
   172  type InstanceFleetState struct {
   173  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   174  	ClusterId pulumi.StringPtrInput
   175  	// Configuration block for instance fleet
   176  	InstanceTypeConfigs InstanceFleetInstanceTypeConfigArrayInput
   177  	// Configuration block for launch specification
   178  	LaunchSpecifications InstanceFleetLaunchSpecificationsPtrInput
   179  	// Friendly name given to the instance fleet.
   180  	Name pulumi.StringPtrInput
   181  	// The number of On-Demand units that have been provisioned for the instance
   182  	// fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might be less than or greater than TargetOnDemandCapacity.
   183  	ProvisionedOnDemandCapacity pulumi.IntPtrInput
   184  	// The number of Spot units that have been provisioned for this instance fleet
   185  	// to fulfill TargetSpotCapacity. This provisioned capacity might be less than or greater than TargetSpotCapacity.
   186  	ProvisionedSpotCapacity pulumi.IntPtrInput
   187  	// The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
   188  	TargetOnDemandCapacity pulumi.IntPtrInput
   189  	// The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
   190  	TargetSpotCapacity pulumi.IntPtrInput
   191  }
   192  
   193  func (InstanceFleetState) ElementType() reflect.Type {
   194  	return reflect.TypeOf((*instanceFleetState)(nil)).Elem()
   195  }
   196  
   197  type instanceFleetArgs struct {
   198  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   199  	ClusterId string `pulumi:"clusterId"`
   200  	// Configuration block for instance fleet
   201  	InstanceTypeConfigs []InstanceFleetInstanceTypeConfig `pulumi:"instanceTypeConfigs"`
   202  	// Configuration block for launch specification
   203  	LaunchSpecifications *InstanceFleetLaunchSpecifications `pulumi:"launchSpecifications"`
   204  	// Friendly name given to the instance fleet.
   205  	Name *string `pulumi:"name"`
   206  	// The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
   207  	TargetOnDemandCapacity *int `pulumi:"targetOnDemandCapacity"`
   208  	// The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
   209  	TargetSpotCapacity *int `pulumi:"targetSpotCapacity"`
   210  }
   211  
   212  // The set of arguments for constructing a InstanceFleet resource.
   213  type InstanceFleetArgs struct {
   214  	// ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   215  	ClusterId pulumi.StringInput
   216  	// Configuration block for instance fleet
   217  	InstanceTypeConfigs InstanceFleetInstanceTypeConfigArrayInput
   218  	// Configuration block for launch specification
   219  	LaunchSpecifications InstanceFleetLaunchSpecificationsPtrInput
   220  	// Friendly name given to the instance fleet.
   221  	Name pulumi.StringPtrInput
   222  	// The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
   223  	TargetOnDemandCapacity pulumi.IntPtrInput
   224  	// The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
   225  	TargetSpotCapacity pulumi.IntPtrInput
   226  }
   227  
   228  func (InstanceFleetArgs) ElementType() reflect.Type {
   229  	return reflect.TypeOf((*instanceFleetArgs)(nil)).Elem()
   230  }
   231  
   232  type InstanceFleetInput interface {
   233  	pulumi.Input
   234  
   235  	ToInstanceFleetOutput() InstanceFleetOutput
   236  	ToInstanceFleetOutputWithContext(ctx context.Context) InstanceFleetOutput
   237  }
   238  
   239  func (*InstanceFleet) ElementType() reflect.Type {
   240  	return reflect.TypeOf((**InstanceFleet)(nil)).Elem()
   241  }
   242  
   243  func (i *InstanceFleet) ToInstanceFleetOutput() InstanceFleetOutput {
   244  	return i.ToInstanceFleetOutputWithContext(context.Background())
   245  }
   246  
   247  func (i *InstanceFleet) ToInstanceFleetOutputWithContext(ctx context.Context) InstanceFleetOutput {
   248  	return pulumi.ToOutputWithContext(ctx, i).(InstanceFleetOutput)
   249  }
   250  
   251  // InstanceFleetArrayInput is an input type that accepts InstanceFleetArray and InstanceFleetArrayOutput values.
   252  // You can construct a concrete instance of `InstanceFleetArrayInput` via:
   253  //
   254  //	InstanceFleetArray{ InstanceFleetArgs{...} }
   255  type InstanceFleetArrayInput interface {
   256  	pulumi.Input
   257  
   258  	ToInstanceFleetArrayOutput() InstanceFleetArrayOutput
   259  	ToInstanceFleetArrayOutputWithContext(context.Context) InstanceFleetArrayOutput
   260  }
   261  
   262  type InstanceFleetArray []InstanceFleetInput
   263  
   264  func (InstanceFleetArray) ElementType() reflect.Type {
   265  	return reflect.TypeOf((*[]*InstanceFleet)(nil)).Elem()
   266  }
   267  
   268  func (i InstanceFleetArray) ToInstanceFleetArrayOutput() InstanceFleetArrayOutput {
   269  	return i.ToInstanceFleetArrayOutputWithContext(context.Background())
   270  }
   271  
   272  func (i InstanceFleetArray) ToInstanceFleetArrayOutputWithContext(ctx context.Context) InstanceFleetArrayOutput {
   273  	return pulumi.ToOutputWithContext(ctx, i).(InstanceFleetArrayOutput)
   274  }
   275  
   276  // InstanceFleetMapInput is an input type that accepts InstanceFleetMap and InstanceFleetMapOutput values.
   277  // You can construct a concrete instance of `InstanceFleetMapInput` via:
   278  //
   279  //	InstanceFleetMap{ "key": InstanceFleetArgs{...} }
   280  type InstanceFleetMapInput interface {
   281  	pulumi.Input
   282  
   283  	ToInstanceFleetMapOutput() InstanceFleetMapOutput
   284  	ToInstanceFleetMapOutputWithContext(context.Context) InstanceFleetMapOutput
   285  }
   286  
   287  type InstanceFleetMap map[string]InstanceFleetInput
   288  
   289  func (InstanceFleetMap) ElementType() reflect.Type {
   290  	return reflect.TypeOf((*map[string]*InstanceFleet)(nil)).Elem()
   291  }
   292  
   293  func (i InstanceFleetMap) ToInstanceFleetMapOutput() InstanceFleetMapOutput {
   294  	return i.ToInstanceFleetMapOutputWithContext(context.Background())
   295  }
   296  
   297  func (i InstanceFleetMap) ToInstanceFleetMapOutputWithContext(ctx context.Context) InstanceFleetMapOutput {
   298  	return pulumi.ToOutputWithContext(ctx, i).(InstanceFleetMapOutput)
   299  }
   300  
   301  type InstanceFleetOutput struct{ *pulumi.OutputState }
   302  
   303  func (InstanceFleetOutput) ElementType() reflect.Type {
   304  	return reflect.TypeOf((**InstanceFleet)(nil)).Elem()
   305  }
   306  
   307  func (o InstanceFleetOutput) ToInstanceFleetOutput() InstanceFleetOutput {
   308  	return o
   309  }
   310  
   311  func (o InstanceFleetOutput) ToInstanceFleetOutputWithContext(ctx context.Context) InstanceFleetOutput {
   312  	return o
   313  }
   314  
   315  // ID of the EMR Cluster to attach to. Changing this forces a new resource to be created.
   316  func (o InstanceFleetOutput) ClusterId() pulumi.StringOutput {
   317  	return o.ApplyT(func(v *InstanceFleet) pulumi.StringOutput { return v.ClusterId }).(pulumi.StringOutput)
   318  }
   319  
   320  // Configuration block for instance fleet
   321  func (o InstanceFleetOutput) InstanceTypeConfigs() InstanceFleetInstanceTypeConfigArrayOutput {
   322  	return o.ApplyT(func(v *InstanceFleet) InstanceFleetInstanceTypeConfigArrayOutput { return v.InstanceTypeConfigs }).(InstanceFleetInstanceTypeConfigArrayOutput)
   323  }
   324  
   325  // Configuration block for launch specification
   326  func (o InstanceFleetOutput) LaunchSpecifications() InstanceFleetLaunchSpecificationsPtrOutput {
   327  	return o.ApplyT(func(v *InstanceFleet) InstanceFleetLaunchSpecificationsPtrOutput { return v.LaunchSpecifications }).(InstanceFleetLaunchSpecificationsPtrOutput)
   328  }
   329  
   330  // Friendly name given to the instance fleet.
   331  func (o InstanceFleetOutput) Name() pulumi.StringOutput {
   332  	return o.ApplyT(func(v *InstanceFleet) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   333  }
   334  
   335  // The number of On-Demand units that have been provisioned for the instance
   336  // fleet to fulfill TargetOnDemandCapacity. This provisioned capacity might be less than or greater than TargetOnDemandCapacity.
   337  func (o InstanceFleetOutput) ProvisionedOnDemandCapacity() pulumi.IntOutput {
   338  	return o.ApplyT(func(v *InstanceFleet) pulumi.IntOutput { return v.ProvisionedOnDemandCapacity }).(pulumi.IntOutput)
   339  }
   340  
   341  // The number of Spot units that have been provisioned for this instance fleet
   342  // to fulfill TargetSpotCapacity. This provisioned capacity might be less than or greater than TargetSpotCapacity.
   343  func (o InstanceFleetOutput) ProvisionedSpotCapacity() pulumi.IntOutput {
   344  	return o.ApplyT(func(v *InstanceFleet) pulumi.IntOutput { return v.ProvisionedSpotCapacity }).(pulumi.IntOutput)
   345  }
   346  
   347  // The target capacity of On-Demand units for the instance fleet, which determines how many On-Demand instances to provision.
   348  func (o InstanceFleetOutput) TargetOnDemandCapacity() pulumi.IntPtrOutput {
   349  	return o.ApplyT(func(v *InstanceFleet) pulumi.IntPtrOutput { return v.TargetOnDemandCapacity }).(pulumi.IntPtrOutput)
   350  }
   351  
   352  // The target capacity of Spot units for the instance fleet, which determines how many Spot instances to provision.
   353  func (o InstanceFleetOutput) TargetSpotCapacity() pulumi.IntPtrOutput {
   354  	return o.ApplyT(func(v *InstanceFleet) pulumi.IntPtrOutput { return v.TargetSpotCapacity }).(pulumi.IntPtrOutput)
   355  }
   356  
   357  type InstanceFleetArrayOutput struct{ *pulumi.OutputState }
   358  
   359  func (InstanceFleetArrayOutput) ElementType() reflect.Type {
   360  	return reflect.TypeOf((*[]*InstanceFleet)(nil)).Elem()
   361  }
   362  
   363  func (o InstanceFleetArrayOutput) ToInstanceFleetArrayOutput() InstanceFleetArrayOutput {
   364  	return o
   365  }
   366  
   367  func (o InstanceFleetArrayOutput) ToInstanceFleetArrayOutputWithContext(ctx context.Context) InstanceFleetArrayOutput {
   368  	return o
   369  }
   370  
   371  func (o InstanceFleetArrayOutput) Index(i pulumi.IntInput) InstanceFleetOutput {
   372  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *InstanceFleet {
   373  		return vs[0].([]*InstanceFleet)[vs[1].(int)]
   374  	}).(InstanceFleetOutput)
   375  }
   376  
   377  type InstanceFleetMapOutput struct{ *pulumi.OutputState }
   378  
   379  func (InstanceFleetMapOutput) ElementType() reflect.Type {
   380  	return reflect.TypeOf((*map[string]*InstanceFleet)(nil)).Elem()
   381  }
   382  
   383  func (o InstanceFleetMapOutput) ToInstanceFleetMapOutput() InstanceFleetMapOutput {
   384  	return o
   385  }
   386  
   387  func (o InstanceFleetMapOutput) ToInstanceFleetMapOutputWithContext(ctx context.Context) InstanceFleetMapOutput {
   388  	return o
   389  }
   390  
   391  func (o InstanceFleetMapOutput) MapIndex(k pulumi.StringInput) InstanceFleetOutput {
   392  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *InstanceFleet {
   393  		return vs[0].(map[string]*InstanceFleet)[vs[1].(string)]
   394  	}).(InstanceFleetOutput)
   395  }
   396  
   397  func init() {
   398  	pulumi.RegisterInputType(reflect.TypeOf((*InstanceFleetInput)(nil)).Elem(), &InstanceFleet{})
   399  	pulumi.RegisterInputType(reflect.TypeOf((*InstanceFleetArrayInput)(nil)).Elem(), InstanceFleetArray{})
   400  	pulumi.RegisterInputType(reflect.TypeOf((*InstanceFleetMapInput)(nil)).Elem(), InstanceFleetMap{})
   401  	pulumi.RegisterOutputType(InstanceFleetOutput{})
   402  	pulumi.RegisterOutputType(InstanceFleetArrayOutput{})
   403  	pulumi.RegisterOutputType(InstanceFleetMapOutput{})
   404  }