class Aws::AutoScaling::Types::CreateAutoScalingGroupType

@note When making an API call, you may pass CreateAutoScalingGroupType

data as a hash:

    {
      auto_scaling_group_name: "XmlStringMaxLen255", # required
      launch_configuration_name: "XmlStringMaxLen255",
      launch_template: {
        launch_template_id: "XmlStringMaxLen255",
        launch_template_name: "LaunchTemplateName",
        version: "XmlStringMaxLen255",
      },
      mixed_instances_policy: {
        launch_template: {
          launch_template_specification: {
            launch_template_id: "XmlStringMaxLen255",
            launch_template_name: "LaunchTemplateName",
            version: "XmlStringMaxLen255",
          },
          overrides: [
            {
              instance_type: "XmlStringMaxLen255",
              weighted_capacity: "XmlStringMaxLen32",
              launch_template_specification: {
                launch_template_id: "XmlStringMaxLen255",
                launch_template_name: "LaunchTemplateName",
                version: "XmlStringMaxLen255",
              },
            },
          ],
        },
        instances_distribution: {
          on_demand_allocation_strategy: "XmlString",
          on_demand_base_capacity: 1,
          on_demand_percentage_above_base_capacity: 1,
          spot_allocation_strategy: "XmlString",
          spot_instance_pools: 1,
          spot_max_price: "MixedInstanceSpotPrice",
        },
      },
      instance_id: "XmlStringMaxLen19",
      min_size: 1, # required
      max_size: 1, # required
      desired_capacity: 1,
      default_cooldown: 1,
      availability_zones: ["XmlStringMaxLen255"],
      load_balancer_names: ["XmlStringMaxLen255"],
      target_group_arns: ["XmlStringMaxLen511"],
      health_check_type: "XmlStringMaxLen32",
      health_check_grace_period: 1,
      placement_group: "XmlStringMaxLen255",
      vpc_zone_identifier: "XmlStringMaxLen2047",
      termination_policies: ["XmlStringMaxLen1600"],
      new_instances_protected_from_scale_in: false,
      capacity_rebalance: false,
      lifecycle_hook_specification_list: [
        {
          lifecycle_hook_name: "AsciiStringMaxLen255", # required
          lifecycle_transition: "LifecycleTransition", # required
          notification_metadata: "XmlStringMaxLen1023",
          heartbeat_timeout: 1,
          default_result: "LifecycleActionResult",
          notification_target_arn: "NotificationTargetResourceName",
          role_arn: "XmlStringMaxLen255",
        },
      ],
      tags: [
        {
          resource_id: "XmlString",
          resource_type: "XmlString",
          key: "TagKey", # required
          value: "TagValue",
          propagate_at_launch: false,
        },
      ],
      service_linked_role_arn: "ResourceName",
      max_instance_lifetime: 1,
      context: "Context",
    }

@!attribute [rw] auto_scaling_group_name

The name of the Auto Scaling group. This name must be unique per
Region per account.
@return [String]

@!attribute [rw] launch_configuration_name

The name of the launch configuration to use to launch instances.

Conditional: You must specify either a launch template
(`LaunchTemplate` or `MixedInstancesPolicy`) or a launch
configuration (`LaunchConfigurationName` or `InstanceId`).
@return [String]

@!attribute [rw] launch_template

Parameters used to specify the launch template and version to use to
launch instances.

Conditional: You must specify either a launch template
(`LaunchTemplate` or `MixedInstancesPolicy`) or a launch
configuration (`LaunchConfigurationName` or `InstanceId`).

<note markdown="1"> The launch template that is specified must be configured for use
with an Auto Scaling group. For more information, see [Creating a
launch template for an Auto Scaling group][1] in the *Amazon EC2
Auto Scaling User Guide*.

 </note>

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-launch-template.html
@return [Types::LaunchTemplateSpecification]

@!attribute [rw] mixed_instances_policy

An embedded object that specifies a mixed instances policy. The
required properties must be specified. If optional properties are
unspecified, their default values are used.

