createAutoScalingGroup method
- required String autoScalingGroupName,
- required int maxSize,
- required int minSize,
- AvailabilityZoneDistribution? availabilityZoneDistribution,
- List<
String> ? availabilityZoneIds, - AvailabilityZoneImpairmentPolicy? availabilityZoneImpairmentPolicy,
- List<
String> ? availabilityZones, - bool? capacityRebalance,
- CapacityReservationSpecification? capacityReservationSpecification,
- String? context,
- int? defaultCooldown,
- int? defaultInstanceWarmup,
- DeletionProtection? deletionProtection,
- int? desiredCapacity,
- String? desiredCapacityType,
- int? healthCheckGracePeriod,
- String? healthCheckType,
- String? instanceId,
- InstanceLifecyclePolicy? instanceLifecyclePolicy,
- InstanceMaintenancePolicy? instanceMaintenancePolicy,
- String? launchConfigurationName,
- LaunchTemplateSpecification? launchTemplate,
- List<
LifecycleHookSpecification> ? lifecycleHookSpecificationList, - List<
String> ? loadBalancerNames, - int? maxInstanceLifetime,
- MixedInstancesPolicy? mixedInstancesPolicy,
- bool? newInstancesProtectedFromScaleIn,
- String? placementGroup,
- String? serviceLinkedRoleARN,
- bool? skipZonalShiftValidation,
- List<
Tag> ? tags, - List<
String> ? targetGroupARNs, - List<
String> ? terminationPolicies, - List<
TrafficSourceIdentifier> ? trafficSources, - String? vPCZoneIdentifier,
We strongly recommend using a launch template when calling this operation to ensure full functionality for Amazon EC2 Auto Scaling and Amazon EC2.
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 Quotas for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
If you're new to Amazon EC2 Auto Scaling, see the introductory tutorials in Get started with Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
Every Auto Scaling group has three size properties
(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.
The name can contain any ASCII character 33 to 126 including most punctuation characters, digits, and upper and lowercased letters.
Parameter maxSize :
The maximum size of the group.
Parameter minSize :
The minimum size of the group.
Parameter availabilityZoneDistribution :
The instance capacity distribution across Availability Zones.
Parameter availabilityZoneIds :
A list of Availability Zone IDs where the Auto Scaling group can launch
instances. You cannot specify both AvailabilityZones and
AvailabilityZoneIds in the same request.
Parameter availabilityZoneImpairmentPolicy :
The policy for Availability Zone impairment.
Parameter availabilityZones :
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
property, or for attaching a network interface when an existing network
interface ID is specified in a launch template.
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 Use
Capacity Rebalancing to handle Amazon EC2 Spot Interruptions in the in
the Amazon EC2 Auto Scaling User Guide.
Parameter capacityReservationSpecification :
The capacity reservation specification for the Auto Scaling group.
Parameter context :
Reserved.
Parameter defaultCooldown :
Only needed if you use simple scaling policies.
The amount of time, in seconds, between one scaling activity ending and another one starting due to simple scaling policies. For more information, see Scaling cooldowns for Amazon EC2 Auto Scaling in the Amazon EC2 Auto Scaling User Guide.
Default: 300 seconds
Parameter defaultInstanceWarmup :
The amount of time, in seconds, until a new instance is considered to have
finished initializing and resource consumption to become stable after it
enters the InService state.
During an instance refresh, Amazon EC2 Auto Scaling waits for the warm-up period after it replaces an instance before it moves on to replacing the next instance. Amazon EC2 Auto Scaling also waits for the warm-up period before aggregating the metrics for new instances with existing instances in the Amazon CloudWatch metrics that are used for scaling, resulting in more reliable usage data. For more information, see Set the default instance warmup for an Auto Scaling group in the Amazon EC2 Auto Scaling User Guide. Default: None
Parameter deletionProtection :
The deletion protection setting for the Auto Scaling group. This setting
helps safeguard your Auto Scaling group and its instances by controlling
whether the DeleteAutoScalingGroup operation is allowed. When
deletion protection is enabled, users cannot delete the Auto Scaling group
according to the specified protection level until the setting is changed
back to a less restrictive level.
The valid values are none,
prevent-force-deletion, and
prevent-all-deletion.
Default: none
For more information, see Configure deletion protection for your Amazon EC2 Auto Scaling resources 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 desiredCapacityType :
The unit of measurement for the value specified for desired capacity.
Amazon EC2 Auto Scaling supports DesiredCapacityType for
attribute-based instance type selection only. For more information, see Create
a mixed instances group using attribute-based instance type selection
in the Amazon EC2 Auto Scaling User Guide.
By default, Amazon EC2 Auto Scaling specifies units, which
translates into number of instances.
Valid values: units | vcpu |
memory-mib
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
and marking it unhealthy due to a failed health check. This is useful if
your instances do not immediately pass their health checks after they
enter the InService state. For more information, see Set
the health check grace period for an Auto Scaling group in the
Amazon EC2 Auto Scaling User Guide.
Default: 0 seconds
Parameter healthCheckType :
A comma-separated value string of one or more health check types.
The valid values are EC2, EBS, ELB,
and VPC_LATTICE. EC2 is the default health check
and cannot be disabled. For more information, see Health
checks for instances in an Auto Scaling group in the Amazon EC2
Auto Scaling User Guide.
Only specify EC2 if you must clear a value that was
previously set.
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 Create
an Auto Scaling group using parameters from an existing instance in
the Amazon EC2 Auto Scaling User Guide.
Parameter instanceLifecyclePolicy :
The instance lifecycle policy for the Auto Scaling group. This policy
controls instance behavior when an instance transitions through its
lifecycle states. Configure retention triggers to specify when instances
should move to a Retained state instead of automatic
termination.
For more information, see Control instance retention with instance lifecycle policies in the Amazon EC2 Auto Scaling User Guide.
Parameter instanceMaintenancePolicy :
An instance maintenance policy. For more information, see Set
instance maintenance policy 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 :
Information 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 to add to the Auto Scaling group before
instances are launched.
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 Replace
Auto Scaling instances based on maximum instance lifetime in the
Amazon EC2 Auto Scaling User Guide.
Parameter mixedInstancesPolicy :
The mixed instances policy. 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 Use
instance scale-in protection in the Amazon EC2 Auto Scaling User
Guide.
Parameter placementGroup :
The name of the placement group into which to launch your instances. For
more information, see Placement
groups in the Amazon EC2 User Guide.
Parameter serviceLinkedRoleARN :
The Amazon Resource Name (ARN) of the service-linked role that the Auto
Scaling group uses to call other Amazon Web Services service 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 skipZonalShiftValidation :
If you enable zonal shift with cross-zone disabled load balancers,
capacity could become imbalanced across Availability Zones. To skip the
validation, specify true. For more information, see Auto
Scaling group zonal shift 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 Tag
Auto Scaling groups and instances in the Amazon EC2 Auto Scaling
User Guide.
Parameter targetGroupARNs :
The Amazon Resource Names (ARN) of the Elastic Load Balancing target
groups to associate with the Auto Scaling group. Instances are registered
as targets with the target groups. The target groups receive incoming
traffic and route requests to one or more registered targets. For more
information, see Use
Elastic Load Balancing to distribute traffic across the instances in your
Auto Scaling group 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 Configure
termination policies for Amazon EC2 Auto Scaling in the Amazon EC2
Auto Scaling User Guide.
Valid values: Default | AllocationStrategy |
ClosestToNextInstanceHour | NewestInstance |
OldestInstance | OldestLaunchConfiguration |
OldestLaunchTemplate |
arn:aws:lambda:region:account-id:function:my-function:my-alias
Parameter trafficSources :
The list of traffic sources to attach to this Auto Scaling group. You can
use any of the following as traffic sources for an Auto Scaling group:
Classic Load Balancer, Application Load Balancer, Gateway Load Balancer,
Network Load Balancer, and VPC Lattice.
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 must reside in those Availability Zones.
Implementation
Future<void> createAutoScalingGroup({
required String autoScalingGroupName,
required int maxSize,
required int minSize,
AvailabilityZoneDistribution? availabilityZoneDistribution,
List<String>? availabilityZoneIds,
AvailabilityZoneImpairmentPolicy? availabilityZoneImpairmentPolicy,
List<String>? availabilityZones,
bool? capacityRebalance,
CapacityReservationSpecification? capacityReservationSpecification,
String? context,
int? defaultCooldown,
int? defaultInstanceWarmup,
DeletionProtection? deletionProtection,
int? desiredCapacity,
String? desiredCapacityType,
int? healthCheckGracePeriod,
String? healthCheckType,
String? instanceId,
InstanceLifecyclePolicy? instanceLifecyclePolicy,
InstanceMaintenancePolicy? instanceMaintenancePolicy,
String? launchConfigurationName,
LaunchTemplateSpecification? launchTemplate,
List<LifecycleHookSpecification>? lifecycleHookSpecificationList,
List<String>? loadBalancerNames,
int? maxInstanceLifetime,
MixedInstancesPolicy? mixedInstancesPolicy,
bool? newInstancesProtectedFromScaleIn,
String? placementGroup,
String? serviceLinkedRoleARN,
bool? skipZonalShiftValidation,
List<Tag>? tags,
List<String>? targetGroupARNs,
List<String>? terminationPolicies,
List<TrafficSourceIdentifier>? trafficSources,
String? vPCZoneIdentifier,
}) async {
final $request = <String, String>{
'AutoScalingGroupName': autoScalingGroupName,
'MaxSize': maxSize.toString(),
'MinSize': minSize.toString(),
if (availabilityZoneDistribution != null)
for (var e1 in availabilityZoneDistribution.toQueryMap().entries)
'AvailabilityZoneDistribution.${e1.key}': e1.value,
if (availabilityZoneIds != null)
if (availabilityZoneIds.isEmpty)
'AvailabilityZoneIds': ''
else
for (var i1 = 0; i1 < availabilityZoneIds.length; i1++)
'AvailabilityZoneIds.member.${i1 + 1}': availabilityZoneIds[i1],
if (availabilityZoneImpairmentPolicy != null)
for (var e1 in availabilityZoneImpairmentPolicy.toQueryMap().entries)
'AvailabilityZoneImpairmentPolicy.${e1.key}': e1.value,
if (availabilityZones != null)
if (availabilityZones.isEmpty)
'AvailabilityZones': ''
else
for (var i1 = 0; i1 < availabilityZones.length; i1++)
'AvailabilityZones.member.${i1 + 1}': availabilityZones[i1],
if (capacityRebalance != null)
'CapacityRebalance': capacityRebalance.toString(),
if (capacityReservationSpecification != null)
for (var e1 in capacityReservationSpecification.toQueryMap().entries)
'CapacityReservationSpecification.${e1.key}': e1.value,
if (context != null) 'Context': context,
if (defaultCooldown != null)
'DefaultCooldown': defaultCooldown.toString(),
if (defaultInstanceWarmup != null)
'DefaultInstanceWarmup': defaultInstanceWarmup.toString(),
if (deletionProtection != null)
'DeletionProtection': deletionProtection.value,
if (desiredCapacity != null)
'DesiredCapacity': desiredCapacity.toString(),
if (desiredCapacityType != null)
'DesiredCapacityType': desiredCapacityType,
if (healthCheckGracePeriod != null)
'HealthCheckGracePeriod': healthCheckGracePeriod.toString(),
if (healthCheckType != null) 'HealthCheckType': healthCheckType,
if (instanceId != null) 'InstanceId': instanceId,
if (instanceLifecyclePolicy != null)
for (var e1 in instanceLifecyclePolicy.toQueryMap().entries)
'InstanceLifecyclePolicy.${e1.key}': e1.value,
if (instanceMaintenancePolicy != null)
for (var e1 in instanceMaintenancePolicy.toQueryMap().entries)
'InstanceMaintenancePolicy.${e1.key}': e1.value,
if (launchConfigurationName != null)
'LaunchConfigurationName': launchConfigurationName,
if (launchTemplate != null)
for (var e1 in launchTemplate.toQueryMap().entries)
'LaunchTemplate.${e1.key}': e1.value,
if (lifecycleHookSpecificationList != null)
if (lifecycleHookSpecificationList.isEmpty)
'LifecycleHookSpecificationList': ''
else
for (var i1 = 0; i1 < lifecycleHookSpecificationList.length; i1++)
for (var e3
in lifecycleHookSpecificationList[i1].toQueryMap().entries)
'LifecycleHookSpecificationList.member.${i1 + 1}.${e3.key}':
e3.value,
if (loadBalancerNames != null)
if (loadBalancerNames.isEmpty)
'LoadBalancerNames': ''
else
for (var i1 = 0; i1 < loadBalancerNames.length; i1++)
'LoadBalancerNames.member.${i1 + 1}': loadBalancerNames[i1],
if (maxInstanceLifetime != null)
'MaxInstanceLifetime': maxInstanceLifetime.toString(),
if (mixedInstancesPolicy != null)
for (var e1 in mixedInstancesPolicy.toQueryMap().entries)
'MixedInstancesPolicy.${e1.key}': e1.value,
if (newInstancesProtectedFromScaleIn != null)
'NewInstancesProtectedFromScaleIn':
newInstancesProtectedFromScaleIn.toString(),
if (placementGroup != null) 'PlacementGroup': placementGroup,
if (serviceLinkedRoleARN != null)
'ServiceLinkedRoleARN': serviceLinkedRoleARN,
if (skipZonalShiftValidation != null)
'SkipZonalShiftValidation': skipZonalShiftValidation.toString(),
if (tags != null)
if (tags.isEmpty)
'Tags': ''
else
for (var i1 = 0; i1 < tags.length; i1++)
for (var e3 in tags[i1].toQueryMap().entries)
'Tags.member.${i1 + 1}.${e3.key}': e3.value,
if (targetGroupARNs != null)
if (targetGroupARNs.isEmpty)
'TargetGroupARNs': ''
else
for (var i1 = 0; i1 < targetGroupARNs.length; i1++)
'TargetGroupARNs.member.${i1 + 1}': targetGroupARNs[i1],
if (terminationPolicies != null)
if (terminationPolicies.isEmpty)
'TerminationPolicies': ''
else
for (var i1 = 0; i1 < terminationPolicies.length; i1++)
'TerminationPolicies.member.${i1 + 1}': terminationPolicies[i1],
if (trafficSources != null)
if (trafficSources.isEmpty)
'TrafficSources': ''
else
for (var i1 = 0; i1 < trafficSources.length; i1++)
for (var e3 in trafficSources[i1].toQueryMap().entries)
'TrafficSources.member.${i1 + 1}.${e3.key}': e3.value,
if (vPCZoneIdentifier != null) 'VPCZoneIdentifier': vPCZoneIdentifier,
};
await _protocol.send(
$request,
action: 'CreateAutoScalingGroup',
version: '2011-01-01',
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
);
}