Amazon ECR Public
Manage public-repository records and image manifests through the ECR Public API.
Plan: Pro16 of 23 operations implemented
These are local records: nothing is published to Amazon ECR Public, and Docker push and pull weren't verified.
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 ecr-public commands. The emulator serves the 2020-10-30 API over the AWS JSON protocol. Only us-east-1 was tested.
Repository ARNs have no region, such as arn:aws:ecr-public::123456789012:repository/vera-docs-public, and repository URIs look like public.ecr.aws/123456789012/vera-docs-public. A URI names the repository: it isn’t an address to call, so keep sending requests to $VERA_ENDPOINT.
Example
Section titled “Example”Create a public repository:
aws --endpoint-url "$VERA_ENDPOINT" ecr-public create-repository --repository-name vera-docs-publicThese are selected fields from the output. The account is the one configured on your instance:
{ "repository": { "repositoryArn": "arn:aws:ecr-public::123456789012:repository/vera-docs-public", "registryId": "123456789012", "repositoryName": "vera-docs-public", "repositoryUri": "public.ecr.aws/123456789012/vera-docs-public" }}Read the repository back and describe its images:
aws --endpoint-url "$VERA_ENDPOINT" ecr-public describe-repositories --repository-names vera-docs-publicaws --endpoint-url "$VERA_ENDPOINT" ecr-public describe-images --repository-name vera-docs-publicTo clean up, delete the repository. --force deletes it along with any images in it:
aws --endpoint-url "$VERA_ENDPOINT" ecr-public delete-repository --repository-name vera-docs-public --forceSupported features
Section titled “Supported features”- Public repositories: create, describe and delete with
--force, with regionless ARNs. - Image manifests. In a separate check, a manifest with no filesystem layers was put with
PutImage, described withDescribeImagesand deleted withBatchDeleteImage. - Listed in the earlier implementation inventory; not rechecked since: repository catalog data, registry catalog data, repository policies, image tags, registries, layer availability checks, authorization tokens and tagging.
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 is published. No repository URI was contacted, and Docker push and anonymous pull weren’t tested. Catalog changes, policies, authorization tokens, public sharing, registry behavior and layer transfer weren’t verified.
- Manifests aren’t images. The tested manifest had no filesystem layers, so it describes nothing runnable.
- Separate from ECR. ECR Public is its own API, so findings on the ECR page, such as its layer uploads and scans, don’t carry over.
API coverage
Section titled “API coverage”Every operation in AWS's published 2020-10-30 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 BatchCheckLayerAvailability, or .
| Operation | Status | Notes |
|---|---|---|
| Batch | Implemented | |
| Batch | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — deleted the stored manifest. |
| Complete | Not implemented | |
| Create | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — created the example's repository, with a regionless ARN and a public.ecr.aws URI that names it but isn't an address to call. |
| Delete | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's repository with --force. |
| Delete | Implemented | |
| Describe | Implemented | |
| Describe | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — described the example repository's images, and a manifest stored with PutImage. |
| Describe | Implemented | |
| Describe | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — described the example's repository. |
| Get | Implemented | |
| Get | Implemented | |
| Get | Not implemented | |
| Get | Implemented | |
| Initiate | Not implemented | |
| List | Not implemented | |
| Put | Implemented | Local observation: Vera 1.2.0 preview, 5 November 2026 — stored a manifest with no filesystem layers. That's not a runnable image or a public push. |
| Put | Not implemented | |
| Put | Implemented | |
| Set | Implemented | |
| Tag | Implemented | |
| Untag | Not implemented | |
| Upload | Not implemented |