The policy includes properties that not only define the distribution
of On-Demand Instances and Spot Instances, the maximum price to pay
for Spot Instances, and how the Auto Scaling group allocates
instance types to fulfill On-Demand and Spot capacities, but also
the properties that specify the instance configuration
information—the launch template and instance types. The policy can
also include a weight for each instance type and different launch
templates for individual instance types. For more information, see
[Auto Scaling groups with multiple instance types and purchase
options][1] in the *Amazon EC2 Auto Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-purchase-options.html
@return [Types::MixedInstancesPolicy]

@!attribute [rw] instance_id

The ID of the instance used to base the launch configuration on. If
specified, Amazon EC2 Auto Scaling uses the configuration values
from the specified instance to create a new launch configuration. To
get the instance ID, use the Amazon EC2 [DescribeInstances][1] API
operation. For more information, see [Creating an Auto Scaling group
using an EC2 instance][2] in the *Amazon EC2 Auto Scaling User
Guide*.

[1]: https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html
[2]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/create-asg-from-instance.html
@return [String]

@!attribute [rw] min_size

The minimum size of the group.
@return [Integer]

@!attribute [rw] max_size

The maximum size of the group.

<note markdown="1"> With a mixed instances policy that uses instance weighting, Amazon
EC2 Auto Scaling may need to go above `MaxSize` to meet your
capacity requirements. In this event, Amazon EC2 Auto Scaling will
never go above `MaxSize` by more than your largest instance weight
(weights that define how many units each instance contributes to the
desired capacity of the group).

 </note>
@return [Integer]

@!attribute [rw] desired_capacity

The desired capacity is the initial capacity of the Auto Scaling
group at the time of its creation and the capacity it attempts to
maintain. It can scale beyond this capacity if you configure auto
scaling. This number must be greater than or equal to the minimum
size of the group and less than or equal to the maximum size of the
group. If you do not specify a desired capacity, the default is the
minimum size of the group.
@return [Integer]

@!attribute [rw] default_cooldown

The amount of time, in seconds, after a scaling activity completes
before another scaling activity can start. The default value is
`300`. This setting applies when using simple scaling policies, but
not when using other scaling policies or scheduled scaling. For more
information, see [Scaling cooldowns for Amazon EC2 Auto Scaling][1]
in the *Amazon EC2 Auto Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html
@return [Integer]

@!attribute [rw] availability_zones

A list of Availability Zones where instances in the Auto Scaling
group can be created. This parameter is optional if you specify one
or more subnets for `VPCZoneIdentifier`.

Conditional: If your account supports EC2-Classic and VPC, this
parameter is required to launch instances into EC2-Classic.
@return [Array<String>]

@!attribute [rw] load_balancer_names

A list of Classic Load Balancers associated with this Auto Scaling
group. For Application Load Balancers, Network Load Balancers, and
Gateway Load Balancers, specify the `TargetGroupARNs` property
instead.
@return [Array<String>]

@!attribute [rw] target_group_arns

The Amazon Resource Names (ARN) of the target groups to associate
with the Auto Scaling group. Instances are registered as targets in
a target group, and traffic is routed to the target group. For more
information, see [Elastic Load Balancing and Amazon EC2 Auto
Scaling][1] in the *Amazon EC2 Auto Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-load-balancer.html
@return [Array<String>]

@!attribute [rw] health_check_type

The service to use for the health checks. The valid values are `EC2`
(default) and `ELB`. If you configure an Auto Scaling group to use
load balancer (ELB) health checks, it considers the instance
unhealthy if it fails either the EC2 status checks or the load
balancer health checks. For more information, see [Health checks for
Auto Scaling instances][1] in the *Amazon EC2 Auto Scaling User
Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html
@return [String]

@!attribute [rw] health_check_grace_period

The amount of time, in seconds, that Amazon EC2 Auto Scaling waits
before checking the health status of an EC2 instance that has come
into service. During this time, any health check failures for the
instance are ignored. The default value is `0`. For more
information, see [Health check grace period][1] in the *Amazon EC2
Auto Scaling User Guide*.

Conditional: Required if you are adding an `ELB` health check.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/healthcheck.html#health-check-grace-period
@return [Integer]

