Skip to content
Back to main site

Amazon ECS

Manage cluster, task-definition and service records.

Plan: Pro76 of 77 operations implemented, 1 failed in testing4Known differences

A service can report running tasks while its deployment and task set count none, and RunTask returns HTTP 501 NotIncluded in Vera 1.2.0-rc.3.

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 ecs commands. The emulator serves the 2014-11-13 API over the AWS JSON protocol, and the examples use us-east-1.

Cluster and service ARNs carry the region local instead of the one you signed for, such as arn:aws:ecs:local:123456789012:cluster/vera-docs-cluster, while task definition ARNs carry us-east-1. Pass ARNs exactly as the emulator returns them.

Create a cluster, register a Fargate task definition and create a service from it with no tasks, then raise its desired count to 1 and describe the service. The image is an example name that’s never pulled.

Terminal window
CLUSTER_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" ecs create-cluster \
--cluster-name vera-docs-cluster --query cluster.clusterArn --output text)
TASK_DEF_ARN=$(aws --endpoint-url "$VERA_ENDPOINT" ecs register-task-definition \
--family vera-docs-task --network-mode awsvpc --requires-compatibilities FARGATE \
--cpu 256 --memory 512 \
--container-definitions '[{"name": "web", "image": "example.net/docs-image:latest", "essential": true}]' \
--query taskDefinition.taskDefinitionArn --output text)
aws --endpoint-url "$VERA_ENDPOINT" ecs create-service \
--cluster "$CLUSTER_ARN" --service-name vera-docs-service \
--task-definition "$TASK_DEF_ARN" --desired-count 0 --launch-type FARGATE
aws --endpoint-url "$VERA_ENDPOINT" ecs update-service \
--cluster "$CLUSTER_ARN" --service vera-docs-service --desired-count 1
aws --endpoint-url "$VERA_ENDPOINT" ecs describe-services \
--cluster "$CLUSTER_ARN" --services vera-docs-service

The emulator accepts this Fargate service without network configuration, so don’t use the example as a recipe for AWS. These are selected fields from the last command’s output:

Output (selected fields)
{
"services": [
{
"serviceName": "vera-docs-service",
"status": "ACTIVE",
"desiredCount": 1,
"runningCount": 1,
"taskSets": [
{
"pendingCount": 0,
"runningCount": 0
}
],
"deployments": [
{
"desiredCount": 0,
"pendingCount": 0,
"runningCount": 0
}
]
}
]
}

The service’s desired and running counts became 1 at once, while its task set and deployment still count none. These are counters on a record: no container started. The update also replaced several of the service’s deployment settings with zero or empty defaults.

To clean up, scale the service back to 0, delete it, deregister the task definition and delete the cluster. Deregistering makes the task definition inactive rather than erasing it:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" ecs update-service \
--cluster "$CLUSTER_ARN" --service vera-docs-service --desired-count 0
aws --endpoint-url "$VERA_ENDPOINT" ecs delete-service \
--cluster "$CLUSTER_ARN" --service vera-docs-service --force
aws --endpoint-url "$VERA_ENDPOINT" ecs deregister-task-definition --task-definition "$TASK_DEF_ARN"
aws --endpoint-url "$VERA_ENDPOINT" ecs delete-cluster --cluster "$CLUSTER_ARN"
  • Clusters, task definitions and services as records: create, describe, change a service’s desired count, and delete or deregister. Their metadata works as the example shows.
  • Regions kept apart: a cluster created in us-east-1 isn’t returned when described in us-west-2.
  • Listed in the earlier implementation inventory; not rechecked against Vera 1.2.0-rc.3: capacity providers, task sets and service deployments, container instances, daemons, account settings, attributes, ECS Exec and tags.

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

  • Tasks can’t be run in Vera 1.2.0-rc.3. RunTask returns HTTP 501 NotIncluded, because this release doesn’t include the task engine, and a Pro license doesn’t add it. In Vera 1.2.0 preview, RunTask created task records that DescribeTasks, ListTasks and StopTask worked on, but no container started.
  • No containers ran. No container engine, image pull, traffic, ECS Exec or logs were verified. Services are records: the example’s service reports a running task though nothing started.
  • Counts don’t reconcile. Changing a service’s desired count reports the same number running at once, while its task set and deployment keep counting none. Don’t read scheduling or container readiness from these counters.
  • Region local in ARNs. Clusters and services signed for us-east-1 get ARNs in the region local.
  • Services can’t be scaling targets. In testing of Vera 1.2.0 preview, Application Auto Scaling rejected an existing ECS service as not found.

