createAutoScalingGroup method
- required String autoScalingGroupName,
- required int maxSize,
- required int minSize,
- List<
String> ? availabilityZones, - bool? capacityRebalance,
- int? defaultCooldown,
- int? desiredCapacity,
- int? healthCheckGracePeriod,
- String? healthCheckType,
- String? instanceId,
- String? launchConfigurationName,
- LaunchTemplateSpecification? launchTemplate,
- List<
LifecycleHookSpecification> ? lifecycleHookSpecificationList, - List<
String> ? loadBalancerNames, - int? maxInstanceLifetime,
- MixedInstancesPolicy? mixedInstancesPolicy,
- bool? newInstancesProtectedFromScaleIn,
- String? placementGroup,
- String? serviceLinkedRoleARN,
- List<
Tag> ? tags, - List<
String> ? targetGroupARNs, - List<
String> ? terminationPolicies, - String? vPCZoneIdentifier,
Creates an Auto Scaling group with the specified name and attributes.
If you exceed your maximum limit of Auto Scaling groups, the call fails. To query this limit, call the DescribeAccountLimits API. For information about updating this limit, see Amazon EC2 Auto Scaling service quotas in the Amazon EC2 Auto Scaling User Guide.
For introductory exercises for creating an Auto Scaling group, see Getting started with Amazon EC2 Auto Scaling and Tutorial: Set up a scaled and load-balanced application in the Amazon EC2 Auto Scaling User Guide. For more information, see Auto Scaling groups in the Amazon EC2 Auto Scaling User Guide.
Every Auto Scaling group has three size parameters
(DesiredCapacity
, MaxSize
, and
MinSize
). Usually, you set these sizes based on a specific
number of instances. However, if you configure a mixed instances policy
that defines weights for the instance types, you must specify these sizes
with the same units that you use for weighting instances.
May throw AlreadyExistsFault. May throw LimitExceededFault. May throw ResourceContentionFault. May throw ServiceLinkedRoleFailure.
Parameter autoScalingGroupName
:
The name of the Auto Scaling group. This name must be unique per Region
per account.
Parameter maxSize
:
The maximum size of the group.
Parameter minSize
:
The minimum size of the group.
Parameter availabilityZones
:
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.
Parameter capacityRebalance
:
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 in the Amazon EC2 Auto
Scaling User Guide.
Parameter defaultCooldown
:
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 in the Amazon EC2 Auto
Scaling User Guide.
Parameter desiredCapacity
:
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.
Parameter healthCheckGracePeriod
:
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 in the Amazon EC2 Auto Scaling User Guide.
Conditional: Required if you are adding an ELB
health check.
Parameter healthCheckType
:
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 in the Amazon EC2 Auto Scaling
User Guide.
Parameter instanceId
:
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
API operation. For more information, see Creating
an Auto Scaling group using an EC2 instance in the Amazon EC2 Auto
Scaling User Guide.
Parameter launchConfigurationName
:
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
).
Parameter launchTemplate
:
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
).
Parameter lifecycleHookSpecificationList
:
One or more lifecycle hooks for the group, which specify actions to
perform when Amazon EC2 Auto Scaling launches or terminates instances.
Parameter loadBalancerNames
:
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.
Parameter maxInstanceLifetime
:
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 in the
Amazon EC2 Auto Scaling User Guide.
Parameter mixedInstancesPolicy
:
An embedded object that specifies a mixed instances policy. The required
parameters must be specified. If optional parameters are unspecified,
their default values are used.
The policy includes parameters 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 parameters 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 in the Amazon EC2 Auto Scaling User Guide.
Parameter newInstancesProtectedFromScaleIn
:
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 in the Amazon EC2 Auto Scaling User Guide.
Parameter placementGroup
:
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 in the Amazon EC2 User Guide for Linux Instances.
Parameter serviceLinkedRoleARN
:
The Amazon Resource Name (ARN) of the service-linked role that the Auto
Scaling group uses to call other AWS 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 in the Amazon EC2 Auto Scaling User Guide.
Parameter 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 in the Amazon EC2 Auto Scaling
User Guide.
Parameter targetGroupARNs
:
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 in the Amazon EC2 Auto
Scaling User Guide.
Parameter terminationPolicies
:
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 in the
Amazon EC2 Auto Scaling User Guide.
Parameter vPCZoneIdentifier
:
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.
Implementation
Future<void> createAutoScalingGroup({
required String autoScalingGroupName,
required int maxSize,
required int minSize,
List<String>? availabilityZones,
bool? capacityRebalance,
int? defaultCooldown,
int? desiredCapacity,
int? healthCheckGracePeriod,
String? healthCheckType,
String? instanceId,
String? launchConfigurationName,
LaunchTemplateSpecification? launchTemplate,
List<LifecycleHookSpecification>? lifecycleHookSpecificationList,
List<String>? loadBalancerNames,
int? maxInstanceLifetime,
MixedInstancesPolicy? mixedInstancesPolicy,
bool? newInstancesProtectedFromScaleIn,
String? placementGroup,
String? serviceLinkedRoleARN,
List<Tag>? tags,
List<String>? targetGroupARNs,
List<String>? terminationPolicies,
String? vPCZoneIdentifier,
}) async {
ArgumentError.checkNotNull(autoScalingGroupName, 'autoScalingGroupName');
_s.validateStringLength(
'autoScalingGroupName',
autoScalingGroupName,
1,
255,
isRequired: true,
);
ArgumentError.checkNotNull(maxSize, 'maxSize');
ArgumentError.checkNotNull(minSize, 'minSize');
_s.validateStringLength(
'healthCheckType',
healthCheckType,
1,
32,
);
_s.validateStringLength(
'instanceId',
instanceId,
1,
19,
);
_s.validateStringLength(
'launchConfigurationName',
launchConfigurationName,
1,
255,
);
_s.validateStringLength(
'placementGroup',
placementGroup,
1,
255,
);
_s.validateStringLength(
'serviceLinkedRoleARN',
serviceLinkedRoleARN,
1,
1600,
);
_s.validateStringLength(
'vPCZoneIdentifier',
vPCZoneIdentifier,
1,
2047,
);
final $request = <String, dynamic>{};
$request['AutoScalingGroupName'] = autoScalingGroupName;
$request['MaxSize'] = maxSize;
$request['MinSize'] = minSize;
availabilityZones?.also((arg) => $request['AvailabilityZones'] = arg);
capacityRebalance?.also((arg) => $request['CapacityRebalance'] = arg);
defaultCooldown?.also((arg) => $request['DefaultCooldown'] = arg);
desiredCapacity?.also((arg) => $request['DesiredCapacity'] = arg);
healthCheckGracePeriod
?.also((arg) => $request['HealthCheckGracePeriod'] = arg);
healthCheckType?.also((arg) => $request['HealthCheckType'] = arg);
instanceId?.also((arg) => $request['InstanceId'] = arg);
launchConfigurationName
?.also((arg) => $request['LaunchConfigurationName'] = arg);
launchTemplate?.also((arg) => $request['LaunchTemplate'] = arg);
lifecycleHookSpecificationList
?.also((arg) => $request['LifecycleHookSpecificationList'] = arg);
loadBalancerNames?.also((arg) => $request['LoadBalancerNames'] = arg);
maxInstanceLifetime?.also((arg) => $request['MaxInstanceLifetime'] = arg);
mixedInstancesPolicy?.also((arg) => $request['MixedInstancesPolicy'] = arg);
newInstancesProtectedFromScaleIn
?.also((arg) => $request['NewInstancesProtectedFromScaleIn'] = arg);
placementGroup?.also((arg) => $request['PlacementGroup'] = arg);
serviceLinkedRoleARN?.also((arg) => $request['ServiceLinkedRoleARN'] = arg);
tags?.also((arg) => $request['Tags'] = arg);
targetGroupARNs?.also((arg) => $request['TargetGroupARNs'] = arg);
terminationPolicies?.also((arg) => $request['TerminationPolicies'] = arg);
vPCZoneIdentifier?.also((arg) => $request['VPCZoneIdentifier'] = arg);
await _protocol.send(
$request,
action: 'CreateAutoScalingGroup',
version: '2011-01-01',
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
shape: shapes['CreateAutoScalingGroupType'],
shapes: shapes,
);
}