@!attribute [rw] placement_group

The name of an existing placement group into which to launch your
instances, if any. A placement group is a logical grouping of
instances within a single Availability Zone. You cannot specify
multiple Availability Zones and a placement group. For more
information, see [Placement Groups][1] in the *Amazon EC2 User Guide
for Linux Instances*.

[1]: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html
@return [String]

@!attribute [rw] vpc_zone_identifier

A comma-separated list of subnet IDs for a virtual private cloud
(VPC) where instances in the Auto Scaling group can be created. If
you specify `VPCZoneIdentifier` with `AvailabilityZones`, the
subnets that you specify for this parameter must reside in those
Availability Zones.

Conditional: If your account supports EC2-Classic and VPC, this
parameter is required to launch instances into a VPC.
@return [String]

@!attribute [rw] termination_policies

A policy or a list of policies that are used to select the instance
to terminate. These policies are executed in the order that you list
them. For more information, see [Controlling which Auto Scaling
instances terminate during scale in][1] in the *Amazon EC2 Auto
Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html
@return [Array<String>]

@!attribute [rw] new_instances_protected_from_scale_in

Indicates whether newly launched instances are protected from
termination by Amazon EC2 Auto Scaling when scaling in. For more
information about preventing instances from terminating on scale in,
see [Instance scale-in protection][1] in the *Amazon EC2 Auto
Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-instance-termination.html#instance-protection
@return [Boolean]

@!attribute [rw] capacity_rebalance

Indicates whether Capacity Rebalancing is enabled. Otherwise,
Capacity Rebalancing is disabled. When you turn on Capacity
Rebalancing, Amazon EC2 Auto Scaling attempts to launch a Spot
Instance whenever Amazon EC2 notifies that a Spot Instance is at an
elevated risk of interruption. After launching a new instance, it
then terminates an old instance. For more information, see [Amazon
EC2 Auto Scaling Capacity Rebalancing][1] in the *Amazon EC2 Auto
Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/capacity-rebalance.html
@return [Boolean]

@!attribute [rw] lifecycle_hook_specification_list

One or more lifecycle hooks for the group, which specify actions to
perform when Amazon EC2 Auto Scaling launches or terminates
instances.
@return [Array<Types::LifecycleHookSpecification>]

@!attribute [rw] tags

One or more tags. You can tag your Auto Scaling group and propagate
the tags to the Amazon EC2 instances it launches. Tags are not
propagated to Amazon EBS volumes. To add tags to Amazon EBS volumes,
specify the tags in a launch template but use caution. If the launch
template specifies an instance tag with a key that is also specified
for the Auto Scaling group, Amazon EC2 Auto Scaling overrides the
value of that instance tag with the value specified by the Auto
Scaling group. For more information, see [Tagging Auto Scaling
groups and instances][1] in the *Amazon EC2 Auto Scaling User
Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-tagging.html
@return [Array<Types::Tag>]

@!attribute [rw] service_linked_role_arn

The Amazon Resource Name (ARN) of the service-linked role that the
Auto Scaling group uses to call other Amazon Web Services on your
behalf. By default, Amazon EC2 Auto Scaling uses a service-linked
role named `AWSServiceRoleForAutoScaling`, which it creates if it
does not exist. For more information, see [Service-linked roles][1]
in the *Amazon EC2 Auto Scaling User Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/autoscaling-service-linked-role.html
@return [String]

@!attribute [rw] max_instance_lifetime

The maximum amount of time, in seconds, that an instance can be in
service. The default is null. If specified, the value must be either
0 or a number equal to or greater than 86,400 seconds (1 day). For
more information, see [Replacing Auto Scaling instances based on
maximum instance lifetime][1] in the *Amazon EC2 Auto Scaling User
Guide*.

[1]: https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-max-instance-lifetime.html
@return [Integer]

@!attribute [rw] context

Reserved.
@return [String]

@see docs.aws.amazon.com/goto/WebAPI/autoscaling-2011-01-01/CreateAutoScalingGroupType AWS API Documentation

Constants

SENSITIVE