Package com.pulumi.aws.autoscaling
Class Group
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.autoscaling.Group
-
public class Group extends com.pulumi.resources.CustomResourceProvides an Auto Scaling group resource. > **Note:** You must specify either `launchConfiguration`, `launchTemplate`, or `mixedInstancesPolicy`. > **NOTE on Auto Scaling groups, Attachments and Traffic Source Attachments:** Pulumi provides standalone Attachment (for attaching Classic Load Balancers and Application Load Balancer, Gateway Load Balancer, or Network Load Balancer target groups) and Traffic Source Attachment (for attaching Load Balancers and VPC Lattice target groups) resources and an Auto Scaling group resource with `loadBalancers`, `targetGroupArns` and `trafficSource` attributes. Do not use the same traffic source in more than one of these resources. Doing so will cause a conflict of attachments. A `lifecycle` configuration block can be used to suppress differences if necessary. A newly-created ASG is initially empty and begins to scale to `minSize` (or `desiredCapacity`, if specified) by launching instances using the provided Launch Configuration. These instances take time to launch and boot. On ASG Update, changes to these values also take time to result in the target number of instances providing service. This provider provides two mechanisms to help consistently manage ASG scale up time across dependent resources. #### Waiting for ASG Capacity The first is default behavior. This provider waits after ASG creation for `minSize` (or `desiredCapacity`, if specified) healthy instances to show up in the ASG before continuing. If `minSize` or `desiredCapacity` are changed in a subsequent update, this provider will also wait for the correct number of healthy instances before continuing. This provider considers an instance "healthy" when the ASG reports `HealthStatus: "Healthy"` and `LifecycleState: "InService"`. See the [AWS AutoScaling Docs](https://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html) for more information on an ASG's lifecycle. This provider will wait for healthy instances for up to `waitForCapacityTimeout`. If ASG creation is taking more than a few minutes, it's worth investigating for scaling activity errors, which can be caused by problems with the selected Launch Configuration. Setting `waitForCapacityTimeout` to `"0"` disables ASG Capacity waiting. #### Waiting for ELB Capacity The second mechanism is optional, and affects ASGs with attached ELBs specified via the `loadBalancers` attribute or with ALBs specified with `targetGroupArns`. The `minElbCapacity` parameter causes the provider to wait for at least the requested number of instances to show up `"InService"` in all attached ELBs during ASG creation. It has no effect on ASG updates. If `waitForElbCapacity` is set, the provider will wait for exactly that number of Instances to be `"InService"` in all attached ELBs on both creation and updates. These parameters can be used to ensure that service is being provided before the provider moves on. If new instances don't pass the ELB's health checks for any reason, the apply will time out, and the ASG will be marked as tainted (i.e., marked to be destroyed in a follow up run). As with ASG Capacity, the provider will wait for up to `waitForCapacityTimeout` for the proper number of instances to be healthy. #### Troubleshooting Capacity Waiting Timeouts If ASG creation takes more than a few minutes, this could indicate one of a number of configuration problems. See the [AWS Docs on Load Balancer Troubleshooting](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-troubleshooting.html) for more information. ## Example Usage
### With Latest Version Of Launch Templatepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.PlacementGroup; import com.pulumi.aws.ec2.PlacementGroupArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupInstanceMaintenancePolicyArgs; import com.pulumi.aws.autoscaling.inputs.GroupInitialLifecycleHookArgs; import com.pulumi.aws.autoscaling.inputs.GroupTagArgs; import static com.pulumi.codegen.internal.Serialization.*; import com.pulumi.resources.CustomResourceOptions; import com.pulumi.resources.CustomTimeouts; import java.util.ArrayList; import java.util.Arrays; 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) { var test = new PlacementGroup("test", PlacementGroupArgs.builder() .name("test") .strategy("cluster") .build()); var bar = new Group("bar", GroupArgs.builder() .instanceMaintenancePolicy(GroupInstanceMaintenancePolicyArgs.builder() .minHealthyPercentage(90) .maxHealthyPercentage(120) .build()) .initialLifecycleHooks(GroupInitialLifecycleHookArgs.builder() .name("foobar") .defaultResult("CONTINUE") .heartbeatTimeout(2000) .lifecycleTransition("autoscaling:EC2_INSTANCE_LAUNCHING") .notificationMetadata(serializeJson( jsonObject( jsonProperty("foo", "bar") ))) .notificationTargetArn("arn:aws:sqs:us-east-1:444455556666:queue1*") .roleArn("arn:aws:iam::123456789012:role/S3Access") .build()) .tags( GroupTagArgs.builder() .key("foo") .value("bar") .propagateAtLaunch(true) .build(), GroupTagArgs.builder() .key("lorem") .value("ipsum") .propagateAtLaunch(false) .build()) .name("foobar3-test") .maxSize(5) .minSize(2) .healthCheckGracePeriod(300) .healthCheckType("ELB") .desiredCapacity(4) .forceDelete(true) .placementGroup(test.id()) .launchConfiguration(foobar.name()) .vpcZoneIdentifiers( example1.id(), example2.id()) .build(), CustomResourceOptions.builder() .customTimeouts(CustomTimeouts.builder() .delete(CustomTimeouts.parseTimeoutString("15m")) .build()) .build()); } }
### Mixed Instances Policypackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupLaunchTemplateArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var foobar = new LaunchTemplate("foobar", LaunchTemplateArgs.builder() .namePrefix("foobar") .imageId("ami-1a2b3c") .instanceType("t2.micro") .build()); var bar = new Group("bar", GroupArgs.builder() .launchTemplate(GroupLaunchTemplateArgs.builder() .id(foobar.id()) .version("$Latest") .build()) .availabilityZones("us-east-1a") .desiredCapacity(1) .maxSize(1) .minSize(1) .build()); } }
### Mixed Instances Policy with Spot Instances and Capacity Rebalancepackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new LaunchTemplate("example", LaunchTemplateArgs.builder() .namePrefix("example") .imageId(exampleAwsAmi.id()) .instanceType("c5.large") .build()); var exampleGroup = new Group("exampleGroup", GroupArgs.builder() .mixedInstancesPolicy(GroupMixedInstancesPolicyArgs.builder() .launchTemplate(GroupMixedInstancesPolicyLaunchTemplateArgs.builder() .launchTemplateSpecification(GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs.builder() .launchTemplateId(example.id()) .build()) .overrides( GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .instanceType("c4.large") .weightedCapacity("3") .build(), GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .instanceType("c3.large") .weightedCapacity("2") .build()) .build()) .build()) .availabilityZones("us-east-1a") .desiredCapacity(1) .maxSize(1) .minSize(1) .build()); } }
### Mixed Instances Policy with Instance level LaunchTemplateSpecification Overrides When using a diverse instance set, some instance types might require a launch template with configuration values unique to that instance type such as a different AMI (Graviton2), architecture specific user data script, different EBS configuration, or different networking configuration.package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyInstancesDistributionArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new LaunchTemplate("example", LaunchTemplateArgs.builder() .namePrefix("example") .imageId(exampleAwsAmi.id()) .instanceType("c5.large") .build()); var exampleGroup = new Group("exampleGroup", GroupArgs.builder() .mixedInstancesPolicy(GroupMixedInstancesPolicyArgs.builder() .instancesDistribution(GroupMixedInstancesPolicyInstancesDistributionArgs.builder() .onDemandBaseCapacity(0) .onDemandPercentageAboveBaseCapacity(25) .spotAllocationStrategy("capacity-optimized") .build()) .launchTemplate(GroupMixedInstancesPolicyLaunchTemplateArgs.builder() .launchTemplateSpecification(GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs.builder() .launchTemplateId(example.id()) .build()) .overrides( GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .instanceType("c4.large") .weightedCapacity("3") .build(), GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .instanceType("c3.large") .weightedCapacity("2") .build()) .build()) .build()) .capacityRebalance(true) .desiredCapacity(12) .maxSize(15) .minSize(12) .vpcZoneIdentifiers( example1.id(), example2.id()) .build()); } }
### Mixed Instances Policy with Attribute-based Instance Type Selection As an alternative to manually choosing instance types when creating a mixed instances group, you can specify a set of instance attributes that describe your compute requirements.package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideLaunchTemplateSpecificationArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new LaunchTemplate("example", LaunchTemplateArgs.builder() .namePrefix("example") .imageId(exampleAwsAmi.id()) .instanceType("c5.large") .build()); var example2 = new LaunchTemplate("example2", LaunchTemplateArgs.builder() .namePrefix("example2") .imageId(example2AwsAmi.id()) .build()); var exampleGroup = new Group("exampleGroup", GroupArgs.builder() .mixedInstancesPolicy(GroupMixedInstancesPolicyArgs.builder() .launchTemplate(GroupMixedInstancesPolicyLaunchTemplateArgs.builder() .launchTemplateSpecification(GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs.builder() .launchTemplateId(example.id()) .build()) .overrides( GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .instanceType("c4.large") .weightedCapacity("3") .build(), GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .launchTemplateSpecification(GroupMixedInstancesPolicyLaunchTemplateOverrideLaunchTemplateSpecificationArgs.builder() .launchTemplateId(example2.id()) .build()) .instanceType("c6g.large") .weightedCapacity("2") .build()) .build()) .build()) .availabilityZones("us-east-1a") .desiredCapacity(1) .maxSize(1) .minSize(1) .build()); } }
### Dynamic taggingpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideInstanceRequirementsArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideInstanceRequirementsMemoryMibArgs; import com.pulumi.aws.autoscaling.inputs.GroupMixedInstancesPolicyLaunchTemplateOverrideInstanceRequirementsVcpuCountArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new LaunchTemplate("example", LaunchTemplateArgs.builder() .namePrefix("example") .imageId(exampleAwsAmi.id()) .instanceType("c5.large") .build()); var exampleGroup = new Group("exampleGroup", GroupArgs.builder() .mixedInstancesPolicy(GroupMixedInstancesPolicyArgs.builder() .launchTemplate(GroupMixedInstancesPolicyLaunchTemplateArgs.builder() .launchTemplateSpecification(GroupMixedInstancesPolicyLaunchTemplateLaunchTemplateSpecificationArgs.builder() .launchTemplateId(example.id()) .build()) .overrides(GroupMixedInstancesPolicyLaunchTemplateOverrideArgs.builder() .instanceRequirements(GroupMixedInstancesPolicyLaunchTemplateOverrideInstanceRequirementsArgs.builder() .memoryMib(GroupMixedInstancesPolicyLaunchTemplateOverrideInstanceRequirementsMemoryMibArgs.builder() .min(1000) .build()) .vcpuCount(GroupMixedInstancesPolicyLaunchTemplateOverrideInstanceRequirementsVcpuCountArgs.builder() .min(4) .build()) .build()) .build()) .build()) .build()) .availabilityZones("us-east-1a") .desiredCapacity(1) .maxSize(1) .minSize(1) .build()); } }
### Automatically refresh all instances after the group is updatedpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupTagArgs; import java.util.ArrayList; import java.util.Arrays; 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) { final var config = ctx.config(); final var extraTags = config.get("extraTags").orElse(Arrays.asList( Map.ofEntries( Map.entry("key", "Foo"), Map.entry("propagateAtLaunch", true), Map.entry("value", "Bar") ), Map.ofEntries( Map.entry("key", "Baz"), Map.entry("propagateAtLaunch", true), Map.entry("value", "Bam") ))); var test = new Group("test", GroupArgs.builder() .tags( GroupTagArgs.builder() .key("explicit1") .value("value1") .propagateAtLaunch(true) .build(), GroupTagArgs.builder() .key("explicit2") .value("value2") .propagateAtLaunch(true) .build()) .name("foobar3-test") .maxSize(5) .minSize(2) .launchConfiguration(foobar.name()) .vpcZoneIdentifiers( example1.id(), example2.id()) .build()); } }
### Auto Scaling group with Warm Poolpackage generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.Ec2Functions; import com.pulumi.aws.ec2.inputs.GetAmiArgs; import com.pulumi.aws.ec2.inputs.GetAmiFilterArgs; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupLaunchTemplateArgs; import com.pulumi.aws.autoscaling.inputs.GroupInstanceRefreshArgs; import com.pulumi.aws.autoscaling.inputs.GroupInstanceRefreshPreferencesArgs; import com.pulumi.aws.autoscaling.inputs.GroupTagArgs; import java.util.ArrayList; import java.util.Arrays; 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) { final var example = Ec2Functions.getAmi(GetAmiArgs.builder() .filters(GetAmiFilterArgs.builder() .name("name") .values("amzn-ami-hvm-*-x86_64-gp2") .build()) .mostRecent(true) .owners("amazon") .build()); var exampleLaunchTemplate = new LaunchTemplate("exampleLaunchTemplate", LaunchTemplateArgs.builder() .imageId(example.id()) .instanceType("t3.nano") .build()); var exampleGroup = new Group("exampleGroup", GroupArgs.builder() .launchTemplate(GroupLaunchTemplateArgs.builder() .id(exampleLaunchTemplate.id()) .version(exampleLaunchTemplate.latestVersion()) .build()) .instanceRefresh(GroupInstanceRefreshArgs.builder() .preferences(GroupInstanceRefreshPreferencesArgs.builder() .minHealthyPercentage(50) .build()) .strategy("Rolling") .triggers("tag") .build()) .tags(GroupTagArgs.builder() .key("Key") .value("Value") .propagateAtLaunch(true) .build()) .availabilityZones("us-east-1a") .desiredCapacity(1) .maxSize(2) .minSize(1) .build()); } }
### Auto Scaling group with Traffic Sources ## Import ### Identity Schema #### Required * `name` (String) Name of the Auto Scaling group. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import Auto Scaling groups using the `name`. For example: ```sh $ pulumi import aws:autoscaling/group:Group example example ```package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.ec2.LaunchTemplate; import com.pulumi.aws.ec2.LaunchTemplateArgs; import com.pulumi.aws.autoscaling.Group; import com.pulumi.aws.autoscaling.GroupArgs; import com.pulumi.aws.autoscaling.inputs.GroupWarmPoolArgs; import com.pulumi.aws.autoscaling.inputs.GroupWarmPoolInstanceReusePolicyArgs; import java.util.ArrayList; import java.util.Arrays; 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) { var example = new LaunchTemplate("example", LaunchTemplateArgs.builder() .namePrefix("example") .imageId(exampleAwsAmi.id()) .instanceType("c5.large") .build()); var exampleGroup = new Group("exampleGroup", GroupArgs.builder() .warmPool(GroupWarmPoolArgs.builder() .instanceReusePolicy(GroupWarmPoolInstanceReusePolicyArgs.builder() .reuseOnScaleIn(true) .build()) .poolState("Hibernated") .minSize(1) .maxGroupPreparedCapacity(10) .build()) .availabilityZones("us-east-1a") .desiredCapacity(1) .maxSize(5) .minSize(1) .build()); } }
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>arn()com.pulumi.core.Output<GroupAvailabilityZoneDistribution>availabilityZoneDistribution()com.pulumi.core.Output<java.util.List<java.lang.String>>availabilityZones()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>capacityRebalance()com.pulumi.core.Output<GroupCapacityReservationSpecification>capacityReservationSpecification()com.pulumi.core.Output<java.util.Optional<java.lang.String>>context()com.pulumi.core.Output<java.lang.Integer>defaultCooldown()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>defaultInstanceWarmup()com.pulumi.core.Output<java.lang.Integer>desiredCapacity()com.pulumi.core.Output<java.util.Optional<java.lang.String>>desiredCapacityType()com.pulumi.core.Output<java.util.Optional<java.util.List<Metric>>>enabledMetrics()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>forceDelete()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>forceDeleteWarmPool()static Groupget(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, GroupState state, com.pulumi.resources.CustomResourceOptions options)Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>healthCheckGracePeriod()com.pulumi.core.Output<java.lang.String>healthCheckType()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>ignoreFailedScalingActivities()com.pulumi.core.Output<java.util.Optional<java.util.List<GroupInitialLifecycleHook>>>initialLifecycleHooks()com.pulumi.core.Output<GroupInstanceLifecyclePolicy>instanceLifecyclePolicy()com.pulumi.core.Output<java.util.Optional<GroupInstanceMaintenancePolicy>>instanceMaintenancePolicy()com.pulumi.core.Output<java.util.Optional<GroupInstanceRefresh>>instanceRefresh()com.pulumi.core.Output<java.util.Optional<java.lang.String>>launchConfiguration()com.pulumi.core.Output<GroupLaunchTemplate>launchTemplate()com.pulumi.core.Output<java.util.List<java.lang.String>>loadBalancers()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>maxInstanceLifetime()com.pulumi.core.Output<java.lang.Integer>maxSize()com.pulumi.core.Output<java.util.Optional<java.lang.String>>metricsGranularity()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>minElbCapacity()com.pulumi.core.Output<java.lang.Integer>minSize()com.pulumi.core.Output<GroupMixedInstancesPolicy>mixedInstancesPolicy()com.pulumi.core.Output<java.lang.String>name()com.pulumi.core.Output<java.lang.String>namePrefix()com.pulumi.core.Output<java.util.Optional<java.lang.String>>placementGroup()com.pulumi.core.Output<java.lang.Integer>predictedCapacity()com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>protectFromScaleIn()com.pulumi.core.Output<java.lang.String>region()com.pulumi.core.Output<java.lang.String>serviceLinkedRoleArn()com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>suspendedProcesses()com.pulumi.core.Output<java.util.Optional<java.util.List<GroupTag>>>tags()com.pulumi.core.Output<java.util.List<java.lang.String>>targetGroupArns()com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>>terminationPolicies()com.pulumi.core.Output<java.util.List<GroupTrafficSource>>trafficSources()com.pulumi.core.Output<java.util.List<java.lang.String>>vpcZoneIdentifiers()com.pulumi.core.Output<java.util.Optional<java.lang.String>>waitForCapacityTimeout()com.pulumi.core.Output<java.util.Optional<java.lang.Integer>>waitForElbCapacity()com.pulumi.core.Output<java.util.Optional<GroupWarmPool>>warmPool()com.pulumi.core.Output<java.lang.Integer>warmPoolSize()
-
-
-
Constructor Detail
-
Group
public Group(java.lang.String name)
- Parameters:
name- The _unique_ name of the resulting resource.
-
Group
public Group(java.lang.String name, GroupArgs args)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.
-
Group
public Group(java.lang.String name, GroupArgs args, @Nullable com.pulumi.resources.CustomResourceOptions options)- Parameters:
name- The _unique_ name of the resulting resource.args- The arguments to use to populate this resource's properties.options- A bag of options that control this resource's behavior.
-
-
Method Detail
-
arn
public com.pulumi.core.Output<java.lang.String> arn()
- Returns:
- ARN for this Auto Scaling group
-
availabilityZoneDistribution
public com.pulumi.core.Output<GroupAvailabilityZoneDistribution> availabilityZoneDistribution()
- Returns:
- The instance capacity distribution across Availability Zones. See `availabilityZoneDistribution` Block below for more details.
-
availabilityZones
public com.pulumi.core.Output<java.util.List<java.lang.String>> availabilityZones()
- Returns:
- A list of Availability Zones where instances in the Auto Scaling group can be created. Used for launching into the default VPC subnet in each Availability Zone when not using the `vpcZoneIdentifier` attribute, or for attaching a network interface when an existing network interface ID is specified in a launch template. Conflicts with `vpcZoneIdentifier`.
-
capacityRebalance
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> capacityRebalance()
- Returns:
- Whether capacity rebalance is enabled. Otherwise, capacity rebalance is disabled.
-
capacityReservationSpecification
public com.pulumi.core.Output<GroupCapacityReservationSpecification> capacityReservationSpecification()
- Returns:
- The capacity reservation specification for the Auto Scaling group allows you to prioritize launching into On-Demand Capacity Reservations. See `capacityReservationSpecification` Block below for more details.
-
context
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> context()
- Returns:
- Reserved.
-
defaultCooldown
public com.pulumi.core.Output<java.lang.Integer> defaultCooldown()
- Returns:
- Amount of time, in seconds, after a scaling activity completes before another scaling activity can start.
-
defaultInstanceWarmup
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> defaultInstanceWarmup()
- Returns:
- Amount of time, in seconds, until a newly launched instance can contribute to the Amazon CloudWatch metrics. This delay lets an instance finish initializing before Amazon EC2 Auto Scaling aggregates instance metrics, resulting in more reliable usage data. Set this value equal to the amount of time that it takes for resource consumption to become stable after an instance reaches the InService state. (See [Set the default instance warmup for an Auto Scaling group](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-default-instance-warmup.html))
-
desiredCapacity
public com.pulumi.core.Output<java.lang.Integer> desiredCapacity()
- Returns:
- Number of Amazon EC2 instances that should be running in the group. (See also Waiting for Capacity below.)
-
desiredCapacityType
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> desiredCapacityType()
- Returns:
- The unit of measurement for the value specified for `desiredCapacity`. Supported for attribute-based instance type selection only. Valid values: `"units"`, `"vcpu"`, `"memory-mib"`.
-
enabledMetrics
public com.pulumi.core.Output<java.util.Optional<java.util.List<Metric>>> enabledMetrics()
- Returns:
- List of metrics to collect. The allowed values are defined by the [underlying AWS API](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_EnableMetricsCollection.html).
-
forceDelete
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> forceDelete()
- Returns:
- Allows deleting the Auto Scaling group without waiting for all instances in the pool to terminate. You can force an Auto Scaling group to delete even if it's in the process of scaling a resource. Normally, this provider drains all the instances before deleting the group. This bypasses that behavior and potentially leaves resources dangling.
-
forceDeleteWarmPool
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> forceDeleteWarmPool()
- Returns:
- Allows deleting the Auto Scaling group without waiting for all instances in the warm pool to terminate.
-
healthCheckGracePeriod
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> healthCheckGracePeriod()
- Returns:
- Time (in seconds) after instance comes into service before checking health.
-
healthCheckType
public com.pulumi.core.Output<java.lang.String> healthCheckType()
- Returns:
- "EC2" or "ELB". Controls how health checking is done.
-
ignoreFailedScalingActivities
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> ignoreFailedScalingActivities()
- Returns:
- Whether to ignore failed [Auto Scaling scaling activities](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-verify-scaling-activity.html) while waiting for capacity. The default is `false` -- failed scaling activities cause errors to be returned.
-
initialLifecycleHooks
public com.pulumi.core.Output<java.util.Optional<java.util.List<GroupInitialLifecycleHook>>> initialLifecycleHooks()
- Returns:
- One or more [Lifecycle Hooks](http://docs.aws.amazon.com/autoscaling/latest/userguide/lifecycle-hooks.html) to attach to the Auto Scaling group **before** instances are launched. The syntax is exactly the same as the separate `aws.autoscaling.LifecycleHook` resource, without the `autoscalingGroupName` attribute. Please note that this will only work when creating a new Auto Scaling group. For all other use-cases, please use `aws.autoscaling.LifecycleHook` resource.
-
instanceLifecyclePolicy
public com.pulumi.core.Output<GroupInstanceLifecyclePolicy> instanceLifecyclePolicy()
- Returns:
- If this block is configured, adds an instance lifecycle policy to the specified Auto Scaling group. Defined below.
-
instanceMaintenancePolicy
public com.pulumi.core.Output<java.util.Optional<GroupInstanceMaintenancePolicy>> instanceMaintenancePolicy()
- Returns:
- If this block is configured, add a instance maintenance policy to the specified Auto Scaling group. Defined below.
-
instanceRefresh
public com.pulumi.core.Output<java.util.Optional<GroupInstanceRefresh>> instanceRefresh()
- Returns:
- If this block is configured, start an [Instance Refresh](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-instance-refresh.html) when this Auto Scaling group is updated. Defined below.
-
launchConfiguration
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> launchConfiguration()
- Returns:
- Name of the launch configuration to use.
-
launchTemplate
public com.pulumi.core.Output<GroupLaunchTemplate> launchTemplate()
- Returns:
- Nested argument with Launch template specification to use to launch instances. See `launchTemplate` Block below for more details.
-
loadBalancers
public com.pulumi.core.Output<java.util.List<java.lang.String>> loadBalancers()
- Returns:
- List of elastic load balancer names to add to the Auto Scaling group names. Only valid for classic load balancers. For ALBs, use `targetGroupArns` instead. To remove all load balancer attachments an empty list should be specified.
-
maxInstanceLifetime
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> maxInstanceLifetime()
- Returns:
- Maximum amount of time, in seconds, that an instance can be in service, values must be either equal to 0 or between 86400 and 31536000 seconds.
-
maxSize
public com.pulumi.core.Output<java.lang.Integer> maxSize()
- Returns:
- Maximum size of the Auto Scaling group.
-
metricsGranularity
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> metricsGranularity()
- Returns:
- Granularity to associate with the metrics to collect. The only valid value is `1Minute`. Default is `1Minute`.
-
minElbCapacity
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> minElbCapacity()
- Returns:
- Setting this causes Pulumi to wait for this number of instances from this Auto Scaling group to show up healthy in the ELB only on creation. Updates will not wait on ELB instance number changes. (See also Waiting for Capacity below.)
-
minSize
public com.pulumi.core.Output<java.lang.Integer> minSize()
- Returns:
- Minimum size of the Auto Scaling group. (See also Waiting for Capacity below.)
-
mixedInstancesPolicy
public com.pulumi.core.Output<GroupMixedInstancesPolicy> mixedInstancesPolicy()
- Returns:
- Configuration block containing settings to define launch targets for Auto Scaling groups. See `mixedInstancesPolicy` Block below for more details.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Name of the Auto Scaling group. By default generated by Pulumi. Conflicts with `namePrefix`.
-
namePrefix
public com.pulumi.core.Output<java.lang.String> namePrefix()
- Returns:
- Creates a unique name beginning with the specified prefix. Conflicts with `name`.
-
placementGroup
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> placementGroup()
- Returns:
- Name of the placement group into which you'll launch your instances, if any.
-
predictedCapacity
public com.pulumi.core.Output<java.lang.Integer> predictedCapacity()
- Returns:
- Predicted capacity of the group.
-
protectFromScaleIn
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> protectFromScaleIn()
- Returns:
- Whether newly launched instances are automatically protected from termination by Amazon EC2 Auto Scaling when scaling in. For more information about preventing instances from terminating on scale in, see [Using instance scale-in protection](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-instance-protection.html) in the Amazon EC2 Auto Scaling User Guide.
-
region
public com.pulumi.core.Output<java.lang.String> region()
- Returns:
- Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
-
serviceLinkedRoleArn
public com.pulumi.core.Output<java.lang.String> serviceLinkedRoleArn()
- Returns:
- ARN of the service-linked role that the ASG will use to call other AWS services
-
suspendedProcesses
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> suspendedProcesses()
- Returns:
- List of processes to suspend for the Auto Scaling group. The allowed values are `Launch`, `Terminate`, `HealthCheck`, `ReplaceUnhealthy`, `AZRebalance`, `AlarmNotification`, `ScheduledActions`, `AddToLoadBalancer`, `InstanceRefresh`. Note that if you suspend either the `Launch` or `Terminate` process types, it can prevent your Auto Scaling group from functioning properly.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.List<GroupTag>>> tags()
- Returns:
- Configuration block(s) containing resource tags. See `tag` Block below for more details.
-
targetGroupArns
public com.pulumi.core.Output<java.util.List<java.lang.String>> targetGroupArns()
- Returns:
- Set of `aws.lb.TargetGroup` ARNs, for use with Application or Network Load Balancing. To remove all target group attachments an empty list should be specified.
-
terminationPolicies
public com.pulumi.core.Output<java.util.Optional<java.util.List<java.lang.String>>> terminationPolicies()
- Returns:
- List of policies to decide how the instances in the Auto Scaling group should be terminated. The allowed values are `OldestInstance`, `NewestInstance`, `OldestLaunchConfiguration`, `ClosestToNextInstanceHour`, `OldestLaunchTemplate`, `AllocationStrategy`, `Default`. Additionally, the ARN of a Lambda function can be specified for custom termination policies.
-
trafficSources
public com.pulumi.core.Output<java.util.List<GroupTrafficSource>> trafficSources()
- Returns:
- Attaches one or more traffic sources to the specified Auto Scaling group.
-
vpcZoneIdentifiers
public com.pulumi.core.Output<java.util.List<java.lang.String>> vpcZoneIdentifiers()
- Returns:
- List of subnet IDs to launch resources in. Subnets automatically determine which availability zones the group will reside. Conflicts with `availabilityZones`.
-
waitForCapacityTimeout
public com.pulumi.core.Output<java.util.Optional<java.lang.String>> waitForCapacityTimeout()
- Returns:
- Maximum [duration](https://golang.org/pkg/time/#ParseDuration) that the provider should wait for ASG instances to be healthy before timing out. (See also Waiting for Capacity below.) Setting this to "0" causes the provider to skip all Capacity Waiting behavior.
-
waitForElbCapacity
public com.pulumi.core.Output<java.util.Optional<java.lang.Integer>> waitForElbCapacity()
- Returns:
- Setting this will cause Pulumi to wait for exactly this number of healthy instances from this Auto Scaling group in all attached load balancers on both create and update operations. (Takes precedence over `minElbCapacity` behavior.) (See also Waiting for Capacity below.)
-
warmPool
public com.pulumi.core.Output<java.util.Optional<GroupWarmPool>> warmPool()
- Returns:
- If this block is configured, add a [Warm Pool](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-warm-pools.html) to the specified Auto Scaling group. Defined below
-
warmPoolSize
public com.pulumi.core.Output<java.lang.Integer> warmPoolSize()
- Returns:
- Current size of the warm pool.
-
get
public static Group get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable GroupState state, @Nullable com.pulumi.resources.CustomResourceOptions options)
Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.- Parameters:
name- The _unique_ name of the resulting resource.id- The _unique_ provider ID of the resource to lookup.state-options- Optional settings to control the behavior of the CustomResource.
-
-