Class AutoScalingGroup
- Namespace
- Amazon.CDK.AWS.AutoScaling
- Assembly
- Amazon.CDK.AWS.AutoScaling.dll
A Fleet represents a managed set of EC2 instances.
public class AutoScalingGroup : Resource, ILoadBalancerTarget, IConnectable, IApplicationLoadBalancerTarget, INetworkLoadBalancerTarget, IAutoScalingGroup, IResource, IConstruct, IConstruct, IDependable, IGrantable
- Inheritance
-
AutoScalingGroup
- Implements
-
ILoadBalancerTargetIConnectableIApplicationLoadBalancerTargetINetworkLoadBalancerTargetIResourceIConstructIConstructIDependableIGrantable
Examples
Vpc vpc;
var mySecurityGroup = new SecurityGroup(this, "SecurityGroup", new SecurityGroupProps { Vpc = vpc });
new AutoScalingGroup(this, "ASG", new AutoScalingGroupProps {
Vpc = vpc,
InstanceType = InstanceType.Of(InstanceClass.BURSTABLE2, InstanceSize.MICRO),
MachineImage = new AmazonLinuxImage(),
SecurityGroup = mySecurityGroup
});
Remarks
The Fleet models a number of AutoScalingGroups, a launch configuration, a security group and an instance role.
It allows adding arbitrary commands to the startup scripts of the instances in the fleet.
The ASG spans the availability zones specified by vpcSubnets, falling back to the Vpc default strategy if not specified.
ExampleMetadata: infused
Constructors
AutoScalingGroup(Construct, string, IAutoScalingGroupProps)
public AutoScalingGroup(Construct scope, string id, IAutoScalingGroupProps props)
Parameters
scope
Constructid
stringprops
IAutoScalingGroupProps
Properties
AlbTargetGroup
protected virtual ApplicationTargetGroup? AlbTargetGroup { get; set; }
Property Value
- ApplicationTargetGroup
AutoScalingGroupArn
Arn of the AutoScalingGroup.
public virtual string AutoScalingGroupArn { get; }
Property Value
AutoScalingGroupName
Name of the AutoScalingGroup.
public virtual string AutoScalingGroupName { get; }
Property Value
Connections
The network connections associated with this resource.
public virtual Connections_ Connections { get; }
Property Value
- Connections_
GrantPrincipal
The principal to grant permissions to.
public virtual IPrincipal GrantPrincipal { get; }
Property Value
- IPrincipal
MaxInstanceLifetime
The maximum amount of time that an instance can be in service.
public virtual Duration? MaxInstanceLifetime { get; }
Property Value
- Duration
NewInstancesProtectedFromScaleIn
protected virtual bool? NewInstancesProtectedFromScaleIn { get; set; }
Property Value
- bool?
OsType
The type of OS instances of this fleet are running.
public virtual OperatingSystemType OsType { get; }
Property Value
- OperatingSystemType
Role
The IAM Role in the instance profile.
public virtual IRole Role { get; }
Property Value
- IRole
Remarks
Throws: an error if a launch template is given
SpotPrice
The maximum spot price configured for the autoscaling group.
public virtual string? SpotPrice { get; }
Property Value
Remarks
undefined
indicates that this group uses on-demand capacity.
UserData
The Base64-encoded user data to make available to the launched EC2 instances.
public virtual UserData UserData { get; }
Property Value
- UserData
Remarks
Throws: an error if a launch template is given and it does not provide a non-null userData
Methods
AddLifecycleHook(string, IBasicLifecycleHookProps)
Send a message to either an SQS queue or SNS topic when instances launch or terminate.
public virtual LifecycleHook AddLifecycleHook(string id, IBasicLifecycleHookProps props)
Parameters
id
stringprops
IBasicLifecycleHookProps
Returns
AddSecurityGroup(ISecurityGroup)
Add the security group to all instances via the launch configuration security groups array.
public virtual void AddSecurityGroup(ISecurityGroup securityGroup)
Parameters
securityGroup
ISecurityGroup: The security group to add.
AddToRolePolicy(PolicyStatement)
Adds a statement to the IAM role assumed by instances of this fleet.
public virtual void AddToRolePolicy(PolicyStatement statement)
Parameters
statement
PolicyStatement
AddUserData(params string[])
Add command to the startup script of fleet instances.
public virtual void AddUserData(params string[] commands)
Parameters
commands
string[]
Remarks
The command must be in the scripting language supported by the fleet's OS (i.e. Linux/Windows). Does nothing for imported ASGs.
AddWarmPool(IWarmPoolOptions?)
Add a pool of pre-initialized EC2 instances that sits alongside an Auto Scaling group.
public virtual WarmPool AddWarmPool(IWarmPoolOptions? options = null)
Parameters
options
IWarmPoolOptions
Returns
ApplyCloudFormationInit(CloudFormationInit, IApplyCloudFormationInitOptions?)
Use a CloudFormation Init configuration at instance startup.
public virtual void ApplyCloudFormationInit(CloudFormationInit init, IApplyCloudFormationInitOptions? options = null)
Parameters
init
CloudFormationInitoptions
IApplyCloudFormationInitOptions
Remarks
This does the following:
AreNewInstancesProtectedFromScaleIn()
Returns true
if newly-launched instances are protected from scale-in.
public virtual bool AreNewInstancesProtectedFromScaleIn()
Returns
AttachToApplicationTargetGroup(IApplicationTargetGroup)
Attach to ELBv2 Application Target Group.
public virtual ILoadBalancerTargetProps AttachToApplicationTargetGroup(IApplicationTargetGroup targetGroup)
Parameters
targetGroup
IApplicationTargetGroup
Returns
- ILoadBalancerTargetProps
AttachToClassicLB(LoadBalancer)
Attach to a classic load balancer.
public virtual void AttachToClassicLB(LoadBalancer loadBalancer)
Parameters
loadBalancer
LoadBalancer
AttachToNetworkTargetGroup(INetworkTargetGroup)
Attach to ELBv2 Application Target Group.
public virtual ILoadBalancerTargetProps AttachToNetworkTargetGroup(INetworkTargetGroup targetGroup)
Parameters
targetGroup
INetworkTargetGroup
Returns
- ILoadBalancerTargetProps
FromAutoScalingGroupName(Construct, string, string)
public static IAutoScalingGroup FromAutoScalingGroupName(Construct scope, string id, string autoScalingGroupName)
Parameters
Returns
ProtectNewInstancesFromScaleIn()
Ensures newly-launched instances are protected from scale-in.
public virtual void ProtectNewInstancesFromScaleIn()
ScaleOnCpuUtilization(string, ICpuUtilizationScalingProps)
Scale out or in to achieve a target CPU utilization.
public virtual TargetTrackingScalingPolicy ScaleOnCpuUtilization(string id, ICpuUtilizationScalingProps props)
Parameters
id
stringprops
ICpuUtilizationScalingProps
Returns
ScaleOnIncomingBytes(string, INetworkUtilizationScalingProps)
Scale out or in to achieve a target network ingress rate.
public virtual TargetTrackingScalingPolicy ScaleOnIncomingBytes(string id, INetworkUtilizationScalingProps props)
Parameters
id
stringprops
INetworkUtilizationScalingProps
Returns
ScaleOnMetric(string, IBasicStepScalingPolicyProps)
Scale out or in, in response to a metric.
public virtual StepScalingPolicy ScaleOnMetric(string id, IBasicStepScalingPolicyProps props)
Parameters
id
stringprops
IBasicStepScalingPolicyProps
Returns
ScaleOnOutgoingBytes(string, INetworkUtilizationScalingProps)
Scale out or in to achieve a target network egress rate.
public virtual TargetTrackingScalingPolicy ScaleOnOutgoingBytes(string id, INetworkUtilizationScalingProps props)
Parameters
id
stringprops
INetworkUtilizationScalingProps
Returns
ScaleOnRequestCount(string, IRequestCountScalingProps)
Scale out or in to achieve a target request handling rate.
public virtual TargetTrackingScalingPolicy ScaleOnRequestCount(string id, IRequestCountScalingProps props)
Parameters
id
stringprops
IRequestCountScalingProps
Returns
Remarks
The AutoScalingGroup must have been attached to an Application Load Balancer in order to be able to call this.
ScaleOnSchedule(string, IBasicScheduledActionProps)
Scale out or in based on time.
public virtual ScheduledAction ScaleOnSchedule(string id, IBasicScheduledActionProps props)
Parameters
id
stringprops
IBasicScheduledActionProps
Returns
ScaleToTrackMetric(string, IMetricTargetTrackingProps)
Scale out or in in order to keep a metric around a target value.
public virtual TargetTrackingScalingPolicy ScaleToTrackMetric(string id, IMetricTargetTrackingProps props)
Parameters
id
stringprops
IMetricTargetTrackingProps