Skip to content
Back to main site

Application Auto Scaling

Store scalable targets, scaling policies and scheduled actions for local resources.

Plan: Pro14 of 14 operations implemented1Known difference

A DynamoDB target was recorded without changing its table's capacity, and an existing ECS service was rejected as a target.

Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.

Activate your license key and start the emulator with the Vera launcher, as in Activate Pro, then run this in a terminal of its own, from an empty scratch directory. It gives the official AWS CLI dummy credentials and a config file of its own, so no AWS account is needed and your own AWS profile isn't touched.

Terminal window
export VERA_ENDPOINT="http://localhost:5003"
export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=test
export AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1
export AWS_SHARED_CREDENTIALS_FILE=/dev/null
export AWS_EC2_METADATA_DISABLED=true
export AWS_PAGER="" AWS_CLI_AUTO_PROMPT=off
unset AWS_PROFILE AWS_DEFAULT_PROFILE
unset AWS_SESSION_TOKEN AWS_SECURITY_TOKEN
unset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAME
unset AWS_CONTAINER_CREDENTIALS_FULL_URI
unset AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
cat > vera-aws-config <<'EOF'
[default]
region = us-east-1
output = json
cli_binary_format = base64
s3 =
addressing_style = path
EOF
export AWS_CONFIG_FILE="$PWD/vera-aws-config"

When you've finished every example in this terminal, close it and delete vera-aws-config, not before.

Use the AWS CLI’s application-autoscaling commands. The emulator serves the 2016-02-06 API over the AWS JSON protocol, and the examples use us-east-1.

A scalable target must be a resource in the emulator. A DynamoDB table works, but in Vera 1.2.0 preview, an ECS service was rejected.

Create a DynamoDB table with provisioned capacity, register its read capacity as a scalable target with a minimum of 2 and a maximum of 3, give it a target tracking policy, then describe the targets:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" dynamodb create-table \
--table-name vera-docs-scaling \
--attribute-definitions AttributeName=id,AttributeType=S \
--key-schema AttributeName=id,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling register-scalable-target \
--service-namespace dynamodb --resource-id table/vera-docs-scaling \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--min-capacity 2 --max-capacity 3
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling put-scaling-policy \
--service-namespace dynamodb --resource-id table/vera-docs-scaling \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--policy-name vera-docs-read --policy-type TargetTrackingScaling \
--target-tracking-scaling-policy-configuration '{"TargetValue": 60, "PredefinedMetricSpecification": {"PredefinedMetricType": "DynamoDBReadCapacityUtilization"}}'
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling describe-scalable-targets \
--service-namespace dynamodb

The target is registered. These are selected fields from the last command’s output; the target’s generated ARN, which isn’t shown, differs on every run:

Output (selected fields)
{
"ScalableTargets": [
{
"ServiceNamespace": "dynamodb",
"ResourceId": "table/vera-docs-scaling",
"ScalableDimension": "dynamodb:table:ReadCapacityUnits",
"MinCapacity": 2,
"MaxCapacity": 3
}
]
}

The target records a minimum of 2, but the table still reports 1 read capacity unit, even after the policy and the scheduled action below are added. Read the policy back, then add a scheduled action and read it back. Both come back as you sent them:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling describe-scaling-policies \
--service-namespace dynamodb
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling put-scheduled-action \
--service-namespace dynamodb --resource-id table/vera-docs-scaling \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--scheduled-action-name vera-docs-schedule --schedule 'rate(5 minutes)' \
--scalable-target-action MinCapacity=2,MaxCapacity=3
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling describe-scheduled-actions \
--service-namespace dynamodb

To clean up, delete the scheduled action and the policy, deregister the target and delete the table:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling delete-scheduled-action \
--service-namespace dynamodb --resource-id table/vera-docs-scaling \
--scalable-dimension dynamodb:table:ReadCapacityUnits \
--scheduled-action-name vera-docs-schedule
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling delete-scaling-policy \
--service-namespace dynamodb --resource-id table/vera-docs-scaling \
--scalable-dimension dynamodb:table:ReadCapacityUnits --policy-name vera-docs-read
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling deregister-scalable-target \
--service-namespace dynamodb --resource-id table/vera-docs-scaling \
--scalable-dimension dynamodb:table:ReadCapacityUnits
aws --endpoint-url "$VERA_ENDPOINT" dynamodb delete-table --table-name vera-docs-scaling
  • Scalable targets for a DynamoDB table’s read capacity, as records: register, describe and deregister.
  • Target tracking policies: create, describe and delete, with their configuration read back as sent.
  • Scheduled actions: create, describe and delete, with their schedule and capacity limits read back as sent.
  • Listed in the earlier implementation inventory; not rechecked since: scaling activities, predictive scaling forecasts and tags.

The main limits are below. A few more apply to every service, and the API coverage notes cover smaller differences.

  • Nothing scaled. The example shows recorded configuration only. Registering a minimum of 2 left the table at 1 read capacity unit, and no metric, alarm, cooldown or schedule was evaluated. Predictive scaling and metric-driven scaling weren’t verified.
  • ECS services couldn’t be targets. In testing of Vera 1.2.0 preview, an ECS cluster, task definition and service were created first, then registering that service by its service/ resource ID returned ValidationException, saying the service didn’t exist. This wasn’t related to that build’s IAM failure. DynamoDB is the only target type that registered in testing.

Every operation in AWS's published 2016-02-06 API (SDK model, botocore 1.43.105), and whether the emulator implements it. Availability combines the earlier implementation inventory with the dated observations below; checking a page's example does not verify every operation. Each note names its evidence first; an observation given without a build or date comes from earlier testing, on 3 November 2026. What the statuses mean

OperationStatusNotes
DeleteScalingPolicyImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's policy.
DeleteScheduledActionImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's scheduled action.
DeregisterScalableTargetImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deregistered the example's DynamoDB target.
DescribeScalableTargetsImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — returned the DynamoDB target with its minimum and maximum capacity.
DescribeScalingActivitiesImplemented
DescribeScalingPoliciesImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — read the policy's configuration back as sent.
DescribeScheduledActionsImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — read the scheduled action's schedule and capacity limits back as sent.
GetPredictiveScalingForecastImplemented
ListTagsForResourceImplemented
PutScalingPolicyImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — stored a target tracking policy. No metric was evaluated and nothing scaled.
PutScheduledActionImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — stored a rate(5 minutes) scheduled action. Whether it fires wasn't checked.
RegisterScalableTargetKnown differenceLocal observation: Vera 1.2.0 preview, 5 November 2026 — DynamoDB registration stores the target but doesn't raise the tested table's read capacity from 1 to the minimum of 2. Registering an existing ECS service returned ValidationException, claiming it didn't exist.
TagResourceImplemented
UntagResourceImplemented