Skip to content

Auto Scaling

Floci implements the EC2 Auto Scaling API — stored-state management for launch configurations, auto scaling groups, lifecycle hooks, and scaling policies, plus a real capacity reconciler that launches and terminates EC2 instances to maintain desired capacity.

Protocol: Query — POST / with Action= form parameter, credential scope autoscaling

ARN formats:

  • arn:aws:autoscaling:<region>:<account>:autoScalingGroup:<uuid>:autoScalingGroupName/<name>
  • arn:aws:autoscaling:<region>:<account>:launchConfiguration:<uuid>:launchConfigurationName/<name>
  • arn:aws:autoscaling:<region>:<account>:scalingPolicy:<uuid>:autoScalingGroupName/<group>/policyName/<name>

Supported Operations (33 total)

Launch Configurations

Operation Notes
CreateLaunchConfiguration Stores template: ImageId, InstanceType, KeyName, SecurityGroups, UserData, IamInstanceProfile
DescribeLaunchConfigurations Filtered by name list; returns all if no filter
DeleteLaunchConfiguration Removes the named launch configuration

Auto Scaling Groups

Operation Notes
CreateAutoScalingGroup Creates a group with min/max/desired capacity, AZs, tags; starts capacity reconciliation loop
DescribeAutoScalingGroups Filtered by name list; returns all if no filter; includes current instance list with lifecycle state
UpdateAutoScalingGroup Updates capacity bounds, cooldown, launch configuration, AZs
DeleteAutoScalingGroup ForceDelete=true terminates all instances before deletion

Instance Management

Operation Notes
DescribeAutoScalingInstances Returns all ASG-tracked instances with lifecycle state and health status
SetDesiredCapacity Updates desired count; reconciler handles scale-out / scale-in within 10 s
AttachInstances Attaches existing EC2 instances to a group; sets lifecycle state to InService
DetachInstances Detaches instances from a group; optionally decrements desired capacity
TerminateInstanceInAutoScalingGroup Terminates a specific instance; optionally decrements desired capacity

Load Balancer Attachment

Operation Notes
AttachLoadBalancerTargetGroups Attaches ELB v2 target group ARNs; new instances auto-registered on InService
DetachLoadBalancerTargetGroups Detaches target groups; instances deregistered
DescribeLoadBalancerTargetGroups Lists target groups attached to a group
AttachLoadBalancers Classic ELB attachment (stored; no ELB v1 routing)
DetachLoadBalancers Classic ELB detachment
DescribeLoadBalancers Lists classic ELBs attached to a group

Lifecycle Hooks

Operation Notes
PutLifecycleHook Creates or updates a hook: LifecycleTransition, DefaultResult, HeartbeatTimeout
DescribeLifecycleHooks Lists hooks for a group
DeleteLifecycleHook Removes a hook
CompleteLifecycleAction Signals CONTINUE or ABANDON for a pending lifecycle action
RecordLifecycleActionHeartbeat Extends the heartbeat timeout for an in-progress lifecycle action

Scaling Policies

Operation Notes
PutScalingPolicy Creates or updates a policy: SimpleScaling, AdjustmentType, ScalingAdjustment, Cooldown
DescribePolicies Lists policies filtered by group or policy name
DeletePolicy Removes a scaling policy

Activities

Operation Notes
DescribeScalingActivities Returns the activity log for a group; activities recorded on scale-out and scale-in events

Metadata

Operation Notes
DescribeTerminationPolicyTypes Returns the standard termination policy names
DescribeAccountLimits Returns max group / config / instance limits
DescribeLifecycleHookTypes Returns autoscaling:EC2_INSTANCE_LAUNCHING and autoscaling:EC2_INSTANCE_TERMINATING
DescribeAdjustmentTypes Returns the four standard adjustment types
DescribeMetricCollectionTypes Returns standard metric and granularity names
DescribeAutoScalingNotificationTypes Returns all notification type names

Capacity Reconciler (Phase 2)

Floci runs a background reconciler (10 s fixed rate) that keeps each group's InService instance count aligned with DesiredCapacity:

  • Scale-out: calls RunInstances with the group's launch configuration; new instances are tracked as Pending until the EC2 state transitions to running, at which point they move to InService and are registered with all attached ELB v2 target groups.
  • Scale-in: selects InService instances not protected from scale-in, deregisters them from target groups, then calls TerminateInstances.
  • Activity records are written on each scale-out and scale-in event.

Configuration

Variable Default Description
FLOCI_SERVICES_AUTOSCALING_ENABLED true Enable or disable the service

Usage Example

# Create a launch configuration
aws autoscaling create-launch-configuration \
  --launch-configuration-name my-lc \
  --image-id ami-12345678 \
  --instance-type t3.micro

# Create a group targeting desired=2
aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name my-asg \
  --launch-configuration-name my-lc \
  --min-size 1 \
  --max-size 5 \
  --desired-capacity 2 \
  --availability-zones us-east-1a

# Attach an ELB v2 target group
aws autoscaling attach-load-balancer-target-groups \
  --auto-scaling-group-name my-asg \
  --target-group-arns arn:aws:elasticloadbalancing:us-east-1:000000000000:targetgroup/my-tg/abc123

# Watch instances appear
aws autoscaling describe-auto-scaling-groups \
  --auto-scaling-group-names my-asg

# Scale out
aws autoscaling set-desired-capacity \
  --auto-scaling-group-name my-asg \
  --desired-capacity 3