Table of Contents

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
ILoadBalancerTarget
IConnectable
IApplicationLoadBalancerTarget
INetworkLoadBalancerTarget
IResource
IConstruct
IConstruct
IDependable
IGrantable

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 Construct
id string
props IAutoScalingGroupProps

Properties

AlbTargetGroup

protected virtual ApplicationTargetGroup? AlbTargetGroup { get; set; }

Property Value

ApplicationTargetGroup

AutoScalingGroupArn

Arn of the AutoScalingGroup.

public virtual string AutoScalingGroupArn { get; }

Property Value

string

AutoScalingGroupName

Name of the AutoScalingGroup.

public virtual string AutoScalingGroupName { get; }

Property Value

string

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

string

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 string
props IBasicLifecycleHookProps

Returns

LifecycleHook

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

WarmPool

ApplyCloudFormationInit(CloudFormationInit, IApplyCloudFormationInitOptions?)

Use a CloudFormation Init configuration at instance startup.

public virtual void ApplyCloudFormationInit(CloudFormationInit init, IApplyCloudFormationInitOptions? options = null)

Parameters

init CloudFormationInit
options IApplyCloudFormationInitOptions

Remarks

This does the following:

    AreNewInstancesProtectedFromScaleIn()

    Returns true if newly-launched instances are protected from scale-in.

    public virtual bool AreNewInstancesProtectedFromScaleIn()

    Returns

    bool

    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

    scope Construct
    id string
    autoScalingGroupName string

    Returns

    IAutoScalingGroup

    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 string
    props ICpuUtilizationScalingProps

    Returns

    TargetTrackingScalingPolicy

    ScaleOnIncomingBytes(string, INetworkUtilizationScalingProps)

    Scale out or in to achieve a target network ingress rate.

    public virtual TargetTrackingScalingPolicy ScaleOnIncomingBytes(string id, INetworkUtilizationScalingProps props)

    Parameters

    id string
    props INetworkUtilizationScalingProps

    Returns

    TargetTrackingScalingPolicy

    ScaleOnMetric(string, IBasicStepScalingPolicyProps)

    Scale out or in, in response to a metric.

    public virtual StepScalingPolicy ScaleOnMetric(string id, IBasicStepScalingPolicyProps props)

    Parameters

    id string
    props IBasicStepScalingPolicyProps

    Returns

    StepScalingPolicy

    ScaleOnOutgoingBytes(string, INetworkUtilizationScalingProps)

    Scale out or in to achieve a target network egress rate.

    public virtual TargetTrackingScalingPolicy ScaleOnOutgoingBytes(string id, INetworkUtilizationScalingProps props)

    Parameters

    id string
    props INetworkUtilizationScalingProps

    Returns

    TargetTrackingScalingPolicy

    ScaleOnRequestCount(string, IRequestCountScalingProps)

    Scale out or in to achieve a target request handling rate.

    public virtual TargetTrackingScalingPolicy ScaleOnRequestCount(string id, IRequestCountScalingProps props)

    Parameters

    id string
    props IRequestCountScalingProps

    Returns

    TargetTrackingScalingPolicy

    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 string
    props IBasicScheduledActionProps

    Returns

    ScheduledAction

    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 string
    props IMetricTargetTrackingProps

    Returns

    TargetTrackingScalingPolicy