Every operation in AWS's published 2014-11-13 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
ContinueServiceDeploymentImplemented
CreateCapacityProviderImplemented
CreateClusterKnown differenceLocal observation: Returns a cluster ARN in the region local instead of the one you signed for. Local observation: Vera 1.2.0 preview, 5 November 2026 — the same.
CreateDaemonImplemented
CreateExpressGatewayServiceImplemented
CreateServiceKnown differenceLocal observation: Returns service ARNs in the region local. The service is a record: no tasks started in testing. Local observation: Vera 1.2.0 preview, 5 November 2026 — the same, and a Fargate service was accepted without network configuration.
CreateTaskSetImplemented
DeleteAccountSettingImplemented
DeleteAttributesImplemented
DeleteCapacityProviderImplemented
DeleteClusterImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's cluster.
DeleteDaemonImplemented
DeleteDaemonTaskDefinitionImplemented
DeleteExpressGatewayServiceImplemented
DeleteServiceImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's service with --force after it was scaled back to 0.
DeleteTaskDefinitionsImplemented
DeleteTaskSetImplemented
DeregisterContainerInstanceImplemented
DeregisterTaskDefinitionImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deregistered the example's task definition, which becomes inactive rather than erased.
DescribeCapacityProvidersImplemented
DescribeClustersImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — a cluster created in us-east-1 wasn't returned by a request to us-west-2.
DescribeContainerInstancesImplemented
DescribeDaemonImplemented
DescribeDaemonDeploymentsImplemented
DescribeDaemonRevisionsImplemented
DescribeDaemonTaskDefinitionImplemented
DescribeExpressGatewayServiceImplemented
DescribeServiceDeploymentsImplemented
DescribeServiceRevisionsImplemented
DescribeServicesKnown differenceLocal observation: Vera 1.2.0 preview, 5 November 2026 — after the desired count was raised to 1, reported the service's desiredCount and runningCount as 1, but 0 running and pending for its task set and 0 desired, running and pending for its deployment. The counters don't show a running container.
DescribeTaskDefinitionImplemented
DescribeTaskSetsImplemented
DescribeTasksImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — described a task record from RunTask.
DiscoverPollEndpointImplemented
ExecuteCommandImplemented
GetTaskProtectionImplemented
ListAccountSettingsImplemented
ListAttributesImplemented
ListClustersImplemented
ListContainerInstancesImplemented
ListDaemonDeploymentsImplemented
ListDaemonTaskDefinitionsImplemented
ListDaemonsImplemented
ListServiceDeploymentsImplemented
ListServicesImplemented
ListServicesByNamespaceImplemented
ListTagsForResourceImplemented
ListTaskDefinitionFamiliesImplemented
ListTaskDefinitionsImplemented
ListTasksImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — listed a task record from RunTask.
PutAccountSettingImplemented
PutAccountSettingDefaultImplemented
PutAttributesImplemented
PutClusterCapacityProvidersImplemented
RegisterContainerInstanceImplemented
RegisterDaemonTaskDefinitionImplemented
RegisterTaskDefinitionImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — registered a Fargate task definition, whose ARN carries us-east-1. Its image wasn't pulled.
RunTaskFailed in testingLocal observation: Vera 1.2.0-rc.3, 6 November 2026 — returns HTTP 501 NotIncluded, because this Vera release doesn't include the task engine. A Pro license doesn't add the engine. The request named a cluster and task definition that don't exist; the refusal came before either was looked up. The earlier observations that follow don't describe Vera 1.2.0-rc.3. Local observation: earlier testing, 3 November 2026 — returned ARNs in the region local. Tasks were records: no image was pulled and no container started. Local observation: Vera 1.2.0 preview, 5 November 2026 — created a task record; no container started.
StartTaskImplemented
StopServiceDeploymentImplemented
StopTaskImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — stopped a task record from RunTask.
SubmitAttachmentStateChangesImplemented
SubmitContainerStateChangeImplemented
SubmitTaskStateChangeImplemented
TagResourceImplemented
UntagResourceImplemented
UpdateCapacityProviderImplemented
UpdateClusterImplemented
UpdateClusterSettingsImplemented
UpdateContainerAgentImplemented
UpdateContainerInstancesStateImplemented
UpdateDaemonImplemented
UpdateExpressGatewayServiceImplemented
UpdateServiceKnown differenceA new desired count is reported as running at once, while the service's task set and deployment still count none. Local observation: Vera 1.2.0 preview, 5 November 2026 — the same, and the update also replaced several deployment settings with zero or empty defaults. No container started.
UpdateServicePrimaryTaskSetImplemented
UpdateTaskProtectionImplemented
UpdateTaskSetImplemented