Update Application Autoscaling Settings

Overview

The Update Application Autoscaling Settings action changes the minimum capacity and maximum capacity on scalable targets within the ECS, Lambda or RDS service namespace.

This action provides precise control over resource allocation, ensuring optimal alignment with specific operational requirements for improved efficiency and cost-effectiveness.

How it works

The Update Application Autoscaling Settings action uses the following endpoints in AWS’s ApplicationAutoscaling API:

The action1 creates a scheduled action2 on the scalable target that:

  • begins (five seconds after the action runs)
  • rescales the target once (10 seconds after the action runs)
  • ends (15 seconds after the action runs)

The scheduled action has a name that:

  • starts with gorillastack-...
  • references the rule name
  • references the scalable target’s resourceId

Each new scheduled action overwrites any existing scheduled action with the same name.

The action decides which scalable targets to update by matching against the tags on the ECS service, Lambda function or RDS cluster that is managed by each scalable target.

To do this, it uses the following endpoints in AWS’s ECS, Lambda and RDS APIs:

Before you begin

First, identify or create an ECS service, Lambda function or RDS cluster that you wish to manage using Application Autoscaling.

Then, either:

Finally, create a scaling plan for each entity.

Basic action settings

Add the Update Application Autoscaling Settings action to a rule.

Select a service namespace for the action. This will be one of the following:

  • ECS
  • Lambda
  • RDS

At present, AWS only supports one scalable dimension for each of these three service namespaces, so the scalable dimension will be selected automatically. This will be one of the following:

  • ecs:service:DesiredCount (shown as service:DesiredCount in the UI)
  • lambda:function:ProvisionedConcurrency (shown as function:ProvisionedConcurrency in the UI)
  • rds:cluster:ReadReplicaCount (shown as cluster:ReadReplicaCount in the UI)

Next, set the maximum and minimum capacity. The former must be higher than the latter.

Application Autoscaling basic
settings

Tag targeting

Click Tag Targeting and select one or more tag groups to target.

The Matching Supported Scalable Targets window will show all scalable targets that match your tag group or tag groups.

The targets that match your selected scalable dimension (e.g. rds:cluster:ReadReplicaCount) will be highlighted in green.

Application Autoscaling tag
targeting

Advanced settings

Click Autoscaling Settings to return to the previous window.

You'll see two advanced options:

  • Store Existing Settings
  • Restore To Previous Settings

You can either leave both options unticked, or tick one of them.

If you tick Store Existing Settings, then when the action runs, GorillaStack will keep a record of each scalable targets’ existing minimum and maximum capacities before updating their minimum and maximum capacities to the ones specified in the action.

If you tick Restore To Previous Settings, then when the action runs, GorillaStack will check for a previously stored record for each scalable target. If the record exists, it will rescale the target to the minimum and maximum capacities stored in the record instead of to those specified in the action. Minimum and maximum capacities must still be specified in the action as a fallback for when a stored record does not yet exist.


Endnote 1: The ‘action’ is the action you create in GorillaStack

Endnote 2: The ‘scheduled action’ is the entity that the GorillaStack action attaches to the scalable target in AWS