1. Packages
  2. Spotinst
  3. API Docs
  4. aws
  5. Elastigroup
Spotinst v3.80.1 published on Thursday, Jun 13, 2024 by Pulumi

spotinst.aws.Elastigroup

Explore with Pulumi AI

spotinst logo
Spotinst v3.80.1 published on Thursday, Jun 13, 2024 by Pulumi

    Provides a Spotinst AWS group resource.

    Example Usage

    import * as pulumi from "@pulumi/pulumi";
    import * as spotinst from "@pulumi/spotinst";
    
    // Create an Elastigroup
    const default_elastigroup = new spotinst.aws.Elastigroup("default-elastigroup", {
        name: "default-elastigroup",
        description: "created by Pulumi",
        product: "Linux/UNIX",
        maxSize: 0,
        minSize: 0,
        desiredCapacity: 0,
        capacityUnit: "weight",
        region: "us-west-2",
        subnetIds: [
            "sb-123456",
            "sb-456789",
        ],
        imageId: "ami-a27d8fda",
        iamInstanceProfile: "iam-profile",
        keyName: "my-key.ssh",
        securityGroups: ["sg-123456"],
        userData: "echo hello world",
        enableMonitoring: false,
        ebsOptimized: false,
        placementTenancy: "default",
        metadataOptions: {
            httpTokens: "optional",
            httpPutResponseHopLimit: 10,
            instanceMetadataTags: "enabled",
        },
        cpuOptions: {
            threadsPerCore: 1,
        },
        instanceTypesOndemand: "m3.2xlarge",
        instanceTypesSpots: [
            "m3.xlarge",
            "m3.2xlarge",
        ],
        instanceTypesPreferredSpots: ["m3.xlarge"],
        onDemandTypes: ["c3.large"],
        instanceTypesWeights: [
            {
                instanceType: "m3.xlarge",
                weight: 10,
            },
            {
                instanceType: "m3.2xlarge",
                weight: 16,
            },
        ],
        resourceRequirements: [{
            excludedInstanceFamilies: [
                "a",
                "m",
            ],
            excludedInstanceTypes: ["m3.large"],
            excludedInstanceGenerations: [
                "1",
                "2",
            ],
            requiredGpuMinimum: 1,
            requiredGpuMaximum: 16,
            requiredMemoryMinimum: 1,
            requiredMemoryMaximum: 512,
            requiredVcpuMinimum: 1,
            requiredVcpuMaximum: 64,
        }],
        orientation: "balanced",
        fallbackToOndemand: false,
        cpuCredits: "unlimited",
        minimumInstanceLifetime: 12,
        waitForCapacity: 5,
        waitForCapacityTimeout: 300,
        scalingStrategies: [{
            terminateAtEndOfBillingHour: true,
            terminationPolicy: "default",
        }],
        scalingUpPolicies: [{
            policyName: "Default Scaling Up Policy",
            metricName: "DefaultQueuesDepth",
            statistic: "average",
            unit: "none",
            adjustment: "1",
            namespace: "custom",
            threshold: 100,
            period: 60,
            evaluationPeriods: 5,
            cooldown: 300,
        }],
        scalingDownPolicies: [{
            policyName: "Default Scaling Down Policy",
            metricName: "DefaultQueuesDepth",
            statistic: "average",
            unit: "none",
            adjustment: "1",
            namespace: "custom",
            threshold: 10,
            period: 60,
            evaluationPeriods: 10,
            cooldown: 300,
        }],
        tags: [
            {
                key: "Env",
                value: "production",
            },
            {
                key: "Name",
                value: "default-production",
            },
            {
                key: "Project",
                value: "app_v2",
            },
        ],
        resourceTagSpecifications: [{
            shouldTagEnis: true,
            shouldTagVolumes: true,
            shouldTagSnapshots: true,
            shouldTagAmis: true,
        }],
        logging: {
            "export": {
                s3s: [{
                    id: "di-123456",
                }],
            },
        },
    });
    
    import pulumi
    import pulumi_spotinst as spotinst
    
    # Create an Elastigroup
    default_elastigroup = spotinst.aws.Elastigroup("default-elastigroup",
        name="default-elastigroup",
        description="created by Pulumi",
        product="Linux/UNIX",
        max_size=0,
        min_size=0,
        desired_capacity=0,
        capacity_unit="weight",
        region="us-west-2",
        subnet_ids=[
            "sb-123456",
            "sb-456789",
        ],
        image_id="ami-a27d8fda",
        iam_instance_profile="iam-profile",
        key_name="my-key.ssh",
        security_groups=["sg-123456"],
        user_data="echo hello world",
        enable_monitoring=False,
        ebs_optimized=False,
        placement_tenancy="default",
        metadata_options=spotinst.aws.ElastigroupMetadataOptionsArgs(
            http_tokens="optional",
            http_put_response_hop_limit=10,
            instance_metadata_tags="enabled",
        ),
        cpu_options=spotinst.aws.ElastigroupCpuOptionsArgs(
            threads_per_core=1,
        ),
        instance_types_ondemand="m3.2xlarge",
        instance_types_spots=[
            "m3.xlarge",
            "m3.2xlarge",
        ],
        instance_types_preferred_spots=["m3.xlarge"],
        on_demand_types=["c3.large"],
        instance_types_weights=[
            spotinst.aws.ElastigroupInstanceTypesWeightArgs(
                instance_type="m3.xlarge",
                weight=10,
            ),
            spotinst.aws.ElastigroupInstanceTypesWeightArgs(
                instance_type="m3.2xlarge",
                weight=16,
            ),
        ],
        resource_requirements=[spotinst.aws.ElastigroupResourceRequirementArgs(
            excluded_instance_families=[
                "a",
                "m",
            ],
            excluded_instance_types=["m3.large"],
            excluded_instance_generations=[
                "1",
                "2",
            ],
            required_gpu_minimum=1,
            required_gpu_maximum=16,
            required_memory_minimum=1,
            required_memory_maximum=512,
            required_vcpu_minimum=1,
            required_vcpu_maximum=64,
        )],
        orientation="balanced",
        fallback_to_ondemand=False,
        cpu_credits="unlimited",
        minimum_instance_lifetime=12,
        wait_for_capacity=5,
        wait_for_capacity_timeout=300,
        scaling_strategies=[spotinst.aws.ElastigroupScalingStrategyArgs(
            terminate_at_end_of_billing_hour=True,
            termination_policy="default",
        )],
        scaling_up_policies=[spotinst.aws.ElastigroupScalingUpPolicyArgs(
            policy_name="Default Scaling Up Policy",
            metric_name="DefaultQueuesDepth",
            statistic="average",
            unit="none",
            adjustment="1",
            namespace="custom",
            threshold=100,
            period=60,
            evaluation_periods=5,
            cooldown=300,
        )],
        scaling_down_policies=[spotinst.aws.ElastigroupScalingDownPolicyArgs(
            policy_name="Default Scaling Down Policy",
            metric_name="DefaultQueuesDepth",
            statistic="average",
            unit="none",
            adjustment="1",
            namespace="custom",
            threshold=10,
            period=60,
            evaluation_periods=10,
            cooldown=300,
        )],
        tags=[
            spotinst.aws.ElastigroupTagArgs(
                key="Env",
                value="production",
            ),
            spotinst.aws.ElastigroupTagArgs(
                key="Name",
                value="default-production",
            ),
            spotinst.aws.ElastigroupTagArgs(
                key="Project",
                value="app_v2",
            ),
        ],
        resource_tag_specifications=[spotinst.aws.ElastigroupResourceTagSpecificationArgs(
            should_tag_enis=True,
            should_tag_volumes=True,
            should_tag_snapshots=True,
            should_tag_amis=True,
        )],
        logging=spotinst.aws.ElastigroupLoggingArgs(
            export=spotinst.aws.ElastigroupLoggingExportArgs(
                s3s=[spotinst.aws.ElastigroupLoggingExportS3Args(
                    id="di-123456",
                )],
            ),
        ))
    
    package main
    
    import (
    	"github.com/pulumi/pulumi-spotinst/sdk/v3/go/spotinst/aws"
    	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    )
    
    func main() {
    	pulumi.Run(func(ctx *pulumi.Context) error {
    		// Create an Elastigroup
    		_, err := aws.NewElastigroup(ctx, "default-elastigroup", &aws.ElastigroupArgs{
    			Name:            pulumi.String("default-elastigroup"),
    			Description:     pulumi.String("created by Pulumi"),
    			Product:         pulumi.String("Linux/UNIX"),
    			MaxSize:         pulumi.Int(0),
    			MinSize:         pulumi.Int(0),
    			DesiredCapacity: pulumi.Int(0),
    			CapacityUnit:    pulumi.String("weight"),
    			Region:          pulumi.String("us-west-2"),
    			SubnetIds: pulumi.StringArray{
    				pulumi.String("sb-123456"),
    				pulumi.String("sb-456789"),
    			},
    			ImageId:            pulumi.String("ami-a27d8fda"),
    			IamInstanceProfile: pulumi.String("iam-profile"),
    			KeyName:            pulumi.String("my-key.ssh"),
    			SecurityGroups: pulumi.StringArray{
    				pulumi.String("sg-123456"),
    			},
    			UserData:         pulumi.String("echo hello world"),
    			EnableMonitoring: pulumi.Bool(false),
    			EbsOptimized:     pulumi.Bool(false),
    			PlacementTenancy: pulumi.String("default"),
    			MetadataOptions: &aws.ElastigroupMetadataOptionsArgs{
    				HttpTokens:              pulumi.String("optional"),
    				HttpPutResponseHopLimit: pulumi.Int(10),
    				InstanceMetadataTags:    pulumi.String("enabled"),
    			},
    			CpuOptions: &aws.ElastigroupCpuOptionsArgs{
    				ThreadsPerCore: pulumi.Int(1),
    			},
    			InstanceTypesOndemand: pulumi.String("m3.2xlarge"),
    			InstanceTypesSpots: pulumi.StringArray{
    				pulumi.String("m3.xlarge"),
    				pulumi.String("m3.2xlarge"),
    			},
    			InstanceTypesPreferredSpots: pulumi.StringArray{
    				pulumi.String("m3.xlarge"),
    			},
    			OnDemandTypes: pulumi.StringArray{
    				pulumi.String("c3.large"),
    			},
    			InstanceTypesWeights: aws.ElastigroupInstanceTypesWeightArray{
    				&aws.ElastigroupInstanceTypesWeightArgs{
    					InstanceType: pulumi.String("m3.xlarge"),
    					Weight:       pulumi.Int(10),
    				},
    				&aws.ElastigroupInstanceTypesWeightArgs{
    					InstanceType: pulumi.String("m3.2xlarge"),
    					Weight:       pulumi.Int(16),
    				},
    			},
    			ResourceRequirements: aws.ElastigroupResourceRequirementArray{
    				&aws.ElastigroupResourceRequirementArgs{
    					ExcludedInstanceFamilies: pulumi.StringArray{
    						pulumi.String("a"),
    						pulumi.String("m"),
    					},
    					ExcludedInstanceTypes: pulumi.StringArray{
    						pulumi.String("m3.large"),
    					},
    					ExcludedInstanceGenerations: pulumi.StringArray{
    						pulumi.String("1"),
    						pulumi.String("2"),
    					},
    					RequiredGpuMinimum:    pulumi.Int(1),
    					RequiredGpuMaximum:    pulumi.Int(16),
    					RequiredMemoryMinimum: pulumi.Int(1),
    					RequiredMemoryMaximum: pulumi.Int(512),
    					RequiredVcpuMinimum:   pulumi.Int(1),
    					RequiredVcpuMaximum:   pulumi.Int(64),
    				},
    			},
    			Orientation:             pulumi.String("balanced"),
    			FallbackToOndemand:      pulumi.Bool(false),
    			CpuCredits:              pulumi.String("unlimited"),
    			MinimumInstanceLifetime: pulumi.Int(12),
    			WaitForCapacity:         pulumi.Int(5),
    			WaitForCapacityTimeout:  pulumi.Int(300),
    			ScalingStrategies: aws.ElastigroupScalingStrategyArray{
    				&aws.ElastigroupScalingStrategyArgs{
    					TerminateAtEndOfBillingHour: pulumi.Bool(true),
    					TerminationPolicy:           pulumi.String("default"),
    				},
    			},
    			ScalingUpPolicies: aws.ElastigroupScalingUpPolicyArray{
    				&aws.ElastigroupScalingUpPolicyArgs{
    					PolicyName:        pulumi.String("Default Scaling Up Policy"),
    					MetricName:        pulumi.String("DefaultQueuesDepth"),
    					Statistic:         pulumi.String("average"),
    					Unit:              pulumi.String("none"),
    					Adjustment:        pulumi.String("1"),
    					Namespace:         pulumi.String("custom"),
    					Threshold:         pulumi.Float64(100),
    					Period:            pulumi.Int(60),
    					EvaluationPeriods: pulumi.Int(5),
    					Cooldown:          pulumi.Int(300),
    				},
    			},
    			ScalingDownPolicies: aws.ElastigroupScalingDownPolicyArray{
    				&aws.ElastigroupScalingDownPolicyArgs{
    					PolicyName:        pulumi.String("Default Scaling Down Policy"),
    					MetricName:        pulumi.String("DefaultQueuesDepth"),
    					Statistic:         pulumi.String("average"),
    					Unit:              pulumi.String("none"),
    					Adjustment:        pulumi.String("1"),
    					Namespace:         pulumi.String("custom"),
    					Threshold:         pulumi.Float64(10),
    					Period:            pulumi.Int(60),
    					EvaluationPeriods: pulumi.Int(10),
    					Cooldown:          pulumi.Int(300),
    				},
    			},
    			Tags: aws.ElastigroupTagArray{
    				&aws.ElastigroupTagArgs{
    					Key:   pulumi.String("Env"),
    					Value: pulumi.String("production"),
    				},
    				&aws.ElastigroupTagArgs{
    					Key:   pulumi.String("Name"),
    					Value: pulumi.String("default-production"),
    				},
    				&aws.ElastigroupTagArgs{
    					Key:   pulumi.String("Project"),
    					Value: pulumi.String("app_v2"),
    				},
    			},
    			ResourceTagSpecifications: aws.ElastigroupResourceTagSpecificationArray{
    				&aws.ElastigroupResourceTagSpecificationArgs{
    					ShouldTagEnis:      pulumi.Bool(true),
    					ShouldTagVolumes:   pulumi.Bool(true),
    					ShouldTagSnapshots: pulumi.Bool(true),
    					ShouldTagAmis:      pulumi.Bool(true),
    				},
    			},
    			Logging: &aws.ElastigroupLoggingArgs{
    				Export: &aws.ElastigroupLoggingExportArgs{
    					S3s: aws.ElastigroupLoggingExportS3Array{
    						&aws.ElastigroupLoggingExportS3Args{
    							Id: pulumi.String("di-123456"),
    						},
    					},
    				},
    			},
    		})
    		if err != nil {
    			return err
    		}
    		return nil
    	})
    }
    
    using System.Collections.Generic;
    using System.Linq;
    using Pulumi;
    using SpotInst = Pulumi.SpotInst;
    
    return await Deployment.RunAsync(() => 
    {
        // Create an Elastigroup
        var default_elastigroup = new SpotInst.Aws.Elastigroup("default-elastigroup", new()
        {
            Name = "default-elastigroup",
            Description = "created by Pulumi",
            Product = "Linux/UNIX",
            MaxSize = 0,
            MinSize = 0,
            DesiredCapacity = 0,
            CapacityUnit = "weight",
            Region = "us-west-2",
            SubnetIds = new[]
            {
                "sb-123456",
                "sb-456789",
            },
            ImageId = "ami-a27d8fda",
            IamInstanceProfile = "iam-profile",
            KeyName = "my-key.ssh",
            SecurityGroups = new[]
            {
                "sg-123456",
            },
            UserData = "echo hello world",
            EnableMonitoring = false,
            EbsOptimized = false,
            PlacementTenancy = "default",
            MetadataOptions = new SpotInst.Aws.Inputs.ElastigroupMetadataOptionsArgs
            {
                HttpTokens = "optional",
                HttpPutResponseHopLimit = 10,
                InstanceMetadataTags = "enabled",
            },
            CpuOptions = new SpotInst.Aws.Inputs.ElastigroupCpuOptionsArgs
            {
                ThreadsPerCore = 1,
            },
            InstanceTypesOndemand = "m3.2xlarge",
            InstanceTypesSpots = new[]
            {
                "m3.xlarge",
                "m3.2xlarge",
            },
            InstanceTypesPreferredSpots = new[]
            {
                "m3.xlarge",
            },
            OnDemandTypes = new[]
            {
                "c3.large",
            },
            InstanceTypesWeights = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeightArgs
                {
                    InstanceType = "m3.xlarge",
                    Weight = 10,
                },
                new SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeightArgs
                {
                    InstanceType = "m3.2xlarge",
                    Weight = 16,
                },
            },
            ResourceRequirements = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupResourceRequirementArgs
                {
                    ExcludedInstanceFamilies = new[]
                    {
                        "a",
                        "m",
                    },
                    ExcludedInstanceTypes = new[]
                    {
                        "m3.large",
                    },
                    ExcludedInstanceGenerations = new[]
                    {
                        "1",
                        "2",
                    },
                    RequiredGpuMinimum = 1,
                    RequiredGpuMaximum = 16,
                    RequiredMemoryMinimum = 1,
                    RequiredMemoryMaximum = 512,
                    RequiredVcpuMinimum = 1,
                    RequiredVcpuMaximum = 64,
                },
            },
            Orientation = "balanced",
            FallbackToOndemand = false,
            CpuCredits = "unlimited",
            MinimumInstanceLifetime = 12,
            WaitForCapacity = 5,
            WaitForCapacityTimeout = 300,
            ScalingStrategies = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupScalingStrategyArgs
                {
                    TerminateAtEndOfBillingHour = true,
                    TerminationPolicy = "default",
                },
            },
            ScalingUpPolicies = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupScalingUpPolicyArgs
                {
                    PolicyName = "Default Scaling Up Policy",
                    MetricName = "DefaultQueuesDepth",
                    Statistic = "average",
                    Unit = "none",
                    Adjustment = "1",
                    Namespace = "custom",
                    Threshold = 100,
                    Period = 60,
                    EvaluationPeriods = 5,
                    Cooldown = 300,
                },
            },
            ScalingDownPolicies = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupScalingDownPolicyArgs
                {
                    PolicyName = "Default Scaling Down Policy",
                    MetricName = "DefaultQueuesDepth",
                    Statistic = "average",
                    Unit = "none",
                    Adjustment = "1",
                    Namespace = "custom",
                    Threshold = 10,
                    Period = 60,
                    EvaluationPeriods = 10,
                    Cooldown = 300,
                },
            },
            Tags = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupTagArgs
                {
                    Key = "Env",
                    Value = "production",
                },
                new SpotInst.Aws.Inputs.ElastigroupTagArgs
                {
                    Key = "Name",
                    Value = "default-production",
                },
                new SpotInst.Aws.Inputs.ElastigroupTagArgs
                {
                    Key = "Project",
                    Value = "app_v2",
                },
            },
            ResourceTagSpecifications = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupResourceTagSpecificationArgs
                {
                    ShouldTagEnis = true,
                    ShouldTagVolumes = true,
                    ShouldTagSnapshots = true,
                    ShouldTagAmis = true,
                },
            },
            Logging = new SpotInst.Aws.Inputs.ElastigroupLoggingArgs
            {
                Export = new SpotInst.Aws.Inputs.ElastigroupLoggingExportArgs
                {
                    S3s = new[]
                    {
                        new SpotInst.Aws.Inputs.ElastigroupLoggingExportS3Args
                        {
                            Id = "di-123456",
                        },
                    },
                },
            },
        });
    
    });
    
    package generated_program;
    
    import com.pulumi.Context;
    import com.pulumi.Pulumi;
    import com.pulumi.core.Output;
    import com.pulumi.spotinst.aws.Elastigroup;
    import com.pulumi.spotinst.aws.ElastigroupArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupMetadataOptionsArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupCpuOptionsArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupInstanceTypesWeightArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupResourceRequirementArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupScalingStrategyArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupScalingUpPolicyArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupScalingDownPolicyArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupTagArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupResourceTagSpecificationArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupLoggingArgs;
    import com.pulumi.spotinst.aws.inputs.ElastigroupLoggingExportArgs;
    import java.util.List;
    import java.util.ArrayList;
    import java.util.Map;
    import java.io.File;
    import java.nio.file.Files;
    import java.nio.file.Paths;
    
    public class App {
        public static void main(String[] args) {
            Pulumi.run(App::stack);
        }
    
        public static void stack(Context ctx) {
            // Create an Elastigroup
            var default_elastigroup = new Elastigroup("default-elastigroup", ElastigroupArgs.builder()
                .name("default-elastigroup")
                .description("created by Pulumi")
                .product("Linux/UNIX")
                .maxSize(0)
                .minSize(0)
                .desiredCapacity(0)
                .capacityUnit("weight")
                .region("us-west-2")
                .subnetIds(            
                    "sb-123456",
                    "sb-456789")
                .imageId("ami-a27d8fda")
                .iamInstanceProfile("iam-profile")
                .keyName("my-key.ssh")
                .securityGroups("sg-123456")
                .userData("echo hello world")
                .enableMonitoring(false)
                .ebsOptimized(false)
                .placementTenancy("default")
                .metadataOptions(ElastigroupMetadataOptionsArgs.builder()
                    .httpTokens("optional")
                    .httpPutResponseHopLimit(10)
                    .instanceMetadataTags("enabled")
                    .build())
                .cpuOptions(ElastigroupCpuOptionsArgs.builder()
                    .threadsPerCore(1)
                    .build())
                .instanceTypesOndemand("m3.2xlarge")
                .instanceTypesSpots(            
                    "m3.xlarge",
                    "m3.2xlarge")
                .instanceTypesPreferredSpots("m3.xlarge")
                .onDemandTypes("c3.large")
                .instanceTypesWeights(            
                    ElastigroupInstanceTypesWeightArgs.builder()
                        .instanceType("m3.xlarge")
                        .weight(10)
                        .build(),
                    ElastigroupInstanceTypesWeightArgs.builder()
                        .instanceType("m3.2xlarge")
                        .weight(16)
                        .build())
                .resourceRequirements(ElastigroupResourceRequirementArgs.builder()
                    .excludedInstanceFamilies(                
                        "a",
                        "m")
                    .excludedInstanceTypes("m3.large")
                    .excludedInstanceGenerations(                
                        "1",
                        "2")
                    .requiredGpuMinimum(1)
                    .requiredGpuMaximum(16)
                    .requiredMemoryMinimum(1)
                    .requiredMemoryMaximum(512)
                    .requiredVcpuMinimum(1)
                    .requiredVcpuMaximum(64)
                    .build())
                .orientation("balanced")
                .fallbackToOndemand(false)
                .cpuCredits("unlimited")
                .minimumInstanceLifetime(12)
                .waitForCapacity(5)
                .waitForCapacityTimeout(300)
                .scalingStrategies(ElastigroupScalingStrategyArgs.builder()
                    .terminateAtEndOfBillingHour(true)
                    .terminationPolicy("default")
                    .build())
                .scalingUpPolicies(ElastigroupScalingUpPolicyArgs.builder()
                    .policyName("Default Scaling Up Policy")
                    .metricName("DefaultQueuesDepth")
                    .statistic("average")
                    .unit("none")
                    .adjustment(1)
                    .namespace("custom")
                    .threshold(100)
                    .period(60)
                    .evaluationPeriods(5)
                    .cooldown(300)
                    .build())
                .scalingDownPolicies(ElastigroupScalingDownPolicyArgs.builder()
                    .policyName("Default Scaling Down Policy")
                    .metricName("DefaultQueuesDepth")
                    .statistic("average")
                    .unit("none")
                    .adjustment(1)
                    .namespace("custom")
                    .threshold(10)
                    .period(60)
                    .evaluationPeriods(10)
                    .cooldown(300)
                    .build())
                .tags(            
                    ElastigroupTagArgs.builder()
                        .key("Env")
                        .value("production")
                        .build(),
                    ElastigroupTagArgs.builder()
                        .key("Name")
                        .value("default-production")
                        .build(),
                    ElastigroupTagArgs.builder()
                        .key("Project")
                        .value("app_v2")
                        .build())
                .resourceTagSpecifications(ElastigroupResourceTagSpecificationArgs.builder()
                    .shouldTagEnis(true)
                    .shouldTagVolumes(true)
                    .shouldTagSnapshots(true)
                    .shouldTagAmis(true)
                    .build())
                .logging(ElastigroupLoggingArgs.builder()
                    .export(ElastigroupLoggingExportArgs.builder()
                        .s3s(ElastigroupLoggingExportS3Args.builder()
                            .id("di-123456")
                            .build())
                        .build())
                    .build())
                .build());
    
        }
    }
    
    resources:
      # Create an Elastigroup
      default-elastigroup:
        type: spotinst:aws:Elastigroup
        properties:
          name: default-elastigroup
          description: created by Pulumi
          product: Linux/UNIX
          maxSize: 0
          minSize: 0
          desiredCapacity: 0
          capacityUnit: weight
          region: us-west-2
          subnetIds:
            - sb-123456
            - sb-456789
          imageId: ami-a27d8fda
          iamInstanceProfile: iam-profile
          keyName: my-key.ssh
          securityGroups:
            - sg-123456
          userData: echo hello world
          enableMonitoring: false
          ebsOptimized: false
          placementTenancy: default
          metadataOptions:
            httpTokens: optional
            httpPutResponseHopLimit: 10
            instanceMetadataTags: enabled
          cpuOptions:
            threadsPerCore: 1
          instanceTypesOndemand: m3.2xlarge
          instanceTypesSpots:
            - m3.xlarge
            - m3.2xlarge
          instanceTypesPreferredSpots:
            - m3.xlarge
          onDemandTypes:
            - c3.large
          instanceTypesWeights:
            - instanceType: m3.xlarge
              weight: 10
            - instanceType: m3.2xlarge
              weight: 16
          resourceRequirements:
            - excludedInstanceFamilies:
                - a
                - m
              excludedInstanceTypes:
                - m3.large
              excludedInstanceGenerations:
                - '1'
                - '2'
              requiredGpuMinimum: 1
              requiredGpuMaximum: 16
              requiredMemoryMinimum: 1
              requiredMemoryMaximum: 512
              requiredVcpuMinimum: 1
              requiredVcpuMaximum: 64
          orientation: balanced
          fallbackToOndemand: false
          cpuCredits: unlimited
          minimumInstanceLifetime: 12
          waitForCapacity: 5
          waitForCapacityTimeout: 300
          scalingStrategies:
            - terminateAtEndOfBillingHour: true
              terminationPolicy: default
          scalingUpPolicies:
            - policyName: Default Scaling Up Policy
              metricName: DefaultQueuesDepth
              statistic: average
              unit: none
              adjustment: 1
              namespace: custom
              threshold: 100
              period: 60
              evaluationPeriods: 5
              cooldown: 300
          scalingDownPolicies:
            - policyName: Default Scaling Down Policy
              metricName: DefaultQueuesDepth
              statistic: average
              unit: none
              adjustment: 1
              namespace: custom
              threshold: 10
              period: 60
              evaluationPeriods: 10
              cooldown: 300
          tags:
            - key: Env
              value: production
            - key: Name
              value: default-production
            - key: Project
              value: app_v2
          resourceTagSpecifications:
            - shouldTagEnis: true
              shouldTagVolumes: true
              shouldTagSnapshots: true
              shouldTagAmis: true
          logging:
            export:
              s3s:
                - id: di-123456
    

    Create Elastigroup Resource

    Resources are created with functions called constructors. To learn more about declaring and configuring resources, see Resources.

    Constructor syntax

    new Elastigroup(name: string, args: ElastigroupArgs, opts?: CustomResourceOptions);
    @overload
    def Elastigroup(resource_name: str,
                    args: ElastigroupArgs,
                    opts: Optional[ResourceOptions] = None)
    
    @overload
    def Elastigroup(resource_name: str,
                    opts: Optional[ResourceOptions] = None,
                    fallback_to_ondemand: Optional[bool] = None,
                    orientation: Optional[str] = None,
                    product: Optional[str] = None,
                    security_groups: Optional[Sequence[str]] = None,
                    availability_zones: Optional[Sequence[str]] = None,
                    block_devices_mode: Optional[str] = None,
                    capacity_unit: Optional[str] = None,
                    consider_od_pricing: Optional[bool] = None,
                    cpu_credits: Optional[str] = None,
                    cpu_options: Optional[ElastigroupCpuOptionsArgs] = None,
                    description: Optional[str] = None,
                    desired_capacity: Optional[int] = None,
                    draining_timeout: Optional[int] = None,
                    ebs_block_devices: Optional[Sequence[ElastigroupEbsBlockDeviceArgs]] = None,
                    ebs_optimized: Optional[bool] = None,
                    elastic_ips: Optional[Sequence[str]] = None,
                    elastic_load_balancers: Optional[Sequence[str]] = None,
                    enable_monitoring: Optional[bool] = None,
                    ephemeral_block_devices: Optional[Sequence[ElastigroupEphemeralBlockDeviceArgs]] = None,
                    health_check_grace_period: Optional[int] = None,
                    health_check_type: Optional[str] = None,
                    health_check_unhealthy_duration_before_replacement: Optional[int] = None,
                    iam_instance_profile: Optional[str] = None,
                    image_id: Optional[str] = None,
                    images: Optional[Sequence[ElastigroupImageArgs]] = None,
                    immediate_od_recover_threshold: Optional[int] = None,
                    instance_types_ondemand: Optional[str] = None,
                    instance_types_preferred_spots: Optional[Sequence[str]] = None,
                    instance_types_spots: Optional[Sequence[str]] = None,
                    instance_types_weights: Optional[Sequence[ElastigroupInstanceTypesWeightArgs]] = None,
                    integration_beanstalk: Optional[ElastigroupIntegrationBeanstalkArgs] = None,
                    integration_codedeploy: Optional[ElastigroupIntegrationCodedeployArgs] = None,
                    integration_docker_swarm: Optional[ElastigroupIntegrationDockerSwarmArgs] = None,
                    integration_ecs: Optional[ElastigroupIntegrationEcsArgs] = None,
                    integration_gitlab: Optional[ElastigroupIntegrationGitlabArgs] = None,
                    integration_kubernetes: Optional[ElastigroupIntegrationKubernetesArgs] = None,
                    integration_mesosphere: Optional[ElastigroupIntegrationMesosphereArgs] = None,
                    integration_nomad: Optional[ElastigroupIntegrationNomadArgs] = None,
                    integration_rancher: Optional[ElastigroupIntegrationRancherArgs] = None,
                    integration_route53: Optional[ElastigroupIntegrationRoute53Args] = None,
                    itfs: Optional[Sequence[ElastigroupItfArgs]] = None,
                    key_name: Optional[str] = None,
                    lifetime_period: Optional[str] = None,
                    logging: Optional[ElastigroupLoggingArgs] = None,
                    max_size: Optional[int] = None,
                    metadata_options: Optional[ElastigroupMetadataOptionsArgs] = None,
                    min_size: Optional[int] = None,
                    minimum_instance_lifetime: Optional[int] = None,
                    multiple_metrics: Optional[ElastigroupMultipleMetricsArgs] = None,
                    name: Optional[str] = None,
                    network_interfaces: Optional[Sequence[ElastigroupNetworkInterfaceArgs]] = None,
                    on_demand_types: Optional[Sequence[str]] = None,
                    ondemand_count: Optional[int] = None,
                    persist_block_devices: Optional[bool] = None,
                    persist_private_ip: Optional[bool] = None,
                    persist_root_device: Optional[bool] = None,
                    placement_tenancy: Optional[str] = None,
                    preferred_availability_zones: Optional[Sequence[str]] = None,
                    private_ips: Optional[Sequence[str]] = None,
                    region: Optional[str] = None,
                    resource_requirements: Optional[Sequence[ElastigroupResourceRequirementArgs]] = None,
                    resource_tag_specifications: Optional[Sequence[ElastigroupResourceTagSpecificationArgs]] = None,
                    revert_to_spot: Optional[ElastigroupRevertToSpotArgs] = None,
                    scaling_down_policies: Optional[Sequence[ElastigroupScalingDownPolicyArgs]] = None,
                    scaling_strategies: Optional[Sequence[ElastigroupScalingStrategyArgs]] = None,
                    scaling_target_policies: Optional[Sequence[ElastigroupScalingTargetPolicyArgs]] = None,
                    scaling_up_policies: Optional[Sequence[ElastigroupScalingUpPolicyArgs]] = None,
                    scheduled_tasks: Optional[Sequence[ElastigroupScheduledTaskArgs]] = None,
                    shutdown_script: Optional[str] = None,
                    signals: Optional[Sequence[ElastigroupSignalArgs]] = None,
                    spot_percentage: Optional[int] = None,
                    stateful_deallocation: Optional[ElastigroupStatefulDeallocationArgs] = None,
                    stateful_instance_actions: Optional[Sequence[ElastigroupStatefulInstanceActionArgs]] = None,
                    subnet_ids: Optional[Sequence[str]] = None,
                    tags: Optional[Sequence[ElastigroupTagArgs]] = None,
                    target_group_arns: Optional[Sequence[str]] = None,
                    update_policy: Optional[ElastigroupUpdatePolicyArgs] = None,
                    user_data: Optional[str] = None,
                    utilize_commitments: Optional[bool] = None,
                    utilize_reserved_instances: Optional[bool] = None,
                    wait_for_capacity: Optional[int] = None,
                    wait_for_capacity_timeout: Optional[int] = None)
    func NewElastigroup(ctx *Context, name string, args ElastigroupArgs, opts ...ResourceOption) (*Elastigroup, error)
    public Elastigroup(string name, ElastigroupArgs args, CustomResourceOptions? opts = null)
    public Elastigroup(String name, ElastigroupArgs args)
    public Elastigroup(String name, ElastigroupArgs args, CustomResourceOptions options)
    
    type: spotinst:aws:Elastigroup
    properties: # The arguments to resource properties.
    options: # Bag of options to control resource's behavior.
    
    

    Parameters

    name string
    The unique name of the resource.
    args ElastigroupArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    resource_name str
    The unique name of the resource.
    args ElastigroupArgs
    The arguments to resource properties.
    opts ResourceOptions
    Bag of options to control resource's behavior.
    ctx Context
    Context object for the current deployment.
    name string
    The unique name of the resource.
    args ElastigroupArgs
    The arguments to resource properties.
    opts ResourceOption
    Bag of options to control resource's behavior.
    name string
    The unique name of the resource.
    args ElastigroupArgs
    The arguments to resource properties.
    opts CustomResourceOptions
    Bag of options to control resource's behavior.
    name String
    The unique name of the resource.
    args ElastigroupArgs
    The arguments to resource properties.
    options CustomResourceOptions
    Bag of options to control resource's behavior.

    Example

    The following reference example uses placeholder values for all input properties.

    var elastigroupResource = new SpotInst.Aws.Elastigroup("elastigroupResource", new()
    {
        FallbackToOndemand = false,
        Orientation = "string",
        Product = "string",
        SecurityGroups = new[]
        {
            "string",
        },
        AvailabilityZones = new[]
        {
            "string",
        },
        BlockDevicesMode = "string",
        CapacityUnit = "string",
        ConsiderOdPricing = false,
        CpuCredits = "string",
        CpuOptions = new SpotInst.Aws.Inputs.ElastigroupCpuOptionsArgs
        {
            ThreadsPerCore = 0,
        },
        Description = "string",
        DesiredCapacity = 0,
        DrainingTimeout = 0,
        EbsBlockDevices = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupEbsBlockDeviceArgs
            {
                DeviceName = "string",
                DeleteOnTermination = false,
                Encrypted = false,
                Iops = 0,
                KmsKeyId = "string",
                SnapshotId = "string",
                Throughput = 0,
                VolumeSize = 0,
                VolumeType = "string",
            },
        },
        EbsOptimized = false,
        ElasticIps = new[]
        {
            "string",
        },
        ElasticLoadBalancers = new[]
        {
            "string",
        },
        EnableMonitoring = false,
        EphemeralBlockDevices = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupEphemeralBlockDeviceArgs
            {
                DeviceName = "string",
                VirtualName = "string",
            },
        },
        HealthCheckGracePeriod = 0,
        HealthCheckType = "string",
        HealthCheckUnhealthyDurationBeforeReplacement = 0,
        IamInstanceProfile = "string",
        ImageId = "string",
        Images = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupImageArgs
            {
                Images = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupImageImageArgs
                    {
                        Id = "string",
                    },
                },
            },
        },
        ImmediateOdRecoverThreshold = 0,
        InstanceTypesOndemand = "string",
        InstanceTypesPreferredSpots = new[]
        {
            "string",
        },
        InstanceTypesSpots = new[]
        {
            "string",
        },
        InstanceTypesWeights = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeightArgs
            {
                InstanceType = "string",
                Weight = 0,
            },
        },
        IntegrationBeanstalk = new SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalkArgs
        {
            DeploymentPreferences = new SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalkDeploymentPreferencesArgs
            {
                AutomaticRoll = false,
                BatchSizePercentage = 0,
                GracePeriod = 0,
                Strategy = new SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategyArgs
                {
                    Action = "string",
                    ShouldDrainInstances = false,
                },
            },
            EnvironmentId = "string",
            ManagedActions = new SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalkManagedActionsArgs
            {
                PlatformUpdate = new SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdateArgs
                {
                    PerformAt = "string",
                    TimeWindow = "string",
                    UpdateLevel = "string",
                },
            },
        },
        IntegrationCodedeploy = new SpotInst.Aws.Inputs.ElastigroupIntegrationCodedeployArgs
        {
            CleanupOnFailure = false,
            DeploymentGroups = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupIntegrationCodedeployDeploymentGroupArgs
                {
                    ApplicationName = "string",
                    DeploymentGroupName = "string",
                },
            },
            TerminateInstanceOnFailure = false,
        },
        IntegrationDockerSwarm = new SpotInst.Aws.Inputs.ElastigroupIntegrationDockerSwarmArgs
        {
            MasterHost = "string",
            MasterPort = 0,
            AutoscaleCooldown = 0,
            AutoscaleDown = new SpotInst.Aws.Inputs.ElastigroupIntegrationDockerSwarmAutoscaleDownArgs
            {
                EvaluationPeriods = 0,
                MaxScaleDownPercentage = 0,
            },
            AutoscaleHeadroom = new SpotInst.Aws.Inputs.ElastigroupIntegrationDockerSwarmAutoscaleHeadroomArgs
            {
                CpuPerUnit = 0,
                MemoryPerUnit = 0,
                NumOfUnits = 0,
            },
            AutoscaleIsEnabled = false,
        },
        IntegrationEcs = new SpotInst.Aws.Inputs.ElastigroupIntegrationEcsArgs
        {
            ClusterName = "string",
            AutoscaleAttributes = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupIntegrationEcsAutoscaleAttributeArgs
                {
                    Key = "string",
                    Value = "string",
                },
            },
            AutoscaleCooldown = 0,
            AutoscaleDown = new SpotInst.Aws.Inputs.ElastigroupIntegrationEcsAutoscaleDownArgs
            {
                EvaluationPeriods = 0,
                MaxScaleDownPercentage = 0,
            },
            AutoscaleHeadroom = new SpotInst.Aws.Inputs.ElastigroupIntegrationEcsAutoscaleHeadroomArgs
            {
                CpuPerUnit = 0,
                MemoryPerUnit = 0,
                NumOfUnits = 0,
            },
            AutoscaleIsAutoConfig = false,
            AutoscaleIsEnabled = false,
            AutoscaleScaleDownNonServiceTasks = false,
            Batch = new SpotInst.Aws.Inputs.ElastigroupIntegrationEcsBatchArgs
            {
                JobQueueNames = new[]
                {
                    "string",
                },
            },
        },
        IntegrationGitlab = new SpotInst.Aws.Inputs.ElastigroupIntegrationGitlabArgs
        {
            Runner = new SpotInst.Aws.Inputs.ElastigroupIntegrationGitlabRunnerArgs
            {
                IsEnabled = false,
            },
        },
        IntegrationKubernetes = new SpotInst.Aws.Inputs.ElastigroupIntegrationKubernetesArgs
        {
            ApiServer = "string",
            AutoscaleCooldown = 0,
            AutoscaleDown = new SpotInst.Aws.Inputs.ElastigroupIntegrationKubernetesAutoscaleDownArgs
            {
                EvaluationPeriods = 0,
                MaxScaleDownPercentage = 0,
            },
            AutoscaleHeadroom = new SpotInst.Aws.Inputs.ElastigroupIntegrationKubernetesAutoscaleHeadroomArgs
            {
                CpuPerUnit = 0,
                MemoryPerUnit = 0,
                NumOfUnits = 0,
            },
            AutoscaleIsAutoConfig = false,
            AutoscaleIsEnabled = false,
            AutoscaleLabels = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupIntegrationKubernetesAutoscaleLabelArgs
                {
                    Key = "string",
                    Value = "string",
                },
            },
            ClusterIdentifier = "string",
            IntegrationMode = "string",
            Token = "string",
        },
        IntegrationMesosphere = new SpotInst.Aws.Inputs.ElastigroupIntegrationMesosphereArgs
        {
            ApiServer = "string",
        },
        IntegrationNomad = new SpotInst.Aws.Inputs.ElastigroupIntegrationNomadArgs
        {
            MasterHost = "string",
            MasterPort = 0,
            AclToken = "string",
            AutoscaleConstraints = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupIntegrationNomadAutoscaleConstraintArgs
                {
                    Key = "string",
                    Value = "string",
                },
            },
            AutoscaleCooldown = 0,
            AutoscaleDown = new SpotInst.Aws.Inputs.ElastigroupIntegrationNomadAutoscaleDownArgs
            {
                EvaluationPeriods = 0,
            },
            AutoscaleHeadroom = new SpotInst.Aws.Inputs.ElastigroupIntegrationNomadAutoscaleHeadroomArgs
            {
                CpuPerUnit = 0,
                MemoryPerUnit = 0,
                NumOfUnits = 0,
            },
            AutoscaleIsEnabled = false,
        },
        IntegrationRancher = new SpotInst.Aws.Inputs.ElastigroupIntegrationRancherArgs
        {
            AccessKey = "string",
            MasterHost = "string",
            SecretKey = "string",
            Version = "string",
        },
        IntegrationRoute53 = new SpotInst.Aws.Inputs.ElastigroupIntegrationRoute53Args
        {
            Domains = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupIntegrationRoute53DomainArgs
                {
                    HostedZoneId = "string",
                    RecordSets = new[]
                    {
                        new SpotInst.Aws.Inputs.ElastigroupIntegrationRoute53DomainRecordSetArgs
                        {
                            Name = "string",
                            UsePublicDns = false,
                            UsePublicIp = false,
                        },
                    },
                    RecordSetType = "string",
                    SpotinstAcctId = "string",
                },
            },
        },
        Itfs = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupItfArgs
            {
                FixedTargetGroups = false,
                LoadBalancers = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupItfLoadBalancerArgs
                    {
                        ListenerRules = new[]
                        {
                            new SpotInst.Aws.Inputs.ElastigroupItfLoadBalancerListenerRuleArgs
                            {
                                RuleArn = "string",
                                StaticTargetGroup = new SpotInst.Aws.Inputs.ElastigroupItfLoadBalancerListenerRuleStaticTargetGroupArgs
                                {
                                    Arn = "string",
                                    Percentage = 0,
                                },
                            },
                        },
                        LoadBalancerArn = "string",
                    },
                },
                TargetGroupConfigs = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupItfTargetGroupConfigArgs
                    {
                        Port = 0,
                        HealthCheckPath = "string",
                        VpcId = "string",
                        Protocol = "string",
                        Matchers = new[]
                        {
                            new SpotInst.Aws.Inputs.ElastigroupItfTargetGroupConfigMatcherArgs
                            {
                                GrpcCode = "string",
                                HttpCode = "string",
                            },
                        },
                        HealthyThresholdCount = 0,
                        HealthCheckIntervalSeconds = 0,
                        HealthCheckTimeoutSeconds = 0,
                        HealthCheckProtocol = "string",
                        ProtocolVersion = "string",
                        Tags = new[]
                        {
                            new SpotInst.Aws.Inputs.ElastigroupItfTargetGroupConfigTagArgs
                            {
                                TagKey = "string",
                                TagValue = "string",
                            },
                        },
                        UnhealthyThresholdCount = 0,
                        HealthCheckPort = "string",
                    },
                },
                WeightStrategy = "string",
                DefaultStaticTargetGroup = new SpotInst.Aws.Inputs.ElastigroupItfDefaultStaticTargetGroupArgs
                {
                    Arn = "string",
                    Percentage = 0,
                },
                MigrationHealthinessThreshold = 0,
            },
        },
        KeyName = "string",
        LifetimePeriod = "string",
        Logging = new SpotInst.Aws.Inputs.ElastigroupLoggingArgs
        {
            Export = new SpotInst.Aws.Inputs.ElastigroupLoggingExportArgs
            {
                S3s = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupLoggingExportS3Args
                    {
                        Id = "string",
                    },
                },
            },
        },
        MaxSize = 0,
        MetadataOptions = new SpotInst.Aws.Inputs.ElastigroupMetadataOptionsArgs
        {
            HttpTokens = "string",
            HttpPutResponseHopLimit = 0,
            InstanceMetadataTags = "string",
        },
        MinSize = 0,
        MinimumInstanceLifetime = 0,
        MultipleMetrics = new SpotInst.Aws.Inputs.ElastigroupMultipleMetricsArgs
        {
            Expressions = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupMultipleMetricsExpressionArgs
                {
                    Expression = "string",
                    Name = "string",
                },
            },
            Metrics = new[]
            {
                new SpotInst.Aws.Inputs.ElastigroupMultipleMetricsMetricArgs
                {
                    MetricName = "string",
                    Name = "string",
                    Namespace = "string",
                    Dimensions = new[]
                    {
                        new SpotInst.Aws.Inputs.ElastigroupMultipleMetricsMetricDimensionArgs
                        {
                            Name = "string",
                            Value = "string",
                        },
                    },
                    ExtendedStatistic = "string",
                    Statistic = "string",
                    Unit = "string",
                },
            },
        },
        Name = "string",
        NetworkInterfaces = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupNetworkInterfaceArgs
            {
                DeviceIndex = "string",
                AssociateIpv6Address = false,
                AssociatePublicIpAddress = false,
                DeleteOnTermination = false,
                Description = "string",
                NetworkInterfaceId = "string",
                PrivateIpAddress = "string",
                SecondaryPrivateIpAddressCount = "string",
            },
        },
        OnDemandTypes = new[]
        {
            "string",
        },
        OndemandCount = 0,
        PersistBlockDevices = false,
        PersistPrivateIp = false,
        PersistRootDevice = false,
        PlacementTenancy = "string",
        PreferredAvailabilityZones = new[]
        {
            "string",
        },
        PrivateIps = new[]
        {
            "string",
        },
        Region = "string",
        ResourceRequirements = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupResourceRequirementArgs
            {
                RequiredMemoryMaximum = 0,
                RequiredMemoryMinimum = 0,
                RequiredVcpuMaximum = 0,
                RequiredVcpuMinimum = 0,
                ExcludedInstanceFamilies = new[]
                {
                    "string",
                },
                ExcludedInstanceGenerations = new[]
                {
                    "string",
                },
                ExcludedInstanceTypes = new[]
                {
                    "string",
                },
                RequiredGpuMaximum = 0,
                RequiredGpuMinimum = 0,
            },
        },
        ResourceTagSpecifications = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupResourceTagSpecificationArgs
            {
                ShouldTagAmis = false,
                ShouldTagEnis = false,
                ShouldTagSnapshots = false,
                ShouldTagVolumes = false,
            },
        },
        RevertToSpot = new SpotInst.Aws.Inputs.ElastigroupRevertToSpotArgs
        {
            PerformAt = "string",
            TimeWindows = new[]
            {
                "string",
            },
        },
        ScalingDownPolicies = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupScalingDownPolicyArgs
            {
                MetricName = "string",
                PolicyName = "string",
                Namespace = "string",
                Minimum = "string",
                Operator = "string",
                IsEnabled = false,
                MaxTargetCapacity = "string",
                Maximum = "string",
                Dimensions = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupScalingDownPolicyDimensionArgs
                    {
                        Name = "string",
                        Value = "string",
                    },
                },
                MinTargetCapacity = "string",
                ActionType = "string",
                Cooldown = 0,
                EvaluationPeriods = 0,
                Period = 0,
                Adjustment = "string",
                Source = "string",
                Statistic = "string",
                StepAdjustments = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupScalingDownPolicyStepAdjustmentArgs
                    {
                        Action = new SpotInst.Aws.Inputs.ElastigroupScalingDownPolicyStepAdjustmentActionArgs
                        {
                            Type = "string",
                            Adjustment = "string",
                            MaxTargetCapacity = "string",
                            Maximum = "string",
                            MinTargetCapacity = "string",
                            Minimum = "string",
                            Target = "string",
                        },
                        Threshold = 0,
                    },
                },
                Target = "string",
                Threshold = 0,
                Unit = "string",
            },
        },
        ScalingStrategies = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupScalingStrategyArgs
            {
                TerminateAtEndOfBillingHour = false,
                TerminationPolicy = "string",
            },
        },
        ScalingTargetPolicies = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupScalingTargetPolicyArgs
            {
                MetricName = "string",
                Target = 0,
                PolicyName = "string",
                Namespace = "string",
                Period = 0,
                MaxCapacityPerScale = "string",
                Cooldown = 0,
                EvaluationPeriods = 0,
                PredictiveMode = "string",
                Source = "string",
                Statistic = "string",
                Dimensions = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupScalingTargetPolicyDimensionArgs
                    {
                        Name = "string",
                        Value = "string",
                    },
                },
                Unit = "string",
            },
        },
        ScalingUpPolicies = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupScalingUpPolicyArgs
            {
                MetricName = "string",
                PolicyName = "string",
                Namespace = "string",
                Minimum = "string",
                Operator = "string",
                IsEnabled = false,
                MaxTargetCapacity = "string",
                Maximum = "string",
                Dimensions = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupScalingUpPolicyDimensionArgs
                    {
                        Name = "string",
                        Value = "string",
                    },
                },
                MinTargetCapacity = "string",
                ActionType = "string",
                Cooldown = 0,
                EvaluationPeriods = 0,
                Period = 0,
                Adjustment = "string",
                Source = "string",
                Statistic = "string",
                StepAdjustments = new[]
                {
                    new SpotInst.Aws.Inputs.ElastigroupScalingUpPolicyStepAdjustmentArgs
                    {
                        Action = new SpotInst.Aws.Inputs.ElastigroupScalingUpPolicyStepAdjustmentActionArgs
                        {
                            Type = "string",
                            Adjustment = "string",
                            MaxTargetCapacity = "string",
                            Maximum = "string",
                            MinTargetCapacity = "string",
                            Minimum = "string",
                            Target = "string",
                        },
                        Threshold = 0,
                    },
                },
                Target = "string",
                Threshold = 0,
                Unit = "string",
            },
        },
        ScheduledTasks = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupScheduledTaskArgs
            {
                TaskType = "string",
                IsEnabled = false,
                MinCapacity = "string",
                CronExpression = "string",
                Frequency = "string",
                GracePeriod = "string",
                Adjustment = "string",
                MaxCapacity = "string",
                BatchSizePercentage = "string",
                ScaleMaxCapacity = "string",
                ScaleMinCapacity = "string",
                ScaleTargetCapacity = "string",
                StartTime = "string",
                TargetCapacity = "string",
                AdjustmentPercentage = "string",
            },
        },
        ShutdownScript = "string",
        Signals = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupSignalArgs
            {
                Name = "string",
                Timeout = 0,
            },
        },
        SpotPercentage = 0,
        StatefulDeallocation = new SpotInst.Aws.Inputs.ElastigroupStatefulDeallocationArgs
        {
            ShouldDeleteImages = false,
            ShouldDeleteNetworkInterfaces = false,
            ShouldDeleteSnapshots = false,
            ShouldDeleteVolumes = false,
        },
        StatefulInstanceActions = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupStatefulInstanceActionArgs
            {
                StatefulInstanceId = "string",
                Type = "string",
            },
        },
        SubnetIds = new[]
        {
            "string",
        },
        Tags = new[]
        {
            new SpotInst.Aws.Inputs.ElastigroupTagArgs
            {
                Key = "string",
                Value = "string",
            },
        },
        TargetGroupArns = new[]
        {
            "string",
        },
        UpdatePolicy = new SpotInst.Aws.Inputs.ElastigroupUpdatePolicyArgs
        {
            ShouldResumeStateful = false,
            ShouldRoll = false,
            AutoApplyTags = false,
            RollConfig = new SpotInst.Aws.Inputs.ElastigroupUpdatePolicyRollConfigArgs
            {
                BatchSizePercentage = 0,
                GracePeriod = 0,
                HealthCheckType = "string",
                Strategy = new SpotInst.Aws.Inputs.ElastigroupUpdatePolicyRollConfigStrategyArgs
                {
                    Action = "string",
                    BatchMinHealthyPercentage = 0,
                    OnFailure = new SpotInst.Aws.Inputs.ElastigroupUpdatePolicyRollConfigStrategyOnFailureArgs
                    {
                        ActionType = "string",
                        BatchNum = 0,
                        DrainingTimeout = 0,
                        ShouldDecrementTargetCapacity = false,
                        ShouldHandleAllBatches = false,
                    },
                    ShouldDrainInstances = false,
                },
                WaitForRollPercentage = 0,
                WaitForRollTimeout = 0,
            },
        },
        UserData = "string",
        UtilizeCommitments = false,
        UtilizeReservedInstances = false,
        WaitForCapacity = 0,
        WaitForCapacityTimeout = 0,
    });
    
    example, err := aws.NewElastigroup(ctx, "elastigroupResource", &aws.ElastigroupArgs{
    	FallbackToOndemand: pulumi.Bool(false),
    	Orientation:        pulumi.String("string"),
    	Product:            pulumi.String("string"),
    	SecurityGroups: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	AvailabilityZones: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	BlockDevicesMode:  pulumi.String("string"),
    	CapacityUnit:      pulumi.String("string"),
    	ConsiderOdPricing: pulumi.Bool(false),
    	CpuCredits:        pulumi.String("string"),
    	CpuOptions: &aws.ElastigroupCpuOptionsArgs{
    		ThreadsPerCore: pulumi.Int(0),
    	},
    	Description:     pulumi.String("string"),
    	DesiredCapacity: pulumi.Int(0),
    	DrainingTimeout: pulumi.Int(0),
    	EbsBlockDevices: aws.ElastigroupEbsBlockDeviceArray{
    		&aws.ElastigroupEbsBlockDeviceArgs{
    			DeviceName:          pulumi.String("string"),
    			DeleteOnTermination: pulumi.Bool(false),
    			Encrypted:           pulumi.Bool(false),
    			Iops:                pulumi.Int(0),
    			KmsKeyId:            pulumi.String("string"),
    			SnapshotId:          pulumi.String("string"),
    			Throughput:          pulumi.Int(0),
    			VolumeSize:          pulumi.Int(0),
    			VolumeType:          pulumi.String("string"),
    		},
    	},
    	EbsOptimized: pulumi.Bool(false),
    	ElasticIps: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	ElasticLoadBalancers: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	EnableMonitoring: pulumi.Bool(false),
    	EphemeralBlockDevices: aws.ElastigroupEphemeralBlockDeviceArray{
    		&aws.ElastigroupEphemeralBlockDeviceArgs{
    			DeviceName:  pulumi.String("string"),
    			VirtualName: pulumi.String("string"),
    		},
    	},
    	HealthCheckGracePeriod:                        pulumi.Int(0),
    	HealthCheckType:                               pulumi.String("string"),
    	HealthCheckUnhealthyDurationBeforeReplacement: pulumi.Int(0),
    	IamInstanceProfile:                            pulumi.String("string"),
    	ImageId:                                       pulumi.String("string"),
    	Images: aws.ElastigroupImageArray{
    		&aws.ElastigroupImageArgs{
    			Images: aws.ElastigroupImageImageArray{
    				&aws.ElastigroupImageImageArgs{
    					Id: pulumi.String("string"),
    				},
    			},
    		},
    	},
    	ImmediateOdRecoverThreshold: pulumi.Int(0),
    	InstanceTypesOndemand:       pulumi.String("string"),
    	InstanceTypesPreferredSpots: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	InstanceTypesSpots: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	InstanceTypesWeights: aws.ElastigroupInstanceTypesWeightArray{
    		&aws.ElastigroupInstanceTypesWeightArgs{
    			InstanceType: pulumi.String("string"),
    			Weight:       pulumi.Int(0),
    		},
    	},
    	IntegrationBeanstalk: &aws.ElastigroupIntegrationBeanstalkArgs{
    		DeploymentPreferences: &aws.ElastigroupIntegrationBeanstalkDeploymentPreferencesArgs{
    			AutomaticRoll:       pulumi.Bool(false),
    			BatchSizePercentage: pulumi.Int(0),
    			GracePeriod:         pulumi.Int(0),
    			Strategy: &aws.ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategyArgs{
    				Action:               pulumi.String("string"),
    				ShouldDrainInstances: pulumi.Bool(false),
    			},
    		},
    		EnvironmentId: pulumi.String("string"),
    		ManagedActions: &aws.ElastigroupIntegrationBeanstalkManagedActionsArgs{
    			PlatformUpdate: &aws.ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdateArgs{
    				PerformAt:   pulumi.String("string"),
    				TimeWindow:  pulumi.String("string"),
    				UpdateLevel: pulumi.String("string"),
    			},
    		},
    	},
    	IntegrationCodedeploy: &aws.ElastigroupIntegrationCodedeployArgs{
    		CleanupOnFailure: pulumi.Bool(false),
    		DeploymentGroups: aws.ElastigroupIntegrationCodedeployDeploymentGroupArray{
    			&aws.ElastigroupIntegrationCodedeployDeploymentGroupArgs{
    				ApplicationName:     pulumi.String("string"),
    				DeploymentGroupName: pulumi.String("string"),
    			},
    		},
    		TerminateInstanceOnFailure: pulumi.Bool(false),
    	},
    	IntegrationDockerSwarm: &aws.ElastigroupIntegrationDockerSwarmArgs{
    		MasterHost:        pulumi.String("string"),
    		MasterPort:        pulumi.Int(0),
    		AutoscaleCooldown: pulumi.Int(0),
    		AutoscaleDown: &aws.ElastigroupIntegrationDockerSwarmAutoscaleDownArgs{
    			EvaluationPeriods:      pulumi.Int(0),
    			MaxScaleDownPercentage: pulumi.Float64(0),
    		},
    		AutoscaleHeadroom: &aws.ElastigroupIntegrationDockerSwarmAutoscaleHeadroomArgs{
    			CpuPerUnit:    pulumi.Int(0),
    			MemoryPerUnit: pulumi.Int(0),
    			NumOfUnits:    pulumi.Int(0),
    		},
    		AutoscaleIsEnabled: pulumi.Bool(false),
    	},
    	IntegrationEcs: &aws.ElastigroupIntegrationEcsArgs{
    		ClusterName: pulumi.String("string"),
    		AutoscaleAttributes: aws.ElastigroupIntegrationEcsAutoscaleAttributeArray{
    			&aws.ElastigroupIntegrationEcsAutoscaleAttributeArgs{
    				Key:   pulumi.String("string"),
    				Value: pulumi.String("string"),
    			},
    		},
    		AutoscaleCooldown: pulumi.Int(0),
    		AutoscaleDown: &aws.ElastigroupIntegrationEcsAutoscaleDownArgs{
    			EvaluationPeriods:      pulumi.Int(0),
    			MaxScaleDownPercentage: pulumi.Float64(0),
    		},
    		AutoscaleHeadroom: &aws.ElastigroupIntegrationEcsAutoscaleHeadroomArgs{
    			CpuPerUnit:    pulumi.Int(0),
    			MemoryPerUnit: pulumi.Int(0),
    			NumOfUnits:    pulumi.Int(0),
    		},
    		AutoscaleIsAutoConfig:             pulumi.Bool(false),
    		AutoscaleIsEnabled:                pulumi.Bool(false),
    		AutoscaleScaleDownNonServiceTasks: pulumi.Bool(false),
    		Batch: &aws.ElastigroupIntegrationEcsBatchArgs{
    			JobQueueNames: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    		},
    	},
    	IntegrationGitlab: &aws.ElastigroupIntegrationGitlabArgs{
    		Runner: &aws.ElastigroupIntegrationGitlabRunnerArgs{
    			IsEnabled: pulumi.Bool(false),
    		},
    	},
    	IntegrationKubernetes: &aws.ElastigroupIntegrationKubernetesArgs{
    		ApiServer:         pulumi.String("string"),
    		AutoscaleCooldown: pulumi.Int(0),
    		AutoscaleDown: &aws.ElastigroupIntegrationKubernetesAutoscaleDownArgs{
    			EvaluationPeriods:      pulumi.Int(0),
    			MaxScaleDownPercentage: pulumi.Float64(0),
    		},
    		AutoscaleHeadroom: &aws.ElastigroupIntegrationKubernetesAutoscaleHeadroomArgs{
    			CpuPerUnit:    pulumi.Int(0),
    			MemoryPerUnit: pulumi.Int(0),
    			NumOfUnits:    pulumi.Int(0),
    		},
    		AutoscaleIsAutoConfig: pulumi.Bool(false),
    		AutoscaleIsEnabled:    pulumi.Bool(false),
    		AutoscaleLabels: aws.ElastigroupIntegrationKubernetesAutoscaleLabelArray{
    			&aws.ElastigroupIntegrationKubernetesAutoscaleLabelArgs{
    				Key:   pulumi.String("string"),
    				Value: pulumi.String("string"),
    			},
    		},
    		ClusterIdentifier: pulumi.String("string"),
    		IntegrationMode:   pulumi.String("string"),
    		Token:             pulumi.String("string"),
    	},
    	IntegrationMesosphere: &aws.ElastigroupIntegrationMesosphereArgs{
    		ApiServer: pulumi.String("string"),
    	},
    	IntegrationNomad: &aws.ElastigroupIntegrationNomadArgs{
    		MasterHost: pulumi.String("string"),
    		MasterPort: pulumi.Int(0),
    		AclToken:   pulumi.String("string"),
    		AutoscaleConstraints: aws.ElastigroupIntegrationNomadAutoscaleConstraintArray{
    			&aws.ElastigroupIntegrationNomadAutoscaleConstraintArgs{
    				Key:   pulumi.String("string"),
    				Value: pulumi.String("string"),
    			},
    		},
    		AutoscaleCooldown: pulumi.Int(0),
    		AutoscaleDown: &aws.ElastigroupIntegrationNomadAutoscaleDownArgs{
    			EvaluationPeriods: pulumi.Int(0),
    		},
    		AutoscaleHeadroom: &aws.ElastigroupIntegrationNomadAutoscaleHeadroomArgs{
    			CpuPerUnit:    pulumi.Int(0),
    			MemoryPerUnit: pulumi.Int(0),
    			NumOfUnits:    pulumi.Int(0),
    		},
    		AutoscaleIsEnabled: pulumi.Bool(false),
    	},
    	IntegrationRancher: &aws.ElastigroupIntegrationRancherArgs{
    		AccessKey:  pulumi.String("string"),
    		MasterHost: pulumi.String("string"),
    		SecretKey:  pulumi.String("string"),
    		Version:    pulumi.String("string"),
    	},
    	IntegrationRoute53: &aws.ElastigroupIntegrationRoute53Args{
    		Domains: aws.ElastigroupIntegrationRoute53DomainArray{
    			&aws.ElastigroupIntegrationRoute53DomainArgs{
    				HostedZoneId: pulumi.String("string"),
    				RecordSets: aws.ElastigroupIntegrationRoute53DomainRecordSetArray{
    					&aws.ElastigroupIntegrationRoute53DomainRecordSetArgs{
    						Name:         pulumi.String("string"),
    						UsePublicDns: pulumi.Bool(false),
    						UsePublicIp:  pulumi.Bool(false),
    					},
    				},
    				RecordSetType:  pulumi.String("string"),
    				SpotinstAcctId: pulumi.String("string"),
    			},
    		},
    	},
    	Itfs: aws.ElastigroupItfArray{
    		&aws.ElastigroupItfArgs{
    			FixedTargetGroups: pulumi.Bool(false),
    			LoadBalancers: aws.ElastigroupItfLoadBalancerArray{
    				&aws.ElastigroupItfLoadBalancerArgs{
    					ListenerRules: aws.ElastigroupItfLoadBalancerListenerRuleArray{
    						&aws.ElastigroupItfLoadBalancerListenerRuleArgs{
    							RuleArn: pulumi.String("string"),
    							StaticTargetGroup: &aws.ElastigroupItfLoadBalancerListenerRuleStaticTargetGroupArgs{
    								Arn:        pulumi.String("string"),
    								Percentage: pulumi.Float64(0),
    							},
    						},
    					},
    					LoadBalancerArn: pulumi.String("string"),
    				},
    			},
    			TargetGroupConfigs: aws.ElastigroupItfTargetGroupConfigArray{
    				&aws.ElastigroupItfTargetGroupConfigArgs{
    					Port:            pulumi.Int(0),
    					HealthCheckPath: pulumi.String("string"),
    					VpcId:           pulumi.String("string"),
    					Protocol:        pulumi.String("string"),
    					Matchers: aws.ElastigroupItfTargetGroupConfigMatcherArray{
    						&aws.ElastigroupItfTargetGroupConfigMatcherArgs{
    							GrpcCode: pulumi.String("string"),
    							HttpCode: pulumi.String("string"),
    						},
    					},
    					HealthyThresholdCount:      pulumi.Int(0),
    					HealthCheckIntervalSeconds: pulumi.Int(0),
    					HealthCheckTimeoutSeconds:  pulumi.Int(0),
    					HealthCheckProtocol:        pulumi.String("string"),
    					ProtocolVersion:            pulumi.String("string"),
    					Tags: aws.ElastigroupItfTargetGroupConfigTagArray{
    						&aws.ElastigroupItfTargetGroupConfigTagArgs{
    							TagKey:   pulumi.String("string"),
    							TagValue: pulumi.String("string"),
    						},
    					},
    					UnhealthyThresholdCount: pulumi.Int(0),
    					HealthCheckPort:         pulumi.String("string"),
    				},
    			},
    			WeightStrategy: pulumi.String("string"),
    			DefaultStaticTargetGroup: &aws.ElastigroupItfDefaultStaticTargetGroupArgs{
    				Arn:        pulumi.String("string"),
    				Percentage: pulumi.Float64(0),
    			},
    			MigrationHealthinessThreshold: pulumi.Int(0),
    		},
    	},
    	KeyName:        pulumi.String("string"),
    	LifetimePeriod: pulumi.String("string"),
    	Logging: &aws.ElastigroupLoggingArgs{
    		Export: &aws.ElastigroupLoggingExportArgs{
    			S3s: aws.ElastigroupLoggingExportS3Array{
    				&aws.ElastigroupLoggingExportS3Args{
    					Id: pulumi.String("string"),
    				},
    			},
    		},
    	},
    	MaxSize: pulumi.Int(0),
    	MetadataOptions: &aws.ElastigroupMetadataOptionsArgs{
    		HttpTokens:              pulumi.String("string"),
    		HttpPutResponseHopLimit: pulumi.Int(0),
    		InstanceMetadataTags:    pulumi.String("string"),
    	},
    	MinSize:                 pulumi.Int(0),
    	MinimumInstanceLifetime: pulumi.Int(0),
    	MultipleMetrics: &aws.ElastigroupMultipleMetricsArgs{
    		Expressions: aws.ElastigroupMultipleMetricsExpressionArray{
    			&aws.ElastigroupMultipleMetricsExpressionArgs{
    				Expression: pulumi.String("string"),
    				Name:       pulumi.String("string"),
    			},
    		},
    		Metrics: aws.ElastigroupMultipleMetricsMetricArray{
    			&aws.ElastigroupMultipleMetricsMetricArgs{
    				MetricName: pulumi.String("string"),
    				Name:       pulumi.String("string"),
    				Namespace:  pulumi.String("string"),
    				Dimensions: aws.ElastigroupMultipleMetricsMetricDimensionArray{
    					&aws.ElastigroupMultipleMetricsMetricDimensionArgs{
    						Name:  pulumi.String("string"),
    						Value: pulumi.String("string"),
    					},
    				},
    				ExtendedStatistic: pulumi.String("string"),
    				Statistic:         pulumi.String("string"),
    				Unit:              pulumi.String("string"),
    			},
    		},
    	},
    	Name: pulumi.String("string"),
    	NetworkInterfaces: aws.ElastigroupNetworkInterfaceArray{
    		&aws.ElastigroupNetworkInterfaceArgs{
    			DeviceIndex:                    pulumi.String("string"),
    			AssociateIpv6Address:           pulumi.Bool(false),
    			AssociatePublicIpAddress:       pulumi.Bool(false),
    			DeleteOnTermination:            pulumi.Bool(false),
    			Description:                    pulumi.String("string"),
    			NetworkInterfaceId:             pulumi.String("string"),
    			PrivateIpAddress:               pulumi.String("string"),
    			SecondaryPrivateIpAddressCount: pulumi.String("string"),
    		},
    	},
    	OnDemandTypes: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	OndemandCount:       pulumi.Int(0),
    	PersistBlockDevices: pulumi.Bool(false),
    	PersistPrivateIp:    pulumi.Bool(false),
    	PersistRootDevice:   pulumi.Bool(false),
    	PlacementTenancy:    pulumi.String("string"),
    	PreferredAvailabilityZones: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	PrivateIps: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	Region: pulumi.String("string"),
    	ResourceRequirements: aws.ElastigroupResourceRequirementArray{
    		&aws.ElastigroupResourceRequirementArgs{
    			RequiredMemoryMaximum: pulumi.Int(0),
    			RequiredMemoryMinimum: pulumi.Int(0),
    			RequiredVcpuMaximum:   pulumi.Int(0),
    			RequiredVcpuMinimum:   pulumi.Int(0),
    			ExcludedInstanceFamilies: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			ExcludedInstanceGenerations: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			ExcludedInstanceTypes: pulumi.StringArray{
    				pulumi.String("string"),
    			},
    			RequiredGpuMaximum: pulumi.Int(0),
    			RequiredGpuMinimum: pulumi.Int(0),
    		},
    	},
    	ResourceTagSpecifications: aws.ElastigroupResourceTagSpecificationArray{
    		&aws.ElastigroupResourceTagSpecificationArgs{
    			ShouldTagAmis:      pulumi.Bool(false),
    			ShouldTagEnis:      pulumi.Bool(false),
    			ShouldTagSnapshots: pulumi.Bool(false),
    			ShouldTagVolumes:   pulumi.Bool(false),
    		},
    	},
    	RevertToSpot: &aws.ElastigroupRevertToSpotArgs{
    		PerformAt: pulumi.String("string"),
    		TimeWindows: pulumi.StringArray{
    			pulumi.String("string"),
    		},
    	},
    	ScalingDownPolicies: aws.ElastigroupScalingDownPolicyArray{
    		&aws.ElastigroupScalingDownPolicyArgs{
    			MetricName:        pulumi.String("string"),
    			PolicyName:        pulumi.String("string"),
    			Namespace:         pulumi.String("string"),
    			Minimum:           pulumi.String("string"),
    			Operator:          pulumi.String("string"),
    			IsEnabled:         pulumi.Bool(false),
    			MaxTargetCapacity: pulumi.String("string"),
    			Maximum:           pulumi.String("string"),
    			Dimensions: aws.ElastigroupScalingDownPolicyDimensionArray{
    				&aws.ElastigroupScalingDownPolicyDimensionArgs{
    					Name:  pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			MinTargetCapacity: pulumi.String("string"),
    			ActionType:        pulumi.String("string"),
    			Cooldown:          pulumi.Int(0),
    			EvaluationPeriods: pulumi.Int(0),
    			Period:            pulumi.Int(0),
    			Adjustment:        pulumi.String("string"),
    			Source:            pulumi.String("string"),
    			Statistic:         pulumi.String("string"),
    			StepAdjustments: aws.ElastigroupScalingDownPolicyStepAdjustmentArray{
    				&aws.ElastigroupScalingDownPolicyStepAdjustmentArgs{
    					Action: &aws.ElastigroupScalingDownPolicyStepAdjustmentActionArgs{
    						Type:              pulumi.String("string"),
    						Adjustment:        pulumi.String("string"),
    						MaxTargetCapacity: pulumi.String("string"),
    						Maximum:           pulumi.String("string"),
    						MinTargetCapacity: pulumi.String("string"),
    						Minimum:           pulumi.String("string"),
    						Target:            pulumi.String("string"),
    					},
    					Threshold: pulumi.Int(0),
    				},
    			},
    			Target:    pulumi.String("string"),
    			Threshold: pulumi.Float64(0),
    			Unit:      pulumi.String("string"),
    		},
    	},
    	ScalingStrategies: aws.ElastigroupScalingStrategyArray{
    		&aws.ElastigroupScalingStrategyArgs{
    			TerminateAtEndOfBillingHour: pulumi.Bool(false),
    			TerminationPolicy:           pulumi.String("string"),
    		},
    	},
    	ScalingTargetPolicies: aws.ElastigroupScalingTargetPolicyArray{
    		&aws.ElastigroupScalingTargetPolicyArgs{
    			MetricName:          pulumi.String("string"),
    			Target:              pulumi.Float64(0),
    			PolicyName:          pulumi.String("string"),
    			Namespace:           pulumi.String("string"),
    			Period:              pulumi.Int(0),
    			MaxCapacityPerScale: pulumi.String("string"),
    			Cooldown:            pulumi.Int(0),
    			EvaluationPeriods:   pulumi.Int(0),
    			PredictiveMode:      pulumi.String("string"),
    			Source:              pulumi.String("string"),
    			Statistic:           pulumi.String("string"),
    			Dimensions: aws.ElastigroupScalingTargetPolicyDimensionArray{
    				&aws.ElastigroupScalingTargetPolicyDimensionArgs{
    					Name:  pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			Unit: pulumi.String("string"),
    		},
    	},
    	ScalingUpPolicies: aws.ElastigroupScalingUpPolicyArray{
    		&aws.ElastigroupScalingUpPolicyArgs{
    			MetricName:        pulumi.String("string"),
    			PolicyName:        pulumi.String("string"),
    			Namespace:         pulumi.String("string"),
    			Minimum:           pulumi.String("string"),
    			Operator:          pulumi.String("string"),
    			IsEnabled:         pulumi.Bool(false),
    			MaxTargetCapacity: pulumi.String("string"),
    			Maximum:           pulumi.String("string"),
    			Dimensions: aws.ElastigroupScalingUpPolicyDimensionArray{
    				&aws.ElastigroupScalingUpPolicyDimensionArgs{
    					Name:  pulumi.String("string"),
    					Value: pulumi.String("string"),
    				},
    			},
    			MinTargetCapacity: pulumi.String("string"),
    			ActionType:        pulumi.String("string"),
    			Cooldown:          pulumi.Int(0),
    			EvaluationPeriods: pulumi.Int(0),
    			Period:            pulumi.Int(0),
    			Adjustment:        pulumi.String("string"),
    			Source:            pulumi.String("string"),
    			Statistic:         pulumi.String("string"),
    			StepAdjustments: aws.ElastigroupScalingUpPolicyStepAdjustmentArray{
    				&aws.ElastigroupScalingUpPolicyStepAdjustmentArgs{
    					Action: &aws.ElastigroupScalingUpPolicyStepAdjustmentActionArgs{
    						Type:              pulumi.String("string"),
    						Adjustment:        pulumi.String("string"),
    						MaxTargetCapacity: pulumi.String("string"),
    						Maximum:           pulumi.String("string"),
    						MinTargetCapacity: pulumi.String("string"),
    						Minimum:           pulumi.String("string"),
    						Target:            pulumi.String("string"),
    					},
    					Threshold: pulumi.Int(0),
    				},
    			},
    			Target:    pulumi.String("string"),
    			Threshold: pulumi.Float64(0),
    			Unit:      pulumi.String("string"),
    		},
    	},
    	ScheduledTasks: aws.ElastigroupScheduledTaskArray{
    		&aws.ElastigroupScheduledTaskArgs{
    			TaskType:             pulumi.String("string"),
    			IsEnabled:            pulumi.Bool(false),
    			MinCapacity:          pulumi.String("string"),
    			CronExpression:       pulumi.String("string"),
    			Frequency:            pulumi.String("string"),
    			GracePeriod:          pulumi.String("string"),
    			Adjustment:           pulumi.String("string"),
    			MaxCapacity:          pulumi.String("string"),
    			BatchSizePercentage:  pulumi.String("string"),
    			ScaleMaxCapacity:     pulumi.String("string"),
    			ScaleMinCapacity:     pulumi.String("string"),
    			ScaleTargetCapacity:  pulumi.String("string"),
    			StartTime:            pulumi.String("string"),
    			TargetCapacity:       pulumi.String("string"),
    			AdjustmentPercentage: pulumi.String("string"),
    		},
    	},
    	ShutdownScript: pulumi.String("string"),
    	Signals: aws.ElastigroupSignalArray{
    		&aws.ElastigroupSignalArgs{
    			Name:    pulumi.String("string"),
    			Timeout: pulumi.Int(0),
    		},
    	},
    	SpotPercentage: pulumi.Int(0),
    	StatefulDeallocation: &aws.ElastigroupStatefulDeallocationArgs{
    		ShouldDeleteImages:            pulumi.Bool(false),
    		ShouldDeleteNetworkInterfaces: pulumi.Bool(false),
    		ShouldDeleteSnapshots:         pulumi.Bool(false),
    		ShouldDeleteVolumes:           pulumi.Bool(false),
    	},
    	StatefulInstanceActions: aws.ElastigroupStatefulInstanceActionArray{
    		&aws.ElastigroupStatefulInstanceActionArgs{
    			StatefulInstanceId: pulumi.String("string"),
    			Type:               pulumi.String("string"),
    		},
    	},
    	SubnetIds: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	Tags: aws.ElastigroupTagArray{
    		&aws.ElastigroupTagArgs{
    			Key:   pulumi.String("string"),
    			Value: pulumi.String("string"),
    		},
    	},
    	TargetGroupArns: pulumi.StringArray{
    		pulumi.String("string"),
    	},
    	UpdatePolicy: &aws.ElastigroupUpdatePolicyArgs{
    		ShouldResumeStateful: pulumi.Bool(false),
    		ShouldRoll:           pulumi.Bool(false),
    		AutoApplyTags:        pulumi.Bool(false),
    		RollConfig: &aws.ElastigroupUpdatePolicyRollConfigArgs{
    			BatchSizePercentage: pulumi.Int(0),
    			GracePeriod:         pulumi.Int(0),
    			HealthCheckType:     pulumi.String("string"),
    			Strategy: &aws.ElastigroupUpdatePolicyRollConfigStrategyArgs{
    				Action:                    pulumi.String("string"),
    				BatchMinHealthyPercentage: pulumi.Int(0),
    				OnFailure: &aws.ElastigroupUpdatePolicyRollConfigStrategyOnFailureArgs{
    					ActionType:                    pulumi.String("string"),
    					BatchNum:                      pulumi.Int(0),
    					DrainingTimeout:               pulumi.Int(0),
    					ShouldDecrementTargetCapacity: pulumi.Bool(false),
    					ShouldHandleAllBatches:        pulumi.Bool(false),
    				},
    				ShouldDrainInstances: pulumi.Bool(false),
    			},
    			WaitForRollPercentage: pulumi.Float64(0),
    			WaitForRollTimeout:    pulumi.Int(0),
    		},
    	},
    	UserData:                 pulumi.String("string"),
    	UtilizeCommitments:       pulumi.Bool(false),
    	UtilizeReservedInstances: pulumi.Bool(false),
    	WaitForCapacity:          pulumi.Int(0),
    	WaitForCapacityTimeout:   pulumi.Int(0),
    })
    
    var elastigroupResource = new Elastigroup("elastigroupResource", ElastigroupArgs.builder()
        .fallbackToOndemand(false)
        .orientation("string")
        .product("string")
        .securityGroups("string")
        .availabilityZones("string")
        .blockDevicesMode("string")
        .capacityUnit("string")
        .considerOdPricing(false)
        .cpuCredits("string")
        .cpuOptions(ElastigroupCpuOptionsArgs.builder()
            .threadsPerCore(0)
            .build())
        .description("string")
        .desiredCapacity(0)
        .drainingTimeout(0)
        .ebsBlockDevices(ElastigroupEbsBlockDeviceArgs.builder()
            .deviceName("string")
            .deleteOnTermination(false)
            .encrypted(false)
            .iops(0)
            .kmsKeyId("string")
            .snapshotId("string")
            .throughput(0)
            .volumeSize(0)
            .volumeType("string")
            .build())
        .ebsOptimized(false)
        .elasticIps("string")
        .elasticLoadBalancers("string")
        .enableMonitoring(false)
        .ephemeralBlockDevices(ElastigroupEphemeralBlockDeviceArgs.builder()
            .deviceName("string")
            .virtualName("string")
            .build())
        .healthCheckGracePeriod(0)
        .healthCheckType("string")
        .healthCheckUnhealthyDurationBeforeReplacement(0)
        .iamInstanceProfile("string")
        .imageId("string")
        .images(ElastigroupImageArgs.builder()
            .images(ElastigroupImageImageArgs.builder()
                .id("string")
                .build())
            .build())
        .immediateOdRecoverThreshold(0)
        .instanceTypesOndemand("string")
        .instanceTypesPreferredSpots("string")
        .instanceTypesSpots("string")
        .instanceTypesWeights(ElastigroupInstanceTypesWeightArgs.builder()
            .instanceType("string")
            .weight(0)
            .build())
        .integrationBeanstalk(ElastigroupIntegrationBeanstalkArgs.builder()
            .deploymentPreferences(ElastigroupIntegrationBeanstalkDeploymentPreferencesArgs.builder()
                .automaticRoll(false)
                .batchSizePercentage(0)
                .gracePeriod(0)
                .strategy(ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategyArgs.builder()
                    .action("string")
                    .shouldDrainInstances(false)
                    .build())
                .build())
            .environmentId("string")
            .managedActions(ElastigroupIntegrationBeanstalkManagedActionsArgs.builder()
                .platformUpdate(ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdateArgs.builder()
                    .performAt("string")
                    .timeWindow("string")
                    .updateLevel("string")
                    .build())
                .build())
            .build())
        .integrationCodedeploy(ElastigroupIntegrationCodedeployArgs.builder()
            .cleanupOnFailure(false)
            .deploymentGroups(ElastigroupIntegrationCodedeployDeploymentGroupArgs.builder()
                .applicationName("string")
                .deploymentGroupName("string")
                .build())
            .terminateInstanceOnFailure(false)
            .build())
        .integrationDockerSwarm(ElastigroupIntegrationDockerSwarmArgs.builder()
            .masterHost("string")
            .masterPort(0)
            .autoscaleCooldown(0)
            .autoscaleDown(ElastigroupIntegrationDockerSwarmAutoscaleDownArgs.builder()
                .evaluationPeriods(0)
                .maxScaleDownPercentage(0)
                .build())
            .autoscaleHeadroom(ElastigroupIntegrationDockerSwarmAutoscaleHeadroomArgs.builder()
                .cpuPerUnit(0)
                .memoryPerUnit(0)
                .numOfUnits(0)
                .build())
            .autoscaleIsEnabled(false)
            .build())
        .integrationEcs(ElastigroupIntegrationEcsArgs.builder()
            .clusterName("string")
            .autoscaleAttributes(ElastigroupIntegrationEcsAutoscaleAttributeArgs.builder()
                .key("string")
                .value("string")
                .build())
            .autoscaleCooldown(0)
            .autoscaleDown(ElastigroupIntegrationEcsAutoscaleDownArgs.builder()
                .evaluationPeriods(0)
                .maxScaleDownPercentage(0)
                .build())
            .autoscaleHeadroom(ElastigroupIntegrationEcsAutoscaleHeadroomArgs.builder()
                .cpuPerUnit(0)
                .memoryPerUnit(0)
                .numOfUnits(0)
                .build())
            .autoscaleIsAutoConfig(false)
            .autoscaleIsEnabled(false)
            .autoscaleScaleDownNonServiceTasks(false)
            .batch(ElastigroupIntegrationEcsBatchArgs.builder()
                .jobQueueNames("string")
                .build())
            .build())
        .integrationGitlab(ElastigroupIntegrationGitlabArgs.builder()
            .runner(ElastigroupIntegrationGitlabRunnerArgs.builder()
                .isEnabled(false)
                .build())
            .build())
        .integrationKubernetes(ElastigroupIntegrationKubernetesArgs.builder()
            .apiServer("string")
            .autoscaleCooldown(0)
            .autoscaleDown(ElastigroupIntegrationKubernetesAutoscaleDownArgs.builder()
                .evaluationPeriods(0)
                .maxScaleDownPercentage(0)
                .build())
            .autoscaleHeadroom(ElastigroupIntegrationKubernetesAutoscaleHeadroomArgs.builder()
                .cpuPerUnit(0)
                .memoryPerUnit(0)
                .numOfUnits(0)
                .build())
            .autoscaleIsAutoConfig(false)
            .autoscaleIsEnabled(false)
            .autoscaleLabels(ElastigroupIntegrationKubernetesAutoscaleLabelArgs.builder()
                .key("string")
                .value("string")
                .build())
            .clusterIdentifier("string")
            .integrationMode("string")
            .token("string")
            .build())
        .integrationMesosphere(ElastigroupIntegrationMesosphereArgs.builder()
            .apiServer("string")
            .build())
        .integrationNomad(ElastigroupIntegrationNomadArgs.builder()
            .masterHost("string")
            .masterPort(0)
            .aclToken("string")
            .autoscaleConstraints(ElastigroupIntegrationNomadAutoscaleConstraintArgs.builder()
                .key("string")
                .value("string")
                .build())
            .autoscaleCooldown(0)
            .autoscaleDown(ElastigroupIntegrationNomadAutoscaleDownArgs.builder()
                .evaluationPeriods(0)
                .build())
            .autoscaleHeadroom(ElastigroupIntegrationNomadAutoscaleHeadroomArgs.builder()
                .cpuPerUnit(0)
                .memoryPerUnit(0)
                .numOfUnits(0)
                .build())
            .autoscaleIsEnabled(false)
            .build())
        .integrationRancher(ElastigroupIntegrationRancherArgs.builder()
            .accessKey("string")
            .masterHost("string")
            .secretKey("string")
            .version("string")
            .build())
        .integrationRoute53(ElastigroupIntegrationRoute53Args.builder()
            .domains(ElastigroupIntegrationRoute53DomainArgs.builder()
                .hostedZoneId("string")
                .recordSets(ElastigroupIntegrationRoute53DomainRecordSetArgs.builder()
                    .name("string")
                    .usePublicDns(false)
                    .usePublicIp(false)
                    .build())
                .recordSetType("string")
                .spotinstAcctId("string")
                .build())
            .build())
        .itfs(ElastigroupItfArgs.builder()
            .fixedTargetGroups(false)
            .loadBalancers(ElastigroupItfLoadBalancerArgs.builder()
                .listenerRules(ElastigroupItfLoadBalancerListenerRuleArgs.builder()
                    .ruleArn("string")
                    .staticTargetGroup(ElastigroupItfLoadBalancerListenerRuleStaticTargetGroupArgs.builder()
                        .arn("string")
                        .percentage(0)
                        .build())
                    .build())
                .loadBalancerArn("string")
                .build())
            .targetGroupConfigs(ElastigroupItfTargetGroupConfigArgs.builder()
                .port(0)
                .healthCheckPath("string")
                .vpcId("string")
                .protocol("string")
                .matchers(ElastigroupItfTargetGroupConfigMatcherArgs.builder()
                    .grpcCode("string")
                    .httpCode("string")
                    .build())
                .healthyThresholdCount(0)
                .healthCheckIntervalSeconds(0)
                .healthCheckTimeoutSeconds(0)
                .healthCheckProtocol("string")
                .protocolVersion("string")
                .tags(ElastigroupItfTargetGroupConfigTagArgs.builder()
                    .tagKey("string")
                    .tagValue("string")
                    .build())
                .unhealthyThresholdCount(0)
                .healthCheckPort("string")
                .build())
            .weightStrategy("string")
            .defaultStaticTargetGroup(ElastigroupItfDefaultStaticTargetGroupArgs.builder()
                .arn("string")
                .percentage(0)
                .build())
            .migrationHealthinessThreshold(0)
            .build())
        .keyName("string")
        .lifetimePeriod("string")
        .logging(ElastigroupLoggingArgs.builder()
            .export(ElastigroupLoggingExportArgs.builder()
                .s3s(ElastigroupLoggingExportS3Args.builder()
                    .id("string")
                    .build())
                .build())
            .build())
        .maxSize(0)
        .metadataOptions(ElastigroupMetadataOptionsArgs.builder()
            .httpTokens("string")
            .httpPutResponseHopLimit(0)
            .instanceMetadataTags("string")
            .build())
        .minSize(0)
        .minimumInstanceLifetime(0)
        .multipleMetrics(ElastigroupMultipleMetricsArgs.builder()
            .expressions(ElastigroupMultipleMetricsExpressionArgs.builder()
                .expression("string")
                .name("string")
                .build())
            .metrics(ElastigroupMultipleMetricsMetricArgs.builder()
                .metricName("string")
                .name("string")
                .namespace("string")
                .dimensions(ElastigroupMultipleMetricsMetricDimensionArgs.builder()
                    .name("string")
                    .value("string")
                    .build())
                .extendedStatistic("string")
                .statistic("string")
                .unit("string")
                .build())
            .build())
        .name("string")
        .networkInterfaces(ElastigroupNetworkInterfaceArgs.builder()
            .deviceIndex("string")
            .associateIpv6Address(false)
            .associatePublicIpAddress(false)
            .deleteOnTermination(false)
            .description("string")
            .networkInterfaceId("string")
            .privateIpAddress("string")
            .secondaryPrivateIpAddressCount("string")
            .build())
        .onDemandTypes("string")
        .ondemandCount(0)
        .persistBlockDevices(false)
        .persistPrivateIp(false)
        .persistRootDevice(false)
        .placementTenancy("string")
        .preferredAvailabilityZones("string")
        .privateIps("string")
        .region("string")
        .resourceRequirements(ElastigroupResourceRequirementArgs.builder()
            .requiredMemoryMaximum(0)
            .requiredMemoryMinimum(0)
            .requiredVcpuMaximum(0)
            .requiredVcpuMinimum(0)
            .excludedInstanceFamilies("string")
            .excludedInstanceGenerations("string")
            .excludedInstanceTypes("string")
            .requiredGpuMaximum(0)
            .requiredGpuMinimum(0)
            .build())
        .resourceTagSpecifications(ElastigroupResourceTagSpecificationArgs.builder()
            .shouldTagAmis(false)
            .shouldTagEnis(false)
            .shouldTagSnapshots(false)
            .shouldTagVolumes(false)
            .build())
        .revertToSpot(ElastigroupRevertToSpotArgs.builder()
            .performAt("string")
            .timeWindows("string")
            .build())
        .scalingDownPolicies(ElastigroupScalingDownPolicyArgs.builder()
            .metricName("string")
            .policyName("string")
            .namespace("string")
            .minimum("string")
            .operator("string")
            .isEnabled(false)
            .maxTargetCapacity("string")
            .maximum("string")
            .dimensions(ElastigroupScalingDownPolicyDimensionArgs.builder()
                .name("string")
                .value("string")
                .build())
            .minTargetCapacity("string")
            .actionType("string")
            .cooldown(0)
            .evaluationPeriods(0)
            .period(0)
            .adjustment("string")
            .source("string")
            .statistic("string")
            .stepAdjustments(ElastigroupScalingDownPolicyStepAdjustmentArgs.builder()
                .action(ElastigroupScalingDownPolicyStepAdjustmentActionArgs.builder()
                    .type("string")
                    .adjustment("string")
                    .maxTargetCapacity("string")
                    .maximum("string")
                    .minTargetCapacity("string")
                    .minimum("string")
                    .target("string")
                    .build())
                .threshold(0)
                .build())
            .target("string")
            .threshold(0)
            .unit("string")
            .build())
        .scalingStrategies(ElastigroupScalingStrategyArgs.builder()
            .terminateAtEndOfBillingHour(false)
            .terminationPolicy("string")
            .build())
        .scalingTargetPolicies(ElastigroupScalingTargetPolicyArgs.builder()
            .metricName("string")
            .target(0)
            .policyName("string")
            .namespace("string")
            .period(0)
            .maxCapacityPerScale("string")
            .cooldown(0)
            .evaluationPeriods(0)
            .predictiveMode("string")
            .source("string")
            .statistic("string")
            .dimensions(ElastigroupScalingTargetPolicyDimensionArgs.builder()
                .name("string")
                .value("string")
                .build())
            .unit("string")
            .build())
        .scalingUpPolicies(ElastigroupScalingUpPolicyArgs.builder()
            .metricName("string")
            .policyName("string")
            .namespace("string")
            .minimum("string")
            .operator("string")
            .isEnabled(false)
            .maxTargetCapacity("string")
            .maximum("string")
            .dimensions(ElastigroupScalingUpPolicyDimensionArgs.builder()
                .name("string")
                .value("string")
                .build())
            .minTargetCapacity("string")
            .actionType("string")
            .cooldown(0)
            .evaluationPeriods(0)
            .period(0)
            .adjustment("string")
            .source("string")
            .statistic("string")
            .stepAdjustments(ElastigroupScalingUpPolicyStepAdjustmentArgs.builder()
                .action(ElastigroupScalingUpPolicyStepAdjustmentActionArgs.builder()
                    .type("string")
                    .adjustment("string")
                    .maxTargetCapacity("string")
                    .maximum("string")
                    .minTargetCapacity("string")
                    .minimum("string")
                    .target("string")
                    .build())
                .threshold(0)
                .build())
            .target("string")
            .threshold(0)
            .unit("string")
            .build())
        .scheduledTasks(ElastigroupScheduledTaskArgs.builder()
            .taskType("string")
            .isEnabled(false)
            .minCapacity("string")
            .cronExpression("string")
            .frequency("string")
            .gracePeriod("string")
            .adjustment("string")
            .maxCapacity("string")
            .batchSizePercentage("string")
            .scaleMaxCapacity("string")
            .scaleMinCapacity("string")
            .scaleTargetCapacity("string")
            .startTime("string")
            .targetCapacity("string")
            .adjustmentPercentage("string")
            .build())
        .shutdownScript("string")
        .signals(ElastigroupSignalArgs.builder()
            .name("string")
            .timeout(0)
            .build())
        .spotPercentage(0)
        .statefulDeallocation(ElastigroupStatefulDeallocationArgs.builder()
            .shouldDeleteImages(false)
            .shouldDeleteNetworkInterfaces(false)
            .shouldDeleteSnapshots(false)
            .shouldDeleteVolumes(false)
            .build())
        .statefulInstanceActions(ElastigroupStatefulInstanceActionArgs.builder()
            .statefulInstanceId("string")
            .type("string")
            .build())
        .subnetIds("string")
        .tags(ElastigroupTagArgs.builder()
            .key("string")
            .value("string")
            .build())
        .targetGroupArns("string")
        .updatePolicy(ElastigroupUpdatePolicyArgs.builder()
            .shouldResumeStateful(false)
            .shouldRoll(false)
            .autoApplyTags(false)
            .rollConfig(ElastigroupUpdatePolicyRollConfigArgs.builder()
                .batchSizePercentage(0)
                .gracePeriod(0)
                .healthCheckType("string")
                .strategy(ElastigroupUpdatePolicyRollConfigStrategyArgs.builder()
                    .action("string")
                    .batchMinHealthyPercentage(0)
                    .onFailure(ElastigroupUpdatePolicyRollConfigStrategyOnFailureArgs.builder()
                        .actionType("string")
                        .batchNum(0)
                        .drainingTimeout(0)
                        .shouldDecrementTargetCapacity(false)
                        .shouldHandleAllBatches(false)
                        .build())
                    .shouldDrainInstances(false)
                    .build())
                .waitForRollPercentage(0)
                .waitForRollTimeout(0)
                .build())
            .build())
        .userData("string")
        .utilizeCommitments(false)
        .utilizeReservedInstances(false)
        .waitForCapacity(0)
        .waitForCapacityTimeout(0)
        .build());
    
    elastigroup_resource = spotinst.aws.Elastigroup("elastigroupResource",
        fallback_to_ondemand=False,
        orientation="string",
        product="string",
        security_groups=["string"],
        availability_zones=["string"],
        block_devices_mode="string",
        capacity_unit="string",
        consider_od_pricing=False,
        cpu_credits="string",
        cpu_options=spotinst.aws.ElastigroupCpuOptionsArgs(
            threads_per_core=0,
        ),
        description="string",
        desired_capacity=0,
        draining_timeout=0,
        ebs_block_devices=[spotinst.aws.ElastigroupEbsBlockDeviceArgs(
            device_name="string",
            delete_on_termination=False,
            encrypted=False,
            iops=0,
            kms_key_id="string",
            snapshot_id="string",
            throughput=0,
            volume_size=0,
            volume_type="string",
        )],
        ebs_optimized=False,
        elastic_ips=["string"],
        elastic_load_balancers=["string"],
        enable_monitoring=False,
        ephemeral_block_devices=[spotinst.aws.ElastigroupEphemeralBlockDeviceArgs(
            device_name="string",
            virtual_name="string",
        )],
        health_check_grace_period=0,
        health_check_type="string",
        health_check_unhealthy_duration_before_replacement=0,
        iam_instance_profile="string",
        image_id="string",
        images=[spotinst.aws.ElastigroupImageArgs(
            images=[spotinst.aws.ElastigroupImageImageArgs(
                id="string",
            )],
        )],
        immediate_od_recover_threshold=0,
        instance_types_ondemand="string",
        instance_types_preferred_spots=["string"],
        instance_types_spots=["string"],
        instance_types_weights=[spotinst.aws.ElastigroupInstanceTypesWeightArgs(
            instance_type="string",
            weight=0,
        )],
        integration_beanstalk=spotinst.aws.ElastigroupIntegrationBeanstalkArgs(
            deployment_preferences=spotinst.aws.ElastigroupIntegrationBeanstalkDeploymentPreferencesArgs(
                automatic_roll=False,
                batch_size_percentage=0,
                grace_period=0,
                strategy=spotinst.aws.ElastigroupIntegrationBeanstalkDeploymentPreferencesStrategyArgs(
                    action="string",
                    should_drain_instances=False,
                ),
            ),
            environment_id="string",
            managed_actions=spotinst.aws.ElastigroupIntegrationBeanstalkManagedActionsArgs(
                platform_update=spotinst.aws.ElastigroupIntegrationBeanstalkManagedActionsPlatformUpdateArgs(
                    perform_at="string",
                    time_window="string",
                    update_level="string",
                ),
            ),
        ),
        integration_codedeploy=spotinst.aws.ElastigroupIntegrationCodedeployArgs(
            cleanup_on_failure=False,
            deployment_groups=[spotinst.aws.ElastigroupIntegrationCodedeployDeploymentGroupArgs(
                application_name="string",
                deployment_group_name="string",
            )],
            terminate_instance_on_failure=False,
        ),
        integration_docker_swarm=spotinst.aws.ElastigroupIntegrationDockerSwarmArgs(
            master_host="string",
            master_port=0,
            autoscale_cooldown=0,
            autoscale_down=spotinst.aws.ElastigroupIntegrationDockerSwarmAutoscaleDownArgs(
                evaluation_periods=0,
                max_scale_down_percentage=0,
            ),
            autoscale_headroom=spotinst.aws.ElastigroupIntegrationDockerSwarmAutoscaleHeadroomArgs(
                cpu_per_unit=0,
                memory_per_unit=0,
                num_of_units=0,
            ),
            autoscale_is_enabled=False,
        ),
        integration_ecs=spotinst.aws.ElastigroupIntegrationEcsArgs(
            cluster_name="string",
            autoscale_attributes=[spotinst.aws.ElastigroupIntegrationEcsAutoscaleAttributeArgs(
                key="string",
                value="string",
            )],
            autoscale_cooldown=0,
            autoscale_down=spotinst.aws.ElastigroupIntegrationEcsAutoscaleDownArgs(
                evaluation_periods=0,
                max_scale_down_percentage=0,
            ),
            autoscale_headroom=spotinst.aws.ElastigroupIntegrationEcsAutoscaleHeadroomArgs(
                cpu_per_unit=0,
                memory_per_unit=0,
                num_of_units=0,
            ),
            autoscale_is_auto_config=False,
            autoscale_is_enabled=False,
            autoscale_scale_down_non_service_tasks=False,
            batch=spotinst.aws.ElastigroupIntegrationEcsBatchArgs(
                job_queue_names=["string"],
            ),
        ),
        integration_gitlab=spotinst.aws.ElastigroupIntegrationGitlabArgs(
            runner=spotinst.aws.ElastigroupIntegrationGitlabRunnerArgs(
                is_enabled=False,
            ),
        ),
        integration_kubernetes=spotinst.aws.ElastigroupIntegrationKubernetesArgs(
            api_server="string",
            autoscale_cooldown=0,
            autoscale_down=spotinst.aws.ElastigroupIntegrationKubernetesAutoscaleDownArgs(
                evaluation_periods=0,
                max_scale_down_percentage=0,
            ),
            autoscale_headroom=spotinst.aws.ElastigroupIntegrationKubernetesAutoscaleHeadroomArgs(
                cpu_per_unit=0,
                memory_per_unit=0,
                num_of_units=0,
            ),
            autoscale_is_auto_config=False,
            autoscale_is_enabled=False,
            autoscale_labels=[spotinst.aws.ElastigroupIntegrationKubernetesAutoscaleLabelArgs(
                key="string",
                value="string",
            )],
            cluster_identifier="string",
            integration_mode="string",
            token="string",
        ),
        integration_mesosphere=spotinst.aws.ElastigroupIntegrationMesosphereArgs(
            api_server="string",
        ),
        integration_nomad=spotinst.aws.ElastigroupIntegrationNomadArgs(
            master_host="string",
            master_port=0,
            acl_token="string",
            autoscale_constraints=[spotinst.aws.ElastigroupIntegrationNomadAutoscaleConstraintArgs(
                key="string",
                value="string",
            )],
            autoscale_cooldown=0,
            autoscale_down=spotinst.aws.ElastigroupIntegrationNomadAutoscaleDownArgs(
                evaluation_periods=0,
            ),
            autoscale_headroom=spotinst.aws.ElastigroupIntegrationNomadAutoscaleHeadroomArgs(
                cpu_per_unit=0,
                memory_per_unit=0,
                num_of_units=0,
            ),
            autoscale_is_enabled=False,
        ),
        integration_rancher=spotinst.aws.ElastigroupIntegrationRancherArgs(
            access_key="string",
            master_host="string",
            secret_key="string",
            version="string",
        ),
        integration_route53=spotinst.aws.ElastigroupIntegrationRoute53Args(
            domains=[spotinst.aws.ElastigroupIntegrationRoute53DomainArgs(
                hosted_zone_id="string",
                record_sets=[spotinst.aws.ElastigroupIntegrationRoute53DomainRecordSetArgs(
                    name="string",
                    use_public_dns=False,
                    use_public_ip=False,
                )],
                record_set_type="string",
                spotinst_acct_id="string",
            )],
        ),
        itfs=[spotinst.aws.ElastigroupItfArgs(
            fixed_target_groups=False,
            load_balancers=[spotinst.aws.ElastigroupItfLoadBalancerArgs(
                listener_rules=[spotinst.aws.ElastigroupItfLoadBalancerListenerRuleArgs(
                    rule_arn="string",
                    static_target_group=spotinst.aws.ElastigroupItfLoadBalancerListenerRuleStaticTargetGroupArgs(
                        arn="string",
                        percentage=0,
                    ),
                )],
                load_balancer_arn="string",
            )],
            target_group_configs=[spotinst.aws.ElastigroupItfTargetGroupConfigArgs(
                port=0,
                health_check_path="string",
                vpc_id="string",
                protocol="string",
                matchers=[spotinst.aws.ElastigroupItfTargetGroupConfigMatcherArgs(
                    grpc_code="string",
                    http_code="string",
                )],
                healthy_threshold_count=0,
                health_check_interval_seconds=0,
                health_check_timeout_seconds=0,
                health_check_protocol="string",
                protocol_version="string",
                tags=[spotinst.aws.ElastigroupItfTargetGroupConfigTagArgs(
                    tag_key="string",
                    tag_value="string",
                )],
                unhealthy_threshold_count=0,
                health_check_port="string",
            )],
            weight_strategy="string",
            default_static_target_group=spotinst.aws.ElastigroupItfDefaultStaticTargetGroupArgs(
                arn="string",
                percentage=0,
            ),
            migration_healthiness_threshold=0,
        )],
        key_name="string",
        lifetime_period="string",
        logging=spotinst.aws.ElastigroupLoggingArgs(
            export=spotinst.aws.ElastigroupLoggingExportArgs(
                s3s=[spotinst.aws.ElastigroupLoggingExportS3Args(
                    id="string",
                )],
            ),
        ),
        max_size=0,
        metadata_options=spotinst.aws.ElastigroupMetadataOptionsArgs(
            http_tokens="string",
            http_put_response_hop_limit=0,
            instance_metadata_tags="string",
        ),
        min_size=0,
        minimum_instance_lifetime=0,
        multiple_metrics=spotinst.aws.ElastigroupMultipleMetricsArgs(
            expressions=[spotinst.aws.ElastigroupMultipleMetricsExpressionArgs(
                expression="string",
                name="string",
            )],
            metrics=[spotinst.aws.ElastigroupMultipleMetricsMetricArgs(
                metric_name="string",
                name="string",
                namespace="string",
                dimensions=[spotinst.aws.ElastigroupMultipleMetricsMetricDimensionArgs(
                    name="string",
                    value="string",
                )],
                extended_statistic="string",
                statistic="string",
                unit="string",
            )],
        ),
        name="string",
        network_interfaces=[spotinst.aws.ElastigroupNetworkInterfaceArgs(
            device_index="string",
            associate_ipv6_address=False,
            associate_public_ip_address=False,
            delete_on_termination=False,
            description="string",
            network_interface_id="string",
            private_ip_address="string",
            secondary_private_ip_address_count="string",
        )],
        on_demand_types=["string"],
        ondemand_count=0,
        persist_block_devices=False,
        persist_private_ip=False,
        persist_root_device=False,
        placement_tenancy="string",
        preferred_availability_zones=["string"],
        private_ips=["string"],
        region="string",
        resource_requirements=[spotinst.aws.ElastigroupResourceRequirementArgs(
            required_memory_maximum=0,
            required_memory_minimum=0,
            required_vcpu_maximum=0,
            required_vcpu_minimum=0,
            excluded_instance_families=["string"],
            excluded_instance_generations=["string"],
            excluded_instance_types=["string"],
            required_gpu_maximum=0,
            required_gpu_minimum=0,
        )],
        resource_tag_specifications=[spotinst.aws.ElastigroupResourceTagSpecificationArgs(
            should_tag_amis=False,
            should_tag_enis=False,
            should_tag_snapshots=False,
            should_tag_volumes=False,
        )],
        revert_to_spot=spotinst.aws.ElastigroupRevertToSpotArgs(
            perform_at="string",
            time_windows=["string"],
        ),
        scaling_down_policies=[spotinst.aws.ElastigroupScalingDownPolicyArgs(
            metric_name="string",
            policy_name="string",
            namespace="string",
            minimum="string",
            operator="string",
            is_enabled=False,
            max_target_capacity="string",
            maximum="string",
            dimensions=[spotinst.aws.ElastigroupScalingDownPolicyDimensionArgs(
                name="string",
                value="string",
            )],
            min_target_capacity="string",
            action_type="string",
            cooldown=0,
            evaluation_periods=0,
            period=0,
            adjustment="string",
            source="string",
            statistic="string",
            step_adjustments=[spotinst.aws.ElastigroupScalingDownPolicyStepAdjustmentArgs(
                action=spotinst.aws.ElastigroupScalingDownPolicyStepAdjustmentActionArgs(
                    type="string",
                    adjustment="string",
                    max_target_capacity="string",
                    maximum="string",
                    min_target_capacity="string",
                    minimum="string",
                    target="string",
                ),
                threshold=0,
            )],
            target="string",
            threshold=0,
            unit="string",
        )],
        scaling_strategies=[spotinst.aws.ElastigroupScalingStrategyArgs(
            terminate_at_end_of_billing_hour=False,
            termination_policy="string",
        )],
        scaling_target_policies=[spotinst.aws.ElastigroupScalingTargetPolicyArgs(
            metric_name="string",
            target=0,
            policy_name="string",
            namespace="string",
            period=0,
            max_capacity_per_scale="string",
            cooldown=0,
            evaluation_periods=0,
            predictive_mode="string",
            source="string",
            statistic="string",
            dimensions=[spotinst.aws.ElastigroupScalingTargetPolicyDimensionArgs(
                name="string",
                value="string",
            )],
            unit="string",
        )],
        scaling_up_policies=[spotinst.aws.ElastigroupScalingUpPolicyArgs(
            metric_name="string",
            policy_name="string",
            namespace="string",
            minimum="string",
            operator="string",
            is_enabled=False,
            max_target_capacity="string",
            maximum="string",
            dimensions=[spotinst.aws.ElastigroupScalingUpPolicyDimensionArgs(
                name="string",
                value="string",
            )],
            min_target_capacity="string",
            action_type="string",
            cooldown=0,
            evaluation_periods=0,
            period=0,
            adjustment="string",
            source="string",
            statistic="string",
            step_adjustments=[spotinst.aws.ElastigroupScalingUpPolicyStepAdjustmentArgs(
                action=spotinst.aws.ElastigroupScalingUpPolicyStepAdjustmentActionArgs(
                    type="string",
                    adjustment="string",
                    max_target_capacity="string",
                    maximum="string",
                    min_target_capacity="string",
                    minimum="string",
                    target="string",
                ),
                threshold=0,
            )],
            target="string",
            threshold=0,
            unit="string",
        )],
        scheduled_tasks=[spotinst.aws.ElastigroupScheduledTaskArgs(
            task_type="string",
            is_enabled=False,
            min_capacity="string",
            cron_expression="string",
            frequency="string",
            grace_period="string",
            adjustment="string",
            max_capacity="string",
            batch_size_percentage="string",
            scale_max_capacity="string",
            scale_min_capacity="string",
            scale_target_capacity="string",
            start_time="string",
            target_capacity="string",
            adjustment_percentage="string",
        )],
        shutdown_script="string",
        signals=[spotinst.aws.ElastigroupSignalArgs(
            name="string",
            timeout=0,
        )],
        spot_percentage=0,
        stateful_deallocation=spotinst.aws.ElastigroupStatefulDeallocationArgs(
            should_delete_images=False,
            should_delete_network_interfaces=False,
            should_delete_snapshots=False,
            should_delete_volumes=False,
        ),
        stateful_instance_actions=[spotinst.aws.ElastigroupStatefulInstanceActionArgs(
            stateful_instance_id="string",
            type="string",
        )],
        subnet_ids=["string"],
        tags=[spotinst.aws.ElastigroupTagArgs(
            key="string",
            value="string",
        )],
        target_group_arns=["string"],
        update_policy=spotinst.aws.ElastigroupUpdatePolicyArgs(
            should_resume_stateful=False,
            should_roll=False,
            auto_apply_tags=False,
            roll_config=spotinst.aws.ElastigroupUpdatePolicyRollConfigArgs(
                batch_size_percentage=0,
                grace_period=0,
                health_check_type="string",
                strategy=spotinst.aws.ElastigroupUpdatePolicyRollConfigStrategyArgs(
                    action="string",
                    batch_min_healthy_percentage=0,
                    on_failure=spotinst.aws.ElastigroupUpdatePolicyRollConfigStrategyOnFailureArgs(
                        action_type="string",
                        batch_num=0,
                        draining_timeout=0,
                        should_decrement_target_capacity=False,
                        should_handle_all_batches=False,
                    ),
                    should_drain_instances=False,
                ),
                wait_for_roll_percentage=0,
                wait_for_roll_timeout=0,
            ),
        ),
        user_data="string",
        utilize_commitments=False,
        utilize_reserved_instances=False,
        wait_for_capacity=0,
        wait_for_capacity_timeout=0)
    
    const elastigroupResource = new spotinst.aws.Elastigroup("elastigroupResource", {
        fallbackToOndemand: false,
        orientation: "string",
        product: "string",
        securityGroups: ["string"],
        availabilityZones: ["string"],
        blockDevicesMode: "string",
        capacityUnit: "string",
        considerOdPricing: false,
        cpuCredits: "string",
        cpuOptions: {
            threadsPerCore: 0,
        },
        description: "string",
        desiredCapacity: 0,
        drainingTimeout: 0,
        ebsBlockDevices: [{
            deviceName: "string",
            deleteOnTermination: false,
            encrypted: false,
            iops: 0,
            kmsKeyId: "string",
            snapshotId: "string",
            throughput: 0,
            volumeSize: 0,
            volumeType: "string",
        }],
        ebsOptimized: false,
        elasticIps: ["string"],
        elasticLoadBalancers: ["string"],
        enableMonitoring: false,
        ephemeralBlockDevices: [{
            deviceName: "string",
            virtualName: "string",
        }],
        healthCheckGracePeriod: 0,
        healthCheckType: "string",
        healthCheckUnhealthyDurationBeforeReplacement: 0,
        iamInstanceProfile: "string",
        imageId: "string",
        images: [{
            images: [{
                id: "string",
            }],
        }],
        immediateOdRecoverThreshold: 0,
        instanceTypesOndemand: "string",
        instanceTypesPreferredSpots: ["string"],
        instanceTypesSpots: ["string"],
        instanceTypesWeights: [{
            instanceType: "string",
            weight: 0,
        }],
        integrationBeanstalk: {
            deploymentPreferences: {
                automaticRoll: false,
                batchSizePercentage: 0,
                gracePeriod: 0,
                strategy: {
                    action: "string",
                    shouldDrainInstances: false,
                },
            },
            environmentId: "string",
            managedActions: {
                platformUpdate: {
                    performAt: "string",
                    timeWindow: "string",
                    updateLevel: "string",
                },
            },
        },
        integrationCodedeploy: {
            cleanupOnFailure: false,
            deploymentGroups: [{
                applicationName: "string",
                deploymentGroupName: "string",
            }],
            terminateInstanceOnFailure: false,
        },
        integrationDockerSwarm: {
            masterHost: "string",
            masterPort: 0,
            autoscaleCooldown: 0,
            autoscaleDown: {
                evaluationPeriods: 0,
                maxScaleDownPercentage: 0,
            },
            autoscaleHeadroom: {
                cpuPerUnit: 0,
                memoryPerUnit: 0,
                numOfUnits: 0,
            },
            autoscaleIsEnabled: false,
        },
        integrationEcs: {
            clusterName: "string",
            autoscaleAttributes: [{
                key: "string",
                value: "string",
            }],
            autoscaleCooldown: 0,
            autoscaleDown: {
                evaluationPeriods: 0,
                maxScaleDownPercentage: 0,
            },
            autoscaleHeadroom: {
                cpuPerUnit: 0,
                memoryPerUnit: 0,
                numOfUnits: 0,
            },
            autoscaleIsAutoConfig: false,
            autoscaleIsEnabled: false,
            autoscaleScaleDownNonServiceTasks: false,
            batch: {
                jobQueueNames: ["string"],
            },
        },
        integrationGitlab: {
            runner: {
                isEnabled: false,
            },
        },
        integrationKubernetes: {
            apiServer: "string",
            autoscaleCooldown: 0,
            autoscaleDown: {
                evaluationPeriods: 0,
                maxScaleDownPercentage: 0,
            },
            autoscaleHeadroom: {
                cpuPerUnit: 0,
                memoryPerUnit: 0,
                numOfUnits: 0,
            },
            autoscaleIsAutoConfig: false,
            autoscaleIsEnabled: false,
            autoscaleLabels: [{
                key: "string",
                value: "string",
            }],
            clusterIdentifier: "string",
            integrationMode: "string",
            token: "string",
        },
        integrationMesosphere: {
            apiServer: "string",
        },
        integrationNomad: {
            masterHost: "string",
            masterPort: 0,
            aclToken: "string",
            autoscaleConstraints: [{
                key: "string",
                value: "string",
            }],
            autoscaleCooldown: 0,
            autoscaleDown: {
                evaluationPeriods: 0,
            },
            autoscaleHeadroom: {
                cpuPerUnit: 0,
                memoryPerUnit: 0,
                numOfUnits: 0,
            },
            autoscaleIsEnabled: false,
        },
        integrationRancher: {
            accessKey: "string",
            masterHost: "string",
            secretKey: "string",
            version: "string",
        },
        integrationRoute53: {
            domains: [{
                hostedZoneId: "string",
                recordSets: [{
                    name: "string",
                    usePublicDns: false,
                    usePublicIp: false,
                }],
                recordSetType: "string",
                spotinstAcctId: "string",
            }],
        },
        itfs: [{
            fixedTargetGroups: false,
            loadBalancers: [{
                listenerRules: [{
                    ruleArn: "string",
                    staticTargetGroup: {
                        arn: "string",
                        percentage: 0,
                    },
                }],
                loadBalancerArn: "string",
            }],
            targetGroupConfigs: [{
                port: 0,
                healthCheckPath: "string",
                vpcId: "string",
                protocol: "string",
                matchers: [{
                    grpcCode: "string",
                    httpCode: "string",
                }],
                healthyThresholdCount: 0,
                healthCheckIntervalSeconds: 0,
                healthCheckTimeoutSeconds: 0,
                healthCheckProtocol: "string",
                protocolVersion: "string",
                tags: [{
                    tagKey: "string",
                    tagValue: "string",
                }],
                unhealthyThresholdCount: 0,
                healthCheckPort: "string",
            }],
            weightStrategy: "string",
            defaultStaticTargetGroup: {
                arn: "string",
                percentage: 0,
            },
            migrationHealthinessThreshold: 0,
        }],
        keyName: "string",
        lifetimePeriod: "string",
        logging: {
            "export": {
                s3s: [{
                    id: "string",
                }],
            },
        },
        maxSize: 0,
        metadataOptions: {
            httpTokens: "string",
            httpPutResponseHopLimit: 0,
            instanceMetadataTags: "string",
        },
        minSize: 0,
        minimumInstanceLifetime: 0,
        multipleMetrics: {
            expressions: [{
                expression: "string",
                name: "string",
            }],
            metrics: [{
                metricName: "string",
                name: "string",
                namespace: "string",
                dimensions: [{
                    name: "string",
                    value: "string",
                }],
                extendedStatistic: "string",
                statistic: "string",
                unit: "string",
            }],
        },
        name: "string",
        networkInterfaces: [{
            deviceIndex: "string",
            associateIpv6Address: false,
            associatePublicIpAddress: false,
            deleteOnTermination: false,
            description: "string",
            networkInterfaceId: "string",
            privateIpAddress: "string",
            secondaryPrivateIpAddressCount: "string",
        }],
        onDemandTypes: ["string"],
        ondemandCount: 0,
        persistBlockDevices: false,
        persistPrivateIp: false,
        persistRootDevice: false,
        placementTenancy: "string",
        preferredAvailabilityZones: ["string"],
        privateIps: ["string"],
        region: "string",
        resourceRequirements: [{
            requiredMemoryMaximum: 0,
            requiredMemoryMinimum: 0,
            requiredVcpuMaximum: 0,
            requiredVcpuMinimum: 0,
            excludedInstanceFamilies: ["string"],
            excludedInstanceGenerations: ["string"],
            excludedInstanceTypes: ["string"],
            requiredGpuMaximum: 0,
            requiredGpuMinimum: 0,
        }],
        resourceTagSpecifications: [{
            shouldTagAmis: false,
            shouldTagEnis: false,
            shouldTagSnapshots: false,
            shouldTagVolumes: false,
        }],
        revertToSpot: {
            performAt: "string",
            timeWindows: ["string"],
        },
        scalingDownPolicies: [{
            metricName: "string",
            policyName: "string",
            namespace: "string",
            minimum: "string",
            operator: "string",
            isEnabled: false,
            maxTargetCapacity: "string",
            maximum: "string",
            dimensions: [{
                name: "string",
                value: "string",
            }],
            minTargetCapacity: "string",
            actionType: "string",
            cooldown: 0,
            evaluationPeriods: 0,
            period: 0,
            adjustment: "string",
            source: "string",
            statistic: "string",
            stepAdjustments: [{
                action: {
                    type: "string",
                    adjustment: "string",
                    maxTargetCapacity: "string",
                    maximum: "string",
                    minTargetCapacity: "string",
                    minimum: "string",
                    target: "string",
                },
                threshold: 0,
            }],
            target: "string",
            threshold: 0,
            unit: "string",
        }],
        scalingStrategies: [{
            terminateAtEndOfBillingHour: false,
            terminationPolicy: "string",
        }],
        scalingTargetPolicies: [{
            metricName: "string",
            target: 0,
            policyName: "string",
            namespace: "string",
            period: 0,
            maxCapacityPerScale: "string",
            cooldown: 0,
            evaluationPeriods: 0,
            predictiveMode: "string",
            source: "string",
            statistic: "string",
            dimensions: [{
                name: "string",
                value: "string",
            }],
            unit: "string",
        }],
        scalingUpPolicies: [{
            metricName: "string",
            policyName: "string",
            namespace: "string",
            minimum: "string",
            operator: "string",
            isEnabled: false,
            maxTargetCapacity: "string",
            maximum: "string",
            dimensions: [{
                name: "string",
                value: "string",
            }],
            minTargetCapacity: "string",
            actionType: "string",
            cooldown: 0,
            evaluationPeriods: 0,
            period: 0,
            adjustment: "string",
            source: "string",
            statistic: "string",
            stepAdjustments: [{
                action: {
                    type: "string",
                    adjustment: "string",
                    maxTargetCapacity: "string",
                    maximum: "string",
                    minTargetCapacity: "string",
                    minimum: "string",
                    target: "string",
                },
                threshold: 0,
            }],
            target: "string",
            threshold: 0,
            unit: "string",
        }],
        scheduledTasks: [{
            taskType: "string",
            isEnabled: false,
            minCapacity: "string",
            cronExpression: "string",
            frequency: "string",
            gracePeriod: "string",
            adjustment: "string",
            maxCapacity: "string",
            batchSizePercentage: "string",
            scaleMaxCapacity: "string",
            scaleMinCapacity: "string",
            scaleTargetCapacity: "string",
            startTime: "string",
            targetCapacity: "string",
            adjustmentPercentage: "string",
        }],
        shutdownScript: "string",
        signals: [{
            name: "string",
            timeout: 0,
        }],
        spotPercentage: 0,
        statefulDeallocation: {
            shouldDeleteImages: false,
            shouldDeleteNetworkInterfaces: false,
            shouldDeleteSnapshots: false,
            shouldDeleteVolumes: false,
        },
        statefulInstanceActions: [{
            statefulInstanceId: "string",
            type: "string",
        }],
        subnetIds: ["string"],
        tags: [{
            key: "string",
            value: "string",
        }],
        targetGroupArns: ["string"],
        updatePolicy: {
            shouldResumeStateful: false,
            shouldRoll: false,
            autoApplyTags: false,
            rollConfig: {
                batchSizePercentage: 0,
                gracePeriod: 0,
                healthCheckType: "string",
                strategy: {
                    action: "string",
                    batchMinHealthyPercentage: 0,
                    onFailure: {
                        actionType: "string",
                        batchNum: 0,
                        drainingTimeout: 0,
                        shouldDecrementTargetCapacity: false,
                        shouldHandleAllBatches: false,
                    },
                    shouldDrainInstances: false,
                },
                waitForRollPercentage: 0,
                waitForRollTimeout: 0,
            },
        },
        userData: "string",
        utilizeCommitments: false,
        utilizeReservedInstances: false,
        waitForCapacity: 0,
        waitForCapacityTimeout: 0,
    });
    
    type: spotinst:aws:Elastigroup
    properties:
        availabilityZones:
            - string
        blockDevicesMode: string
        capacityUnit: string
        considerOdPricing: false
        cpuCredits: string
        cpuOptions:
            threadsPerCore: 0
        description: string
        desiredCapacity: 0
        drainingTimeout: 0
        ebsBlockDevices:
            - deleteOnTermination: false
              deviceName: string
              encrypted: false
              iops: 0
              kmsKeyId: string
              snapshotId: string
              throughput: 0
              volumeSize: 0
              volumeType: string
        ebsOptimized: false
        elasticIps:
            - string
        elasticLoadBalancers:
            - string
        enableMonitoring: false
        ephemeralBlockDevices:
            - deviceName: string
              virtualName: string
        fallbackToOndemand: false
        healthCheckGracePeriod: 0
        healthCheckType: string
        healthCheckUnhealthyDurationBeforeReplacement: 0
        iamInstanceProfile: string
        imageId: string
        images:
            - images:
                - id: string
        immediateOdRecoverThreshold: 0
        instanceTypesOndemand: string
        instanceTypesPreferredSpots:
            - string
        instanceTypesSpots:
            - string
        instanceTypesWeights:
            - instanceType: string
              weight: 0
        integrationBeanstalk:
            deploymentPreferences:
                automaticRoll: false
                batchSizePercentage: 0
                gracePeriod: 0
                strategy:
                    action: string
                    shouldDrainInstances: false
            environmentId: string
            managedActions:
                platformUpdate:
                    performAt: string
                    timeWindow: string
                    updateLevel: string
        integrationCodedeploy:
            cleanupOnFailure: false
            deploymentGroups:
                - applicationName: string
                  deploymentGroupName: string
            terminateInstanceOnFailure: false
        integrationDockerSwarm:
            autoscaleCooldown: 0
            autoscaleDown:
                evaluationPeriods: 0
                maxScaleDownPercentage: 0
            autoscaleHeadroom:
                cpuPerUnit: 0
                memoryPerUnit: 0
                numOfUnits: 0
            autoscaleIsEnabled: false
            masterHost: string
            masterPort: 0
        integrationEcs:
            autoscaleAttributes:
                - key: string
                  value: string
            autoscaleCooldown: 0
            autoscaleDown:
                evaluationPeriods: 0
                maxScaleDownPercentage: 0
            autoscaleHeadroom:
                cpuPerUnit: 0
                memoryPerUnit: 0
                numOfUnits: 0
            autoscaleIsAutoConfig: false
            autoscaleIsEnabled: false
            autoscaleScaleDownNonServiceTasks: false
            batch:
                jobQueueNames:
                    - string
            clusterName: string
        integrationGitlab:
            runner:
                isEnabled: false
        integrationKubernetes:
            apiServer: string
            autoscaleCooldown: 0
            autoscaleDown:
                evaluationPeriods: 0
                maxScaleDownPercentage: 0
            autoscaleHeadroom:
                cpuPerUnit: 0
                memoryPerUnit: 0
                numOfUnits: 0
            autoscaleIsAutoConfig: false
            autoscaleIsEnabled: false
            autoscaleLabels:
                - key: string
                  value: string
            clusterIdentifier: string
            integrationMode: string
            token: string
        integrationMesosphere:
            apiServer: string
        integrationNomad:
            aclToken: string
            autoscaleConstraints:
                - key: string
                  value: string
            autoscaleCooldown: 0
            autoscaleDown:
                evaluationPeriods: 0
            autoscaleHeadroom:
                cpuPerUnit: 0
                memoryPerUnit: 0
                numOfUnits: 0
            autoscaleIsEnabled: false
            masterHost: string
            masterPort: 0
        integrationRancher:
            accessKey: string
            masterHost: string
            secretKey: string
            version: string
        integrationRoute53:
            domains:
                - hostedZoneId: string
                  recordSetType: string
                  recordSets:
                    - name: string
                      usePublicDns: false
                      usePublicIp: false
                  spotinstAcctId: string
        itfs:
            - defaultStaticTargetGroup:
                arn: string
                percentage: 0
              fixedTargetGroups: false
              loadBalancers:
                - listenerRules:
                    - ruleArn: string
                      staticTargetGroup:
                        arn: string
                        percentage: 0
                  loadBalancerArn: string
              migrationHealthinessThreshold: 0
              targetGroupConfigs:
                - healthCheckIntervalSeconds: 0
                  healthCheckPath: string
                  healthCheckPort: string
                  healthCheckProtocol: string
                  healthCheckTimeoutSeconds: 0
                  healthyThresholdCount: 0
                  matchers:
                    - grpcCode: string
                      httpCode: string
                  port: 0
                  protocol: string
                  protocolVersion: string
                  tags:
                    - tagKey: string
                      tagValue: string
                  unhealthyThresholdCount: 0
                  vpcId: string
              weightStrategy: string
        keyName: string
        lifetimePeriod: string
        logging:
            export:
                s3s:
                    - id: string
        maxSize: 0
        metadataOptions:
            httpPutResponseHopLimit: 0
            httpTokens: string
            instanceMetadataTags: string
        minSize: 0
        minimumInstanceLifetime: 0
        multipleMetrics:
            expressions:
                - expression: string
                  name: string
            metrics:
                - dimensions:
                    - name: string
                      value: string
                  extendedStatistic: string
                  metricName: string
                  name: string
                  namespace: string
                  statistic: string
                  unit: string
        name: string
        networkInterfaces:
            - associateIpv6Address: false
              associatePublicIpAddress: false
              deleteOnTermination: false
              description: string
              deviceIndex: string
              networkInterfaceId: string
              privateIpAddress: string
              secondaryPrivateIpAddressCount: string
        onDemandTypes:
            - string
        ondemandCount: 0
        orientation: string
        persistBlockDevices: false
        persistPrivateIp: false
        persistRootDevice: false
        placementTenancy: string
        preferredAvailabilityZones:
            - string
        privateIps:
            - string
        product: string
        region: string
        resourceRequirements:
            - excludedInstanceFamilies:
                - string
              excludedInstanceGenerations:
                - string
              excludedInstanceTypes:
                - string
              requiredGpuMaximum: 0
              requiredGpuMinimum: 0
              requiredMemoryMaximum: 0
              requiredMemoryMinimum: 0
              requiredVcpuMaximum: 0
              requiredVcpuMinimum: 0
        resourceTagSpecifications:
            - shouldTagAmis: false
              shouldTagEnis: false
              shouldTagSnapshots: false
              shouldTagVolumes: false
        revertToSpot:
            performAt: string
            timeWindows:
                - string
        scalingDownPolicies:
            - actionType: string
              adjustment: string
              cooldown: 0
              dimensions:
                - name: string
                  value: string
              evaluationPeriods: 0
              isEnabled: false
              maxTargetCapacity: string
              maximum: string
              metricName: string
              minTargetCapacity: string
              minimum: string
              namespace: string
              operator: string
              period: 0
              policyName: string
              source: string
              statistic: string
              stepAdjustments:
                - action:
                    adjustment: string
                    maxTargetCapacity: string
                    maximum: string
                    minTargetCapacity: string
                    minimum: string
                    target: string
                    type: string
                  threshold: 0
              target: string
              threshold: 0
              unit: string
        scalingStrategies:
            - terminateAtEndOfBillingHour: false
              terminationPolicy: string
        scalingTargetPolicies:
            - cooldown: 0
              dimensions:
                - name: string
                  value: string
              evaluationPeriods: 0
              maxCapacityPerScale: string
              metricName: string
              namespace: string
              period: 0
              policyName: string
              predictiveMode: string
              source: string
              statistic: string
              target: 0
              unit: string
        scalingUpPolicies:
            - actionType: string
              adjustment: string
              cooldown: 0
              dimensions:
                - name: string
                  value: string
              evaluationPeriods: 0
              isEnabled: false
              maxTargetCapacity: string
              maximum: string
              metricName: string
              minTargetCapacity: string
              minimum: string
              namespace: string
              operator: string
              period: 0
              policyName: string
              source: string
              statistic: string
              stepAdjustments:
                - action:
                    adjustment: string
                    maxTargetCapacity: string
                    maximum: string
                    minTargetCapacity: string
                    minimum: string
                    target: string
                    type: string
                  threshold: 0
              target: string
              threshold: 0
              unit: string
        scheduledTasks:
            - adjustment: string
              adjustmentPercentage: string
              batchSizePercentage: string
              cronExpression: string
              frequency: string
              gracePeriod: string
              isEnabled: false
              maxCapacity: string
              minCapacity: string
              scaleMaxCapacity: string
              scaleMinCapacity: string
              scaleTargetCapacity: string
              startTime: string
              targetCapacity: string
              taskType: string
        securityGroups:
            - string
        shutdownScript: string
        signals:
            - name: string
              timeout: 0
        spotPercentage: 0
        statefulDeallocation:
            shouldDeleteImages: false
            shouldDeleteNetworkInterfaces: false
            shouldDeleteSnapshots: false
            shouldDeleteVolumes: false
        statefulInstanceActions:
            - statefulInstanceId: string
              type: string
        subnetIds:
            - string
        tags:
            - key: string
              value: string
        targetGroupArns:
            - string
        updatePolicy:
            autoApplyTags: false
            rollConfig:
                batchSizePercentage: 0
                gracePeriod: 0
                healthCheckType: string
                strategy:
                    action: string
                    batchMinHealthyPercentage: 0
                    onFailure:
                        actionType: string
                        batchNum: 0
                        drainingTimeout: 0
                        shouldDecrementTargetCapacity: false
                        shouldHandleAllBatches: false
                    shouldDrainInstances: false
                waitForRollPercentage: 0
                waitForRollTimeout: 0
            shouldResumeStateful: false
            shouldRoll: false
        userData: string
        utilizeCommitments: false
        utilizeReservedInstances: false
        waitForCapacity: 0
        waitForCapacityTimeout: 0
    

    Elastigroup Resource Properties

    To learn more about resource properties and how to use them, see Inputs and Outputs in the Architecture and Concepts docs.

    Inputs

    The Elastigroup resource accepts the following input properties:

    FallbackToOndemand bool
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    Orientation string
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    Product string
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    SecurityGroups List<string>
    A list of associated security group IDS.
    AvailabilityZones List<string>
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    BlockDevicesMode string
    CapacityUnit string
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    ConsiderOdPricing bool
    CpuCredits string
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    CpuOptions Pulumi.SpotInst.Aws.Inputs.ElastigroupCpuOptions
    The CPU options for the instances that are launched within the group:
    Description string
    The group description.
    DesiredCapacity int
    The desired number of instances the group should have at any time.
    DrainingTimeout int
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    EbsBlockDevices List<Pulumi.SpotInst.Aws.Inputs.ElastigroupEbsBlockDevice>
    EbsOptimized bool
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    ElasticIps List<string>
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    ElasticLoadBalancers List<string>
    EnableMonitoring bool
    Indicates whether monitoring is enabled for the instance.
    EphemeralBlockDevices List<Pulumi.SpotInst.Aws.Inputs.ElastigroupEphemeralBlockDevice>
    HealthCheckGracePeriod int
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    HealthCheckType string
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    HealthCheckUnhealthyDurationBeforeReplacement int
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    IamInstanceProfile string
    The ARN or name of an IAM instance profile to associate with launched instances.
    ImageId string
    The ID of the AMI used to launch the instance.
    Images List<Pulumi.SpotInst.Aws.Inputs.ElastigroupImage>
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    ImmediateOdRecoverThreshold int
    InstanceTypesOndemand string
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    InstanceTypesPreferredSpots List<string>
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    InstanceTypesSpots List<string>
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    InstanceTypesWeights List<Pulumi.SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeight>
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    IntegrationBeanstalk Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalk
    IntegrationCodedeploy Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationCodedeploy
    IntegrationDockerSwarm Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationDockerSwarm
    IntegrationEcs Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationEcs
    IntegrationGitlab Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationGitlab
    IntegrationKubernetes Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationKubernetes
    IntegrationMesosphere Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationMesosphere
    IntegrationNomad Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationNomad
    IntegrationRancher Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationRancher
    IntegrationRoute53 Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationRoute53
    Itfs List<Pulumi.SpotInst.Aws.Inputs.ElastigroupItf>
    KeyName string
    The key name that should be used for the instance.
    LifetimePeriod string
    Logging Pulumi.SpotInst.Aws.Inputs.ElastigroupLogging
    Logging configuration.
    MaxSize int
    The maximum number of instances the group should have at any time.
    MetadataOptions Pulumi.SpotInst.Aws.Inputs.ElastigroupMetadataOptions
    Data that used to configure or manage the running instances:
    MinSize int
    The minimum number of instances the group should have at any time.
    MinimumInstanceLifetime int
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    MultipleMetrics Pulumi.SpotInst.Aws.Inputs.ElastigroupMultipleMetrics
    Name string
    The group name.
    NetworkInterfaces List<Pulumi.SpotInst.Aws.Inputs.ElastigroupNetworkInterface>
    OnDemandTypes List<string>
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    OndemandCount int
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    PersistBlockDevices bool
    PersistPrivateIp bool
    PersistRootDevice bool
    PlacementTenancy string
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    PreferredAvailabilityZones List<string>
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    PrivateIps List<string>
    Region string
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    ResourceRequirements List<Pulumi.SpotInst.Aws.Inputs.ElastigroupResourceRequirement>
    Required instance attributes. Instance types will be selected based on these requirements.
    ResourceTagSpecifications List<Pulumi.SpotInst.Aws.Inputs.ElastigroupResourceTagSpecification>
    User will specify which resources should be tagged with group tags.
    RevertToSpot Pulumi.SpotInst.Aws.Inputs.ElastigroupRevertToSpot
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    ScalingDownPolicies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingDownPolicy>
    ScalingStrategies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingStrategy>
    Set termination policy.
    ScalingTargetPolicies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingTargetPolicy>
    ScalingUpPolicies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingUpPolicy>
    ScheduledTasks List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScheduledTask>
    ShutdownScript string
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    Signals List<Pulumi.SpotInst.Aws.Inputs.ElastigroupSignal>
    SpotPercentage int
    The percentage of Spot instances that would spin up from the desired_capacity number.
    StatefulDeallocation Pulumi.SpotInst.Aws.Inputs.ElastigroupStatefulDeallocation
    StatefulInstanceActions List<Pulumi.SpotInst.Aws.Inputs.ElastigroupStatefulInstanceAction>
    SubnetIds List<string>
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    Tags List<Pulumi.SpotInst.Aws.Inputs.ElastigroupTag>
    A key/value mapping of tags to assign to the resource.
    TargetGroupArns List<string>
    UpdatePolicy Pulumi.SpotInst.Aws.Inputs.ElastigroupUpdatePolicy
    UserData string
    The user data to provide when launching the instance.
    UtilizeCommitments bool
    UtilizeReservedInstances bool
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    WaitForCapacity int
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    WaitForCapacityTimeout int
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.
    FallbackToOndemand bool
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    Orientation string
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    Product string
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    SecurityGroups []string
    A list of associated security group IDS.
    AvailabilityZones []string
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    BlockDevicesMode string
    CapacityUnit string
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    ConsiderOdPricing bool
    CpuCredits string
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    CpuOptions ElastigroupCpuOptionsArgs
    The CPU options for the instances that are launched within the group:
    Description string
    The group description.
    DesiredCapacity int
    The desired number of instances the group should have at any time.
    DrainingTimeout int
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    EbsBlockDevices []ElastigroupEbsBlockDeviceArgs
    EbsOptimized bool
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    ElasticIps []string
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    ElasticLoadBalancers []string
    EnableMonitoring bool
    Indicates whether monitoring is enabled for the instance.
    EphemeralBlockDevices []ElastigroupEphemeralBlockDeviceArgs
    HealthCheckGracePeriod int
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    HealthCheckType string
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    HealthCheckUnhealthyDurationBeforeReplacement int
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    IamInstanceProfile string
    The ARN or name of an IAM instance profile to associate with launched instances.
    ImageId string
    The ID of the AMI used to launch the instance.
    Images []ElastigroupImageArgs
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    ImmediateOdRecoverThreshold int
    InstanceTypesOndemand string
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    InstanceTypesPreferredSpots []string
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    InstanceTypesSpots []string
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    InstanceTypesWeights []ElastigroupInstanceTypesWeightArgs
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    IntegrationBeanstalk ElastigroupIntegrationBeanstalkArgs
    IntegrationCodedeploy ElastigroupIntegrationCodedeployArgs
    IntegrationDockerSwarm ElastigroupIntegrationDockerSwarmArgs
    IntegrationEcs ElastigroupIntegrationEcsArgs
    IntegrationGitlab ElastigroupIntegrationGitlabArgs
    IntegrationKubernetes ElastigroupIntegrationKubernetesArgs
    IntegrationMesosphere ElastigroupIntegrationMesosphereArgs
    IntegrationNomad ElastigroupIntegrationNomadArgs
    IntegrationRancher ElastigroupIntegrationRancherArgs
    IntegrationRoute53 ElastigroupIntegrationRoute53Args
    Itfs []ElastigroupItfArgs
    KeyName string
    The key name that should be used for the instance.
    LifetimePeriod string
    Logging ElastigroupLoggingArgs
    Logging configuration.
    MaxSize int
    The maximum number of instances the group should have at any time.
    MetadataOptions ElastigroupMetadataOptionsArgs
    Data that used to configure or manage the running instances:
    MinSize int
    The minimum number of instances the group should have at any time.
    MinimumInstanceLifetime int
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    MultipleMetrics ElastigroupMultipleMetricsArgs
    Name string
    The group name.
    NetworkInterfaces []ElastigroupNetworkInterfaceArgs
    OnDemandTypes []string
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    OndemandCount int
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    PersistBlockDevices bool
    PersistPrivateIp bool
    PersistRootDevice bool
    PlacementTenancy string
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    PreferredAvailabilityZones []string
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    PrivateIps []string
    Region string
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    ResourceRequirements []ElastigroupResourceRequirementArgs
    Required instance attributes. Instance types will be selected based on these requirements.
    ResourceTagSpecifications []ElastigroupResourceTagSpecificationArgs
    User will specify which resources should be tagged with group tags.
    RevertToSpot ElastigroupRevertToSpotArgs
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    ScalingDownPolicies []ElastigroupScalingDownPolicyArgs
    ScalingStrategies []ElastigroupScalingStrategyArgs
    Set termination policy.
    ScalingTargetPolicies []ElastigroupScalingTargetPolicyArgs
    ScalingUpPolicies []ElastigroupScalingUpPolicyArgs
    ScheduledTasks []ElastigroupScheduledTaskArgs
    ShutdownScript string
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    Signals []ElastigroupSignalArgs
    SpotPercentage int
    The percentage of Spot instances that would spin up from the desired_capacity number.
    StatefulDeallocation ElastigroupStatefulDeallocationArgs
    StatefulInstanceActions []ElastigroupStatefulInstanceActionArgs
    SubnetIds []string
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    Tags []ElastigroupTagArgs
    A key/value mapping of tags to assign to the resource.
    TargetGroupArns []string
    UpdatePolicy ElastigroupUpdatePolicyArgs
    UserData string
    The user data to provide when launching the instance.
    UtilizeCommitments bool
    UtilizeReservedInstances bool
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    WaitForCapacity int
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    WaitForCapacityTimeout int
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.
    fallbackToOndemand Boolean
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    orientation String
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    product String
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    securityGroups List<String>
    A list of associated security group IDS.
    availabilityZones List<String>
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    blockDevicesMode String
    capacityUnit String
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    considerOdPricing Boolean
    cpuCredits String
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    cpuOptions ElastigroupCpuOptions
    The CPU options for the instances that are launched within the group:
    description String
    The group description.
    desiredCapacity Integer
    The desired number of instances the group should have at any time.
    drainingTimeout Integer
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    ebsBlockDevices List<ElastigroupEbsBlockDevice>
    ebsOptimized Boolean
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    elasticIps List<String>
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    elasticLoadBalancers List<String>
    enableMonitoring Boolean
    Indicates whether monitoring is enabled for the instance.
    ephemeralBlockDevices List<ElastigroupEphemeralBlockDevice>
    healthCheckGracePeriod Integer
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    healthCheckType String
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    healthCheckUnhealthyDurationBeforeReplacement Integer
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    iamInstanceProfile String
    The ARN or name of an IAM instance profile to associate with launched instances.
    imageId String
    The ID of the AMI used to launch the instance.
    images List<ElastigroupImage>
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    immediateOdRecoverThreshold Integer
    instanceTypesOndemand String
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    instanceTypesPreferredSpots List<String>
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    instanceTypesSpots List<String>
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    instanceTypesWeights List<ElastigroupInstanceTypesWeight>
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    integrationBeanstalk ElastigroupIntegrationBeanstalk
    integrationCodedeploy ElastigroupIntegrationCodedeploy
    integrationDockerSwarm ElastigroupIntegrationDockerSwarm
    integrationEcs ElastigroupIntegrationEcs
    integrationGitlab ElastigroupIntegrationGitlab
    integrationKubernetes ElastigroupIntegrationKubernetes
    integrationMesosphere ElastigroupIntegrationMesosphere
    integrationNomad ElastigroupIntegrationNomad
    integrationRancher ElastigroupIntegrationRancher
    integrationRoute53 ElastigroupIntegrationRoute53
    itfs List<ElastigroupItf>
    keyName String
    The key name that should be used for the instance.
    lifetimePeriod String
    logging ElastigroupLogging
    Logging configuration.
    maxSize Integer
    The maximum number of instances the group should have at any time.
    metadataOptions ElastigroupMetadataOptions
    Data that used to configure or manage the running instances:
    minSize Integer
    The minimum number of instances the group should have at any time.
    minimumInstanceLifetime Integer
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    multipleMetrics ElastigroupMultipleMetrics
    name String
    The group name.
    networkInterfaces List<ElastigroupNetworkInterface>
    onDemandTypes List<String>
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    ondemandCount Integer
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    persistBlockDevices Boolean
    persistPrivateIp Boolean
    persistRootDevice Boolean
    placementTenancy String
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    preferredAvailabilityZones List<String>
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    privateIps List<String>
    region String
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    resourceRequirements List<ElastigroupResourceRequirement>
    Required instance attributes. Instance types will be selected based on these requirements.
    resourceTagSpecifications List<ElastigroupResourceTagSpecification>
    User will specify which resources should be tagged with group tags.
    revertToSpot ElastigroupRevertToSpot
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    scalingDownPolicies List<ElastigroupScalingDownPolicy>
    scalingStrategies List<ElastigroupScalingStrategy>
    Set termination policy.
    scalingTargetPolicies List<ElastigroupScalingTargetPolicy>
    scalingUpPolicies List<ElastigroupScalingUpPolicy>
    scheduledTasks List<ElastigroupScheduledTask>
    shutdownScript String
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    signals List<ElastigroupSignal>
    spotPercentage Integer
    The percentage of Spot instances that would spin up from the desired_capacity number.
    statefulDeallocation ElastigroupStatefulDeallocation
    statefulInstanceActions List<ElastigroupStatefulInstanceAction>
    subnetIds List<String>
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    tags List<ElastigroupTag>
    A key/value mapping of tags to assign to the resource.
    targetGroupArns List<String>
    updatePolicy ElastigroupUpdatePolicy
    userData String
    The user data to provide when launching the instance.
    utilizeCommitments Boolean
    utilizeReservedInstances Boolean
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    waitForCapacity Integer
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    waitForCapacityTimeout Integer
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.
    fallbackToOndemand boolean
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    orientation string
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    product string
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    securityGroups string[]
    A list of associated security group IDS.
    availabilityZones string[]
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    blockDevicesMode string
    capacityUnit string
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    considerOdPricing boolean
    cpuCredits string
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    cpuOptions ElastigroupCpuOptions
    The CPU options for the instances that are launched within the group:
    description string
    The group description.
    desiredCapacity number
    The desired number of instances the group should have at any time.
    drainingTimeout number
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    ebsBlockDevices ElastigroupEbsBlockDevice[]
    ebsOptimized boolean
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    elasticIps string[]
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    elasticLoadBalancers string[]
    enableMonitoring boolean
    Indicates whether monitoring is enabled for the instance.
    ephemeralBlockDevices ElastigroupEphemeralBlockDevice[]
    healthCheckGracePeriod number
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    healthCheckType string
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    healthCheckUnhealthyDurationBeforeReplacement number
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    iamInstanceProfile string
    The ARN or name of an IAM instance profile to associate with launched instances.
    imageId string
    The ID of the AMI used to launch the instance.
    images ElastigroupImage[]
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    immediateOdRecoverThreshold number
    instanceTypesOndemand string
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    instanceTypesPreferredSpots string[]
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    instanceTypesSpots string[]
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    instanceTypesWeights ElastigroupInstanceTypesWeight[]
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    integrationBeanstalk ElastigroupIntegrationBeanstalk
    integrationCodedeploy ElastigroupIntegrationCodedeploy
    integrationDockerSwarm ElastigroupIntegrationDockerSwarm
    integrationEcs ElastigroupIntegrationEcs
    integrationGitlab ElastigroupIntegrationGitlab
    integrationKubernetes ElastigroupIntegrationKubernetes
    integrationMesosphere ElastigroupIntegrationMesosphere
    integrationNomad ElastigroupIntegrationNomad
    integrationRancher ElastigroupIntegrationRancher
    integrationRoute53 ElastigroupIntegrationRoute53
    itfs ElastigroupItf[]
    keyName string
    The key name that should be used for the instance.
    lifetimePeriod string
    logging ElastigroupLogging
    Logging configuration.
    maxSize number
    The maximum number of instances the group should have at any time.
    metadataOptions ElastigroupMetadataOptions
    Data that used to configure or manage the running instances:
    minSize number
    The minimum number of instances the group should have at any time.
    minimumInstanceLifetime number
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    multipleMetrics ElastigroupMultipleMetrics
    name string
    The group name.
    networkInterfaces ElastigroupNetworkInterface[]
    onDemandTypes string[]
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    ondemandCount number
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    persistBlockDevices boolean
    persistPrivateIp boolean
    persistRootDevice boolean
    placementTenancy string
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    preferredAvailabilityZones string[]
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    privateIps string[]
    region string
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    resourceRequirements ElastigroupResourceRequirement[]
    Required instance attributes. Instance types will be selected based on these requirements.
    resourceTagSpecifications ElastigroupResourceTagSpecification[]
    User will specify which resources should be tagged with group tags.
    revertToSpot ElastigroupRevertToSpot
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    scalingDownPolicies ElastigroupScalingDownPolicy[]
    scalingStrategies ElastigroupScalingStrategy[]
    Set termination policy.
    scalingTargetPolicies ElastigroupScalingTargetPolicy[]
    scalingUpPolicies ElastigroupScalingUpPolicy[]
    scheduledTasks ElastigroupScheduledTask[]
    shutdownScript string
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    signals ElastigroupSignal[]
    spotPercentage number
    The percentage of Spot instances that would spin up from the desired_capacity number.
    statefulDeallocation ElastigroupStatefulDeallocation
    statefulInstanceActions ElastigroupStatefulInstanceAction[]
    subnetIds string[]
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    tags ElastigroupTag[]
    A key/value mapping of tags to assign to the resource.
    targetGroupArns string[]
    updatePolicy ElastigroupUpdatePolicy
    userData string
    The user data to provide when launching the instance.
    utilizeCommitments boolean
    utilizeReservedInstances boolean
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    waitForCapacity number
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    waitForCapacityTimeout number
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.
    fallback_to_ondemand bool
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    orientation str
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    product str
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    security_groups Sequence[str]
    A list of associated security group IDS.
    availability_zones Sequence[str]
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    block_devices_mode str
    capacity_unit str
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    consider_od_pricing bool
    cpu_credits str
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    cpu_options ElastigroupCpuOptionsArgs
    The CPU options for the instances that are launched within the group:
    description str
    The group description.
    desired_capacity int
    The desired number of instances the group should have at any time.
    draining_timeout int
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    ebs_block_devices Sequence[ElastigroupEbsBlockDeviceArgs]
    ebs_optimized bool
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    elastic_ips Sequence[str]
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    elastic_load_balancers Sequence[str]
    enable_monitoring bool
    Indicates whether monitoring is enabled for the instance.
    ephemeral_block_devices Sequence[ElastigroupEphemeralBlockDeviceArgs]
    health_check_grace_period int
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    health_check_type str
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    health_check_unhealthy_duration_before_replacement int
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    iam_instance_profile str
    The ARN or name of an IAM instance profile to associate with launched instances.
    image_id str
    The ID of the AMI used to launch the instance.
    images Sequence[ElastigroupImageArgs]
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    immediate_od_recover_threshold int
    instance_types_ondemand str
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    instance_types_preferred_spots Sequence[str]
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    instance_types_spots Sequence[str]
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    instance_types_weights Sequence[ElastigroupInstanceTypesWeightArgs]
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    integration_beanstalk ElastigroupIntegrationBeanstalkArgs
    integration_codedeploy ElastigroupIntegrationCodedeployArgs
    integration_docker_swarm ElastigroupIntegrationDockerSwarmArgs
    integration_ecs ElastigroupIntegrationEcsArgs
    integration_gitlab ElastigroupIntegrationGitlabArgs
    integration_kubernetes ElastigroupIntegrationKubernetesArgs
    integration_mesosphere ElastigroupIntegrationMesosphereArgs
    integration_nomad ElastigroupIntegrationNomadArgs
    integration_rancher ElastigroupIntegrationRancherArgs
    integration_route53 ElastigroupIntegrationRoute53Args
    itfs Sequence[ElastigroupItfArgs]
    key_name str
    The key name that should be used for the instance.
    lifetime_period str
    logging ElastigroupLoggingArgs
    Logging configuration.
    max_size int
    The maximum number of instances the group should have at any time.
    metadata_options ElastigroupMetadataOptionsArgs
    Data that used to configure or manage the running instances:
    min_size int
    The minimum number of instances the group should have at any time.
    minimum_instance_lifetime int
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    multiple_metrics ElastigroupMultipleMetricsArgs
    name str
    The group name.
    network_interfaces Sequence[ElastigroupNetworkInterfaceArgs]
    on_demand_types Sequence[str]
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    ondemand_count int
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    persist_block_devices bool
    persist_private_ip bool
    persist_root_device bool
    placement_tenancy str
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    preferred_availability_zones Sequence[str]
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    private_ips Sequence[str]
    region str
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    resource_requirements Sequence[ElastigroupResourceRequirementArgs]
    Required instance attributes. Instance types will be selected based on these requirements.
    resource_tag_specifications Sequence[ElastigroupResourceTagSpecificationArgs]
    User will specify which resources should be tagged with group tags.
    revert_to_spot ElastigroupRevertToSpotArgs
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    scaling_down_policies Sequence[ElastigroupScalingDownPolicyArgs]
    scaling_strategies Sequence[ElastigroupScalingStrategyArgs]
    Set termination policy.
    scaling_target_policies Sequence[ElastigroupScalingTargetPolicyArgs]
    scaling_up_policies Sequence[ElastigroupScalingUpPolicyArgs]
    scheduled_tasks Sequence[ElastigroupScheduledTaskArgs]
    shutdown_script str
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    signals Sequence[ElastigroupSignalArgs]
    spot_percentage int
    The percentage of Spot instances that would spin up from the desired_capacity number.
    stateful_deallocation ElastigroupStatefulDeallocationArgs
    stateful_instance_actions Sequence[ElastigroupStatefulInstanceActionArgs]
    subnet_ids Sequence[str]
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    tags Sequence[ElastigroupTagArgs]
    A key/value mapping of tags to assign to the resource.
    target_group_arns Sequence[str]
    update_policy ElastigroupUpdatePolicyArgs
    user_data str
    The user data to provide when launching the instance.
    utilize_commitments bool
    utilize_reserved_instances bool
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    wait_for_capacity int
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    wait_for_capacity_timeout int
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.
    fallbackToOndemand Boolean
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    orientation String
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    product String
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    securityGroups List<String>
    A list of associated security group IDS.
    availabilityZones List<String>
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    blockDevicesMode String
    capacityUnit String
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    considerOdPricing Boolean
    cpuCredits String
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    cpuOptions Property Map
    The CPU options for the instances that are launched within the group:
    description String
    The group description.
    desiredCapacity Number
    The desired number of instances the group should have at any time.
    drainingTimeout Number
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    ebsBlockDevices List<Property Map>
    ebsOptimized Boolean
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    elasticIps List<String>
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    elasticLoadBalancers List<String>
    enableMonitoring Boolean
    Indicates whether monitoring is enabled for the instance.
    ephemeralBlockDevices List<Property Map>
    healthCheckGracePeriod Number
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    healthCheckType String
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    healthCheckUnhealthyDurationBeforeReplacement Number
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    iamInstanceProfile String
    The ARN or name of an IAM instance profile to associate with launched instances.
    imageId String
    The ID of the AMI used to launch the instance.
    images List<Property Map>
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    immediateOdRecoverThreshold Number
    instanceTypesOndemand String
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    instanceTypesPreferredSpots List<String>
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    instanceTypesSpots List<String>
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    instanceTypesWeights List<Property Map>
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    integrationBeanstalk Property Map
    integrationCodedeploy Property Map
    integrationDockerSwarm Property Map
    integrationEcs Property Map
    integrationGitlab Property Map
    integrationKubernetes Property Map
    integrationMesosphere Property Map
    integrationNomad Property Map
    integrationRancher Property Map
    integrationRoute53 Property Map
    itfs List<Property Map>
    keyName String
    The key name that should be used for the instance.
    lifetimePeriod String
    logging Property Map
    Logging configuration.
    maxSize Number
    The maximum number of instances the group should have at any time.
    metadataOptions Property Map
    Data that used to configure or manage the running instances:
    minSize Number
    The minimum number of instances the group should have at any time.
    minimumInstanceLifetime Number
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    multipleMetrics Property Map
    name String
    The group name.
    networkInterfaces List<Property Map>
    onDemandTypes List<String>
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    ondemandCount Number
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    persistBlockDevices Boolean
    persistPrivateIp Boolean
    persistRootDevice Boolean
    placementTenancy String
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    preferredAvailabilityZones List<String>
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    privateIps List<String>
    region String
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    resourceRequirements List<Property Map>
    Required instance attributes. Instance types will be selected based on these requirements.
    resourceTagSpecifications List<Property Map>
    User will specify which resources should be tagged with group tags.
    revertToSpot Property Map
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    scalingDownPolicies List<Property Map>
    scalingStrategies List<Property Map>
    Set termination policy.
    scalingTargetPolicies List<Property Map>
    scalingUpPolicies List<Property Map>
    scheduledTasks List<Property Map>
    shutdownScript String
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    signals List<Property Map>
    spotPercentage Number
    The percentage of Spot instances that would spin up from the desired_capacity number.
    statefulDeallocation Property Map
    statefulInstanceActions List<Property Map>
    subnetIds List<String>
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    tags List<Property Map>
    A key/value mapping of tags to assign to the resource.
    targetGroupArns List<String>
    updatePolicy Property Map
    userData String
    The user data to provide when launching the instance.
    utilizeCommitments Boolean
    utilizeReservedInstances Boolean
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    waitForCapacity Number
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    waitForCapacityTimeout Number
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.

    Outputs

    All input properties are implicitly available as output properties. Additionally, the Elastigroup resource produces the following output properties:

    Id string
    The provider-assigned unique ID for this managed resource.
    Id string
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.
    id string
    The provider-assigned unique ID for this managed resource.
    id str
    The provider-assigned unique ID for this managed resource.
    id String
    The provider-assigned unique ID for this managed resource.

    Look up Existing Elastigroup Resource

    Get an existing Elastigroup resource’s state with the given name, ID, and optional extra properties used to qualify the lookup.

    public static get(name: string, id: Input<ID>, state?: ElastigroupState, opts?: CustomResourceOptions): Elastigroup
    @staticmethod
    def get(resource_name: str,
            id: str,
            opts: Optional[ResourceOptions] = None,
            availability_zones: Optional[Sequence[str]] = None,
            block_devices_mode: Optional[str] = None,
            capacity_unit: Optional[str] = None,
            consider_od_pricing: Optional[bool] = None,
            cpu_credits: Optional[str] = None,
            cpu_options: Optional[ElastigroupCpuOptionsArgs] = None,
            description: Optional[str] = None,
            desired_capacity: Optional[int] = None,
            draining_timeout: Optional[int] = None,
            ebs_block_devices: Optional[Sequence[ElastigroupEbsBlockDeviceArgs]] = None,
            ebs_optimized: Optional[bool] = None,
            elastic_ips: Optional[Sequence[str]] = None,
            elastic_load_balancers: Optional[Sequence[str]] = None,
            enable_monitoring: Optional[bool] = None,
            ephemeral_block_devices: Optional[Sequence[ElastigroupEphemeralBlockDeviceArgs]] = None,
            fallback_to_ondemand: Optional[bool] = None,
            health_check_grace_period: Optional[int] = None,
            health_check_type: Optional[str] = None,
            health_check_unhealthy_duration_before_replacement: Optional[int] = None,
            iam_instance_profile: Optional[str] = None,
            image_id: Optional[str] = None,
            images: Optional[Sequence[ElastigroupImageArgs]] = None,
            immediate_od_recover_threshold: Optional[int] = None,
            instance_types_ondemand: Optional[str] = None,
            instance_types_preferred_spots: Optional[Sequence[str]] = None,
            instance_types_spots: Optional[Sequence[str]] = None,
            instance_types_weights: Optional[Sequence[ElastigroupInstanceTypesWeightArgs]] = None,
            integration_beanstalk: Optional[ElastigroupIntegrationBeanstalkArgs] = None,
            integration_codedeploy: Optional[ElastigroupIntegrationCodedeployArgs] = None,
            integration_docker_swarm: Optional[ElastigroupIntegrationDockerSwarmArgs] = None,
            integration_ecs: Optional[ElastigroupIntegrationEcsArgs] = None,
            integration_gitlab: Optional[ElastigroupIntegrationGitlabArgs] = None,
            integration_kubernetes: Optional[ElastigroupIntegrationKubernetesArgs] = None,
            integration_mesosphere: Optional[ElastigroupIntegrationMesosphereArgs] = None,
            integration_nomad: Optional[ElastigroupIntegrationNomadArgs] = None,
            integration_rancher: Optional[ElastigroupIntegrationRancherArgs] = None,
            integration_route53: Optional[ElastigroupIntegrationRoute53Args] = None,
            itfs: Optional[Sequence[ElastigroupItfArgs]] = None,
            key_name: Optional[str] = None,
            lifetime_period: Optional[str] = None,
            logging: Optional[ElastigroupLoggingArgs] = None,
            max_size: Optional[int] = None,
            metadata_options: Optional[ElastigroupMetadataOptionsArgs] = None,
            min_size: Optional[int] = None,
            minimum_instance_lifetime: Optional[int] = None,
            multiple_metrics: Optional[ElastigroupMultipleMetricsArgs] = None,
            name: Optional[str] = None,
            network_interfaces: Optional[Sequence[ElastigroupNetworkInterfaceArgs]] = None,
            on_demand_types: Optional[Sequence[str]] = None,
            ondemand_count: Optional[int] = None,
            orientation: Optional[str] = None,
            persist_block_devices: Optional[bool] = None,
            persist_private_ip: Optional[bool] = None,
            persist_root_device: Optional[bool] = None,
            placement_tenancy: Optional[str] = None,
            preferred_availability_zones: Optional[Sequence[str]] = None,
            private_ips: Optional[Sequence[str]] = None,
            product: Optional[str] = None,
            region: Optional[str] = None,
            resource_requirements: Optional[Sequence[ElastigroupResourceRequirementArgs]] = None,
            resource_tag_specifications: Optional[Sequence[ElastigroupResourceTagSpecificationArgs]] = None,
            revert_to_spot: Optional[ElastigroupRevertToSpotArgs] = None,
            scaling_down_policies: Optional[Sequence[ElastigroupScalingDownPolicyArgs]] = None,
            scaling_strategies: Optional[Sequence[ElastigroupScalingStrategyArgs]] = None,
            scaling_target_policies: Optional[Sequence[ElastigroupScalingTargetPolicyArgs]] = None,
            scaling_up_policies: Optional[Sequence[ElastigroupScalingUpPolicyArgs]] = None,
            scheduled_tasks: Optional[Sequence[ElastigroupScheduledTaskArgs]] = None,
            security_groups: Optional[Sequence[str]] = None,
            shutdown_script: Optional[str] = None,
            signals: Optional[Sequence[ElastigroupSignalArgs]] = None,
            spot_percentage: Optional[int] = None,
            stateful_deallocation: Optional[ElastigroupStatefulDeallocationArgs] = None,
            stateful_instance_actions: Optional[Sequence[ElastigroupStatefulInstanceActionArgs]] = None,
            subnet_ids: Optional[Sequence[str]] = None,
            tags: Optional[Sequence[ElastigroupTagArgs]] = None,
            target_group_arns: Optional[Sequence[str]] = None,
            update_policy: Optional[ElastigroupUpdatePolicyArgs] = None,
            user_data: Optional[str] = None,
            utilize_commitments: Optional[bool] = None,
            utilize_reserved_instances: Optional[bool] = None,
            wait_for_capacity: Optional[int] = None,
            wait_for_capacity_timeout: Optional[int] = None) -> Elastigroup
    func GetElastigroup(ctx *Context, name string, id IDInput, state *ElastigroupState, opts ...ResourceOption) (*Elastigroup, error)
    public static Elastigroup Get(string name, Input<string> id, ElastigroupState? state, CustomResourceOptions? opts = null)
    public static Elastigroup get(String name, Output<String> id, ElastigroupState state, CustomResourceOptions options)
    Resource lookup is not supported in YAML
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    resource_name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    name
    The unique name of the resulting resource.
    id
    The unique provider ID of the resource to lookup.
    state
    Any extra arguments used during the lookup.
    opts
    A bag of options that control this resource's behavior.
    The following state arguments are supported:
    AvailabilityZones List<string>
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    BlockDevicesMode string
    CapacityUnit string
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    ConsiderOdPricing bool
    CpuCredits string
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    CpuOptions Pulumi.SpotInst.Aws.Inputs.ElastigroupCpuOptions
    The CPU options for the instances that are launched within the group:
    Description string
    The group description.
    DesiredCapacity int
    The desired number of instances the group should have at any time.
    DrainingTimeout int
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    EbsBlockDevices List<Pulumi.SpotInst.Aws.Inputs.ElastigroupEbsBlockDevice>
    EbsOptimized bool
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    ElasticIps List<string>
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    ElasticLoadBalancers List<string>
    EnableMonitoring bool
    Indicates whether monitoring is enabled for the instance.
    EphemeralBlockDevices List<Pulumi.SpotInst.Aws.Inputs.ElastigroupEphemeralBlockDevice>
    FallbackToOndemand bool
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    HealthCheckGracePeriod int
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    HealthCheckType string
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    HealthCheckUnhealthyDurationBeforeReplacement int
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    IamInstanceProfile string
    The ARN or name of an IAM instance profile to associate with launched instances.
    ImageId string
    The ID of the AMI used to launch the instance.
    Images List<Pulumi.SpotInst.Aws.Inputs.ElastigroupImage>
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    ImmediateOdRecoverThreshold int
    InstanceTypesOndemand string
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    InstanceTypesPreferredSpots List<string>
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    InstanceTypesSpots List<string>
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    InstanceTypesWeights List<Pulumi.SpotInst.Aws.Inputs.ElastigroupInstanceTypesWeight>
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    IntegrationBeanstalk Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationBeanstalk
    IntegrationCodedeploy Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationCodedeploy
    IntegrationDockerSwarm Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationDockerSwarm
    IntegrationEcs Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationEcs
    IntegrationGitlab Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationGitlab
    IntegrationKubernetes Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationKubernetes
    IntegrationMesosphere Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationMesosphere
    IntegrationNomad Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationNomad
    IntegrationRancher Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationRancher
    IntegrationRoute53 Pulumi.SpotInst.Aws.Inputs.ElastigroupIntegrationRoute53
    Itfs List<Pulumi.SpotInst.Aws.Inputs.ElastigroupItf>
    KeyName string
    The key name that should be used for the instance.
    LifetimePeriod string
    Logging Pulumi.SpotInst.Aws.Inputs.ElastigroupLogging
    Logging configuration.
    MaxSize int
    The maximum number of instances the group should have at any time.
    MetadataOptions Pulumi.SpotInst.Aws.Inputs.ElastigroupMetadataOptions
    Data that used to configure or manage the running instances:
    MinSize int
    The minimum number of instances the group should have at any time.
    MinimumInstanceLifetime int
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    MultipleMetrics Pulumi.SpotInst.Aws.Inputs.ElastigroupMultipleMetrics
    Name string
    The group name.
    NetworkInterfaces List<Pulumi.SpotInst.Aws.Inputs.ElastigroupNetworkInterface>
    OnDemandTypes List<string>
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    OndemandCount int
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    Orientation string
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    PersistBlockDevices bool
    PersistPrivateIp bool
    PersistRootDevice bool
    PlacementTenancy string
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    PreferredAvailabilityZones List<string>
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    PrivateIps List<string>
    Product string
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    Region string
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    ResourceRequirements List<Pulumi.SpotInst.Aws.Inputs.ElastigroupResourceRequirement>
    Required instance attributes. Instance types will be selected based on these requirements.
    ResourceTagSpecifications List<Pulumi.SpotInst.Aws.Inputs.ElastigroupResourceTagSpecification>
    User will specify which resources should be tagged with group tags.
    RevertToSpot Pulumi.SpotInst.Aws.Inputs.ElastigroupRevertToSpot
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    ScalingDownPolicies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingDownPolicy>
    ScalingStrategies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingStrategy>
    Set termination policy.
    ScalingTargetPolicies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingTargetPolicy>
    ScalingUpPolicies List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScalingUpPolicy>
    ScheduledTasks List<Pulumi.SpotInst.Aws.Inputs.ElastigroupScheduledTask>
    SecurityGroups List<string>
    A list of associated security group IDS.
    ShutdownScript string
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    Signals List<Pulumi.SpotInst.Aws.Inputs.ElastigroupSignal>
    SpotPercentage int
    The percentage of Spot instances that would spin up from the desired_capacity number.
    StatefulDeallocation Pulumi.SpotInst.Aws.Inputs.ElastigroupStatefulDeallocation
    StatefulInstanceActions List<Pulumi.SpotInst.Aws.Inputs.ElastigroupStatefulInstanceAction>
    SubnetIds List<string>
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.
    Tags List<Pulumi.SpotInst.Aws.Inputs.ElastigroupTag>
    A key/value mapping of tags to assign to the resource.
    TargetGroupArns List<string>
    UpdatePolicy Pulumi.SpotInst.Aws.Inputs.ElastigroupUpdatePolicy
    UserData string
    The user data to provide when launching the instance.
    UtilizeCommitments bool
    UtilizeReservedInstances bool
    In a case of any available reserved instances, Elastigroup will utilize them first before purchasing Spot instances.
    WaitForCapacity int
    Minimum number of instances in a 'HEALTHY' status that is required before continuing. This is ignored when updating with blue/green deployment. Cannot exceed desired_capacity.
    WaitForCapacityTimeout int
    Time (seconds) to wait for instances to report a 'HEALTHY' status. Useful for plans with multiple dependencies that take some time to initialize. Leave undefined or set to 0 to indicate no wait. This is ignored when updating with blue/green deployment.
    AvailabilityZones []string
    List of Strings of availability zones. When this parameter is set, subnet_ids should be left unused. Note: availability_zones naming syntax follows the convention availability-zone:subnet:placement-group-name. For example, to set an AZ in us-east-1 with subnet subnet-123456 and placement group ClusterI03, you would set: availability_zones = ["us-east-1a:subnet-123456:ClusterI03"]
    BlockDevicesMode string
    CapacityUnit string
    The capacity unit to launch instances by. If not specified, when choosing the weight unit, each instance will weight as the number of its vCPUs. Valid values: instance, weight.
    ConsiderOdPricing bool
    CpuCredits string
    Controls how T3 instances are launched. Valid values: standard, unlimited.
    CpuOptions ElastigroupCpuOptionsArgs
    The CPU options for the instances that are launched within the group:
    Description string
    The group description.
    DesiredCapacity int
    The desired number of instances the group should have at any time.
    DrainingTimeout int
    The time in seconds, the instance is allowed to run while detached from the ELB. This is to allow the instance time to be drained from incoming TCP connections before terminating it, during a scale down operation.
    EbsBlockDevices []ElastigroupEbsBlockDeviceArgs
    EbsOptimized bool
    Enable high bandwidth connectivity between instances and AWS’s Elastic Block Store (EBS). For instance types that are EBS-optimized by default this parameter will be ignored.
    ElasticIps []string
    A list of AWS Elastic IP allocation IDs to associate to the group instances.
    ElasticLoadBalancers []string
    EnableMonitoring bool
    Indicates whether monitoring is enabled for the instance.
    EphemeralBlockDevices []ElastigroupEphemeralBlockDeviceArgs
    FallbackToOndemand bool
    In a case of no Spot instances available, Elastigroup will launch on-demand instances instead.
    HealthCheckGracePeriod int
    The amount of time, in seconds, after the instance has launched to starts and check its health.
    HealthCheckType string
    The service that will perform health checks for the instance. Valid values: "ELB", "HCS", "TARGET_GROUP", "EC2", "K8S_NODE", "NOMAD_NODE", "ECS_CLUSTER_INSTANCE".
    HealthCheckUnhealthyDurationBeforeReplacement int
    The amount of time, in seconds, that we will wait before replacing an instance that is running and became unhealthy (this is only applicable for instances that were once healthy).
    IamInstanceProfile string
    The ARN or name of an IAM instance profile to associate with launched instances.
    ImageId string
    The ID of the AMI used to launch the instance.
    Images []ElastigroupImageArgs
    An array of image objects. Note: Elastigroup can be configured with either imageId or images, but not both.
    ImmediateOdRecoverThreshold int
    InstanceTypesOndemand string
    The type of instance determines your instance's CPU capacity, memory and storage (e.g., m1.small, c1.xlarge).
    InstanceTypesPreferredSpots []string
    Prioritize a subset of spot instance types. Must be a subset of the selected spot instance types.
    InstanceTypesSpots []string
    One or more instance types. Note: Cannot be defined if 'resourceRequirements' is defined.
    InstanceTypesWeights []ElastigroupInstanceTypesWeightArgs
    List of weights per instance type for weighted groups. Each object in the list should have the following attributes:
    IntegrationBeanstalk ElastigroupIntegrationBeanstalkArgs
    IntegrationCodedeploy ElastigroupIntegrationCodedeployArgs
    IntegrationDockerSwarm ElastigroupIntegrationDockerSwarmArgs
    IntegrationEcs ElastigroupIntegrationEcsArgs
    IntegrationGitlab ElastigroupIntegrationGitlabArgs
    IntegrationKubernetes ElastigroupIntegrationKubernetesArgs
    IntegrationMesosphere ElastigroupIntegrationMesosphereArgs
    IntegrationNomad ElastigroupIntegrationNomadArgs
    IntegrationRancher ElastigroupIntegrationRancherArgs
    IntegrationRoute53 ElastigroupIntegrationRoute53Args
    Itfs []ElastigroupItfArgs
    KeyName string
    The key name that should be used for the instance.
    LifetimePeriod string
    Logging ElastigroupLoggingArgs
    Logging configuration.
    MaxSize int
    The maximum number of instances the group should have at any time.
    MetadataOptions ElastigroupMetadataOptionsArgs
    Data that used to configure or manage the running instances:
    MinSize int
    The minimum number of instances the group should have at any time.
    MinimumInstanceLifetime int
    Defines the preferred minimum instance lifetime in hours. Markets which comply with this preference will be prioritized. Optional values: 1, 3, 6, 12, 24.
    MultipleMetrics ElastigroupMultipleMetricsArgs
    Name string
    The group name.
    NetworkInterfaces []ElastigroupNetworkInterfaceArgs
    OnDemandTypes []string
    Available ondemand instance types. Note: Either ondemand or onDemandTypes must be defined, but not both.
    OndemandCount int
    Number of on demand instances to launch in the group. All other instances will be spot instances. When this parameter is set the spot_percentage parameter is being ignored.
    Orientation string
    Select a prediction strategy. Valid values: balanced, costOriented, equalAzDistribution, availabilityOriented. You can read more in our documentation.
    PersistBlockDevices bool
    PersistPrivateIp bool
    PersistRootDevice bool
    PlacementTenancy string
    Enable dedicated tenancy. Note: There is a flat hourly fee for each region in which dedicated tenancy is used. Valid values: "default", "dedicated" .
    PreferredAvailabilityZones []string
    The AZs to prioritize when launching Spot instances. If no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs. Note: Must be a sublist of availability_zones and orientation value must not be "equalAzDistribution".
    PrivateIps []string
    Product string
    Operation system type. Valid values: "Linux/UNIX", "SUSE Linux", "Windows". For EC2 Classic instances: "Linux/UNIX (Amazon VPC)", "SUSE Linux (Amazon VPC)", "Windows (Amazon VPC)".
    Region string
    The AWS region your group will be created in. Note: This parameter is required if you specify subnets (through subnet_ids). This parameter is optional if you specify Availability Zones (through availability_zones).
    ResourceRequirements []ElastigroupResourceRequirementArgs
    Required instance attributes. Instance types will be selected based on these requirements.
    ResourceTagSpecifications []ElastigroupResourceTagSpecificationArgs
    User will specify which resources should be tagged with group tags.
    RevertToSpot ElastigroupRevertToSpotArgs
    Hold settings for strategy correction – replacing On-Demand for Spot instances. Supported Values: "never", "always", "timeWindow"
    ScalingDownPolicies []ElastigroupScalingDownPolicyArgs
    ScalingStrategies []ElastigroupScalingStrategyArgs
    Set termination policy.
    ScalingTargetPolicies []ElastigroupScalingTargetPolicyArgs
    ScalingUpPolicies []ElastigroupScalingUpPolicyArgs
    ScheduledTasks []ElastigroupScheduledTaskArgs
    SecurityGroups []string
    A list of associated security group IDS.
    ShutdownScript string
    The Base64-encoded shutdown script that executes prior to instance termination, for more information please see: Shutdown Script
    Signals []ElastigroupSignalArgs
    SpotPercentage int
    The percentage of Spot instances that would spin up from the desired_capacity number.
    StatefulDeallocation ElastigroupStatefulDeallocationArgs
    StatefulInstanceActions []ElastigroupStatefulInstanceActionArgs
    SubnetIds []string
    List of Strings of subnet identifiers. Note: When this parameter is set, availability_zones should be left unused.