AWS Lambda
Inspect function records and account settings; in Vera 1.2.2, invocation echoed its input instead of running the handler.
Plan: Free85 of 88 operations implemented1Known difference
In Vera 1.2.2, invoking a function echoed its input instead of running the handler.
Example checked on Vera 1.2.2, 8 November 2026. Each coverage note names its own evidence and date.
Connect
Section titled “Connect”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.
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 lambda commands. The emulator serves the 2015-03-31 API over the REST JSON protocol, and the examples use us-east-1. That’s the API’s model version: each operation’s path carries a date of its own, such as /2015-03-31/ for functions, /2018-10-31/ for layers and /2014-11-13/ for InvokeAsync, and the coverage notes give every operation’s path.
A new function needs an execution role from the emulator’s IAM. In Vera 1.2.2, function setup worked with a freshly created role. A role ARN that doesn’t exist isn’t a substitute: in Vera 1.2.0 preview, CreateFunction rejected it with ResourceNotFoundException. This page’s example only reads what’s there, so it needs no role.
Example
Section titled “Example”List the functions, then read the account’s settings. Both only read: the example creates no resources and no local files, so it needs no cleanup.
aws --endpoint-url "$VERA_ENDPOINT" lambda list-functionsaws --endpoint-url "$VERA_ENDPOINT" lambda get-account-settingsOn an empty emulator the first command returns no functions:
{ "Functions": [] }The second returns the account’s settings. These are selected fields. They’re the limits the emulator reports, not evidence that it enforces concurrency:
{ "AccountLimit": { "ConcurrentExecutions": 1000, "UnreservedConcurrentExecutions": 1000 }}Supported features
Section titled “Supported features”- Function inventory and account settings:
ListFunctionsandGetAccountSettings, as in the example. - Function records. In Vera 1.2.2, function setup worked with a freshly created IAM role. In a separate check of Vera 1.2.0 preview, with a role record that already existed in the emulator,
CreateFunctionsucceeded on its fifth attempt (see Limitations).GetFunctionread the function back andDeleteFunctiondeleted it. - Invocation types and their status codes: a synchronous call answered
200with the submitted payload, anEventcall202and aDryRuncall204, the last two with empty bodies. No handler ran. - Listed in the earlier implementation inventory; not rechecked since: versions and aliases, layers, event source mappings, function URLs, concurrency and provisioned concurrency, code signing, event invoke configs, permissions, durable executions 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.
- Handler code didn’t run. In Vera 1.2.2, invocation echoed its input instead of running the handler. In testing of Vera 1.2.0 preview, synchronous invocation echoed the submitted payload rather than the handler’s result: the package’s Python handler would have returned
{"handler_executed": true}, and the response was the payload sent.EventandDryRuncalls return only their status codes. - New functions needed retries in earlier testing. In earlier testing, and in Vera 1.2.0 preview with a role record that already existed,
CreateFunctionfailed four times withInvalidParameterValueException, saying the role couldn’t be assumed, before the fifth call succeeded. - Not verified beyond those calls: versions, aliases, triggers, function URLs, destinations, timeouts and code execution. Nothing triggered a function or called its URL.
API coverage
Section titled “API coverage”Every operation in AWS's published 2015-03-31 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 AddLayerVersionPermission, or .
| Operation | Status | Notes |
|---|---|---|
| Add | Implemented | Served at POST /. |
| Add | Implemented | Served at POST /. |
| Checkpoint | Implemented | Served at POST /. |
| Create | Implemented | Served at POST /. |
| Create | Implemented | Served at POST /. |
| Create | Implemented | Served at POST /. |
| Create | Implemented | Served at POST /. |
| Create | Implemented | Served at POST /. Local observation: Vera 1.2.2, 8 November 2026 — function setup worked with a freshly created IAM role. In earlier testing, the first four calls for a new role and function failed with InvalidParameterValueException, saying the role can't be assumed, and the fifth succeeded. Local observation: Vera 1.2.0 preview, 5 November 2026 — the same happened with an IAM role record that already existed, since creating a role failed in that release, and a role ARN that doesn't exist was rejected with ResourceNotFoundException. |
| Create | Implemented | Served at POST /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. Local observation: Vera 1.2.0 preview, 5 November 2026 — succeeded for a function created with a role record that already existed. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Implemented | Served at DELETE /. |
| Delete | Not implemented | |
| Get | Implemented | Served at GET /. Local observation: Vera 1.2.0 preview, 5 November 2026 — returned the account's reported limits, such as 1000 concurrent executions, in this page's example. Whether they're enforced wasn't checked. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. Local observation: Vera 1.2.0 preview, 5 November 2026 — succeeded for a function created with a role record that already existed. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Implemented | Served at GET /. |
| Get | Not implemented | |
| Get | Implemented | Served at GET /. |
| Invoke | Known difference | Local observation: Vera 1.2.2, 8 November 2026 — invocation echoed its input instead of running the handler. Local observation: Vera 1.2.0 preview, 5 November 2026 — a synchronous call to POST / answered 200 with the submitted payload, not the handler's result. Event calls answered 202 and DryRun calls 204, with empty bodies. No handler code ran. |
| Invoke | Implemented | Served at POST /. |
| Invoke | Implemented | Served at POST /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. Local observation: Vera 1.2.0 preview, 5 November 2026 — returned an empty Functions list on an empty emulator, in this page's example. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| List | Implemented | Served at GET /. |
| Publish | Implemented | Served at POST /. |
| Publish | Implemented | Served at POST /. |
| Put | Implemented | Served at PUT /. |
| Put | Implemented | Served at PUT /. |
| Put | Implemented | Served at PUT /. |
| Put | Implemented | Served at PUT /. |
| Put | Implemented | Served at PUT /. |
| Put | Implemented | Served at PUT /. |
| Put | Not implemented | |
| Put | Implemented | Served at PUT /. |
| Remove | Implemented | Served at DELETE /. |
| Remove | Implemented | Served at DELETE /. |
| Send | Implemented | Served at POST /. |
| Send | Implemented | Served at POST /. |
| Send | Implemented | Served at POST /. |
| Stop | Implemented | Served at POST /. |
| Tag | Implemented | Served at POST /. |
| Untag | Implemented | Served at DELETE /. |
| Update | Implemented | Served at PUT /. |
| Update | Implemented | Served at PUT /. |
| Update | Implemented | Served at PUT /. |
| Update | Implemented | Served at PUT /. |
| Update | Implemented | Served at PUT /. |
| Update | Implemented | Served at PUT /. |
| Update | Implemented | Served at POST /. |
| Update | Implemented | Served at PUT /. |