Skip to content
Back to main site

AWS Serverless Application Repository

Manage application records, versions and generated-template metadata.

Plan: Free14 of 14 operations implemented1Known difference

Returned asset URLs name AWS hosts and weren't fetched, and an application record isn't proof of a working deployment.

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

This Free service needs no license key. Start Vera as in Get started, 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 serverlessrepo commands. The emulator serves the 2017-09-08 API over the REST JSON protocol, and the examples use us-east-1.

An application’s ID is an ARN built from its name, such as arn:aws:serverlessrepo:us-east-1:123456789012:applications/docs-app. The readme and template URLs it returns point at S3 hosts on amazonaws.com, not at the emulator, and they weren’t fetched in testing. Keep sending requests to $VERA_ENDPOINT.

Create an application with a readme, a template and version 1.0.0, update its description, then read it back:

Terminal window
APP_ID=$(aws --endpoint-url "$VERA_ENDPOINT" serverlessrepo create-application \
--name docs-app --author Documentation --description 'Documentation application' \
--readme-body 'Documentation at https://example.net' --semantic-version 1.0.0 \
--template-body '{"AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "Documentation application metadata", "Resources": {"DocsBucket": {"Type": "AWS::S3::Bucket"}}}' \
--query ApplicationId --output text)
aws --endpoint-url "$VERA_ENDPOINT" serverlessrepo update-application \
--application-id "$APP_ID" --description 'Updated documentation application'
aws --endpoint-url "$VERA_ENDPOINT" serverlessrepo get-application --application-id "$APP_ID"

These are selected fields from the last command’s output, with the updated description:

Output (selected fields)
{
"Name": "docs-app",
"Description": "Updated documentation application",
"ApplicationId": "arn:aws:serverlessrepo:us-east-1:123456789012:applications/docs-app",
"Version": {
"SemanticVersion": "1.0.0",
"ResourcesSupported": true
}
}

The Version object is there even though the request didn’t name a version. A recorded AWS response to the same kind of request leaves it out.

List the application’s versions, which include 1.0.0:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" serverlessrepo list-application-versions --application-id "$APP_ID"

To clean up, delete the application:

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" serverlessrepo delete-application --application-id "$APP_ID"
  • Applications, created with a readme, a template and a first version, updated, read back and deleted.
  • Versions. In a separate check, CreateApplicationVersion added version 1.0.1, ListApplicationVersions listed it, and GetApplication returned it when asked for that version.
  • Dependencies and policies, read back: ListApplicationDependencies returned an empty list for an application with none, and GetApplicationPolicy returned an empty Statements list.
  • Generated templates: CreateCloudFormationTemplate and GetCloudFormationTemplate returned ACTIVE template metadata. The template URL names an AWS S3 host and wasn’t fetched.
  • Earlier recorded comparisons: selected CreateCloudFormationTemplate and CreateCloudFormationChangeSet responses matched recorded AWS responses, and CreateApplicationVersion, GetApplicationPolicy, PutApplicationPolicy and ListApplicationDependencies matched recorded AWS error responses. CreateCloudFormationChangeSet wasn’t run again against Vera 1.2.0 preview or Vera 1.2.0-rc.3, and a change-set response doesn’t show that the application deploys.
  • Listed in the earlier implementation inventory; not rechecked since: listing applications, setting a valid application policy with PutApplicationPolicy, and unsharing with UnshareApplication.

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

  • Applications aren’t deployed. An application and its versions are records, and no deployment was verified. In Vera 1.2.0-rc.3, CloudFormation can’t deploy one either: CreateStack, UpdateStack and ExecuteChangeSet return HTTP 501 NotIncluded because the provisioning engine isn’t included.
  • Asset URLs weren’t fetched. Template metadata retrieval was checked; downloading the returned URL wasn’t. The same goes for the readme URL.
  • Sharing isn’t established. A PutApplicationPolicy request naming the owner’s own account as principal was rejected with BadRequestException, “You cannot set principal to resource owner”. That request was invalid, so it doesn’t show that valid policies fail. Earlier comparisons of application policies covered error responses only. Public and cross-account sharing, and size limits on templates and readmes, weren’t tested.

Every operation in AWS's published 2017-09-08 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
CreateApplicationImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — created the example's application with a readme, a template and version 1.0.0. Its ID is an ARN built from the name.
CreateApplicationVersionImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — added version 1.0.1.
CreateCloudFormationChangeSetImplemented
CreateCloudFormationTemplateImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — returned ACTIVE template metadata. Its template URL names an AWS S3 host and wasn't fetched.
DeleteApplicationImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — deleted the example's application.
GetApplicationKnown differenceRecorded comparison: After an application and version are created, GetApplication without SemanticVersion returns an extra Version object in the emulator; the AWS recording omits that member. This does not verify deployment or asset download. Local observation: Vera 1.2.0 preview, 5 November 2026 — the Version object is still returned without SemanticVersion, and asking for version 1.0.1 returned that version. This is not a new AWS comparison.
GetApplicationPolicyImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — returned an empty Statements list.
GetCloudFormationTemplateImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — returned the generated template's ACTIVE metadata. Its template URL names an AWS S3 host and wasn't fetched, so downloading the template wasn't verified.
ListApplicationDependenciesImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — returned an empty list for an application with no dependencies.
ListApplicationVersionsImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — listed version 1.0.0, and 1.0.1 once it was added.
ListApplicationsImplemented
PutApplicationPolicyImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — a request naming the owner's own account as principal was rejected with BadRequestException, "You cannot set principal to resource owner". That request was invalid; setting a valid policy wasn't verified.
UnshareApplicationImplemented
UpdateApplicationImplementedLocal observation: Vera 1.2.0 preview, 5 November 2026 — updated the example application's description.