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 }