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.
Connect
Section titled “Connect”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.
export VERA_ENDPOINT="http://localhost:5003"export AWS_ACCESS_KEY_ID=test AWS_SECRET_ACCESS_KEY=testexport AWS_REGION=us-east-1 AWS_DEFAULT_REGION=us-east-1export AWS_SHARED_CREDENTIALS_FILE=/dev/nullexport AWS_EC2_METADATA_DISABLED=trueexport AWS_PAGER="" AWS_CLI_AUTO_PROMPT=offunset AWS_PROFILE AWS_DEFAULT_PROFILEunset AWS_SESSION_TOKEN AWS_SECURITY_TOKENunset AWS_WEB_IDENTITY_TOKEN_FILE AWS_ROLE_ARN AWS_ROLE_SESSION_NAMEunset AWS_CONTAINER_CREDENTIALS_FULL_URIunset AWS_CONTAINER_CREDENTIALS_RELATIVE_URIcat > vera-aws-config <<'EOF'[default]region = us-east-1output = jsoncli_binary_format = base64s3 = addressing_style = pathEOFexport 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.
Example
Section titled “Example”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:
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=1aws --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 3aws --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 dynamodbThe 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:
{ "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:
aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling describe-scaling-policies \ --service-namespace dynamodbaws --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=3aws --endpoint-url "$VERA_ENDPOINT" application-autoscaling describe-scheduled-actions \ --service-namespace dynamodbTo clean up, delete the scheduled action and the policy, deregister the target and delete the table:
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-scheduleaws --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-readaws --endpoint-url "$VERA_ENDPOINT" application-autoscaling deregister-scalable-target \ --service-namespace dynamodb --resource-id table/vera-docs-scaling \ --scalable-dimension dynamodb:table:ReadCapacityUnitsaws --endpoint-url "$VERA_ENDPOINT" dynamodb delete-table --table-name vera-docs-scalingSupported features
Section titled “Supported features”- 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.
Limitations
Section titled “Limitations”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 returnedValidationException, 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.
API coverage
Section titled “API coverage”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
No operation matches .
Try part of a name, such as DeleteScalingPolicy, or .
| Operation | Status | Notes |
|---|---|---|
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's policy. |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's scheduled action. |
| Deregister | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — deregistered the example's DynamoDB target. |
| Describe | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — returned the DynamoDB target with its minimum and maximum capacity. |
| Describe | Implemented | |
| Describe | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — read the policy's configuration back as sent. |
| Describe | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — read the scheduled action's schedule and capacity limits back as sent. |
| Get | Implemented | |
| List | Implemented | |
| Put | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — stored a target tracking policy. No metric was evaluated and nothing scaled. |
| Put | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — stored a rate(5 minutes) scheduled action. Whether it fires wasn't checked. |
| Register | Known difference | Local 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. |
| Tag | Implemented | |
| Untag | Implemented |