Fugue.AWS.AutoScaling.AutoScalingGroup

This is the preferred interface for making AutoScaling Group resources with Fugue. The AutoScalingGroup and LaunchConfiguration modules comprise the bulk of the interface.

If you want to manage an ASG with Fugue, the new function is the right place to start.

Module Members

external

(Function)

Create a reference to an externally managed AutoScalingGroup.

Example usage:

asg: AutoScaling.AutoScalingGroup.external("my-asg", AWS.Us-east-1)

Type Signature

 fun (String, Region) -> AutoScalingGroup
Argument: name
Type: String
Argument: region
Type: Region
Returns:

A reference to the specified AutoScalingGroup.

Type: AutoScalingGroup

new

(Function)

new AutoScaling Group (Constructor)

Call this constructor to create a new Fugue.Core.AWS.AutoScaling.AutoScalingGroup value.

Type Signature

 fun (AutoScalingSpec) -> AutoScalingGroup
Argument: spec

An AutoScaling Group specification record.

Type: AutoScalingSpec

Returns:

A Fugue.Core.AWS.AutoScaling.AutoScalingGroup value.

Type: AutoScalingGroup

AutoScalingSpec

(Type)

type AutoScalingSpec:
  name: Optional<String>
  minSize: Int
  maxSize: Int
  defaultCooldown: Int
  healthCheckType: HealthCheck
  healthCheckGracePeriod: Optional<Int>
  placementGroup: Optional<String>
  enabledMetrics: Optional<List<Metric>>
  tags: Optional<List<Tag>>
  terminationPolicies: Optional<List<TerminationPolicy>>
  newInstancesProtectedFromScaleIn: Optional<Bool>
  launchConfiguration: LaunchConfiguration
  subnets: List<Subnet>
  loadBalancers: Optional<List<LoadBalancer>>
  notificationConfigurations: Optional<List<NotificationConfiguration>>

AutoScaling Group Specification (Resource)

This type of value specifies an AutoScalingGroup for the AutoScaling. new() constructor.

Example:

AutoScaling.AutoScalingGroup.new {
    name: "my-asg",
    subnets: demo-app-network.publicSubnets,
    loadBalancers: [demo-app-elb],
    minSize: 4,
    maxSize: 4,
    defaultCooldown: 300,
    launchConfiguration: demo-app-lc,
    healthCheckType: AutoScaling.Ec2,
    tags: [demo-app-tag],
    terminationPolicies: [AutoScaling.ClosestToNextInstanceHour],
    enabledMetrics: [
      AutoScaling.GroupInServiceInstances,
      AutoScaling.GroupTotalInstances
    ]
}

Record {

Field: name

Optional name for the AutoScalingGroup. A unique name will be generated automatically if no name is provided.

Type: Optional<String>

Field: minSize

Minimum number of active instances in the AutoScaling Group. Mutable.

Type: Int

Field: maxSize

Maximum number of active instances in the AutoScaling Group. Mutable.

Type: Int

Field: defaultCooldown

The default cooldown time, in seconds, to use between scaling events. Changes to the group size are not made during the cooldown period, no matter what the metrics might read. Mutable.

Type: Int

Field: healthCheckType

The type of health check to use for instances in the group. Mutable.

Type: HealthCheck

Field: healthCheckGracePeriod

The grace period to allow new instances in the group to go without a health check. Such instances are not put into service until their health check succeeds, and any health check failures on the instance are ignored. Mutable.

Type: Optional<Int>

Field: placementGroup

The placement group in which to launch instances for the group. Mutable.

Type: Optional<String>

Field: enabledMetrics

Metrics to enable on the group. Mutable.

Type: Optional<List<Metric>>

Field: tags

Key-value pair tags to assign to the group. Mutable.

Type: Optional<List<Tag>>

Field: terminationPolicies

Policies to use for terminating instances in the group when scaling down. Mutable.

Type: Optional<List<TerminationPolicy>>

Field: newInstancesProtectedFromScaleIn

Mutable.

Type: Optional<Bool>

Field: launchConfiguration

The launch configuration to use for new instances when scaling up. Mutable.

Type: LaunchConfiguration

Field: subnets

The subnets in which to launch instances in the group. Mutable.

Type: List<Subnet>

Field: loadBalancers

The load balancers with which to register instances in the group. Mutable.

Type: Optional<List<LoadBalancer>>

Field: notificationConfigurations

The notification configurations to associate with the AutoScaling Group. Mutable.

Type: Optional<List<NotificationConfiguration>>

}

default

(Value)

default:
  minSize: 1
  maxSize: 1
  defaultCooldown: 300
  healthCheckType: Ec2
  healthCheckGracePeriod: Optional(300)
  placementGroup: None
  enabledMetrics: None
  tags: None
  terminationPolicies: None
  newInstancesProtectedFromScaleIn: None
  loadBalancers: None

AutoScaling Group Specification (Default Values)