Skip to content
Back to main site

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.

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 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.

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.

Terminal window
aws --endpoint-url "$VERA_ENDPOINT" lambda list-functions
aws --endpoint-url "$VERA_ENDPOINT" lambda get-account-settings

On an empty emulator the first command returns no functions:

Output
{ "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:

Output (selected fields)
{
"AccountLimit": {
"ConcurrentExecutions": 1000,
"UnreservedConcurrentExecutions": 1000
}
}
  • Function inventory and account settings: ListFunctions and GetAccountSettings, 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, CreateFunction succeeded on its fifth attempt (see Limitations). GetFunction read the function back and DeleteFunction deleted it.
  • Invocation types and their status codes: a synchronous call answered 200 with the submitted payload, an Event call 202 and a DryRun call 204, 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.

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. Event and DryRun calls 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, CreateFunction failed four times with InvalidParameterValueException, 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.

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

OperationStatusNotes
AddLayerVersionPermissionImplementedServed at POST /2018-10-31/layers/{LayerName}/versions/{VersionNumber}/policy.
AddPermissionImplementedServed at POST /2015-03-31/functions/{FunctionName}/policy.
CheckpointDurableExecutionImplementedServed at POST /2025-12-01/durable-executions/{DurableExecutionArn}/checkpoint.
CreateAliasImplementedServed at POST /2015-03-31/functions/{FunctionName}/aliases.
CreateCapacityProviderImplementedServed at POST /2025-11-30/capacity-providers.
CreateCodeSigningConfigImplementedServed at POST /2020-04-22/code-signing-configs.
CreateEventSourceMappingImplementedServed at POST /2015-03-31/event-source-mappings.
CreateFunctionImplementedServed at POST /2015-03-31/functions. 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.
CreateFunctionUrlConfigImplementedServed at POST /2021-10-31/functions/{FunctionName}/url.
DeleteAliasImplementedServed at DELETE /2015-03-31/functions/{FunctionName}/aliases/{Name}.
DeleteCapacityProviderImplementedServed at DELETE /2025-11-30/capacity-providers/{CapacityProviderName}.
DeleteCodeSigningConfigImplementedServed at DELETE /2020-04-22/code-signing-configs/{CodeSigningConfigArn}.
DeleteEventSourceMappingImplementedServed at DELETE /2015-03-31/event-source-mappings/{UUID}.
DeleteFunctionImplementedServed at DELETE /2015-03-31/functions/{FunctionName}. Local observation: Vera 1.2.0 preview, 5 November 2026 — succeeded for a function created with a role record that already existed.
DeleteFunctionCodeSigningConfigImplementedServed at DELETE /2020-06-30/functions/{FunctionName}/code-signing-config.
DeleteFunctionConcurrencyImplementedServed at DELETE /2017-10-31/functions/{FunctionName}/concurrency.
DeleteFunctionEventInvokeConfigImplementedServed at DELETE /2019-09-25/functions/{FunctionName}/event-invoke-config.
DeleteFunctionUrlConfigImplementedServed at DELETE /2021-10-31/functions/{FunctionName}/url.
DeleteLayerVersionImplementedServed at DELETE /2018-10-31/layers/{LayerName}/versions/{VersionNumber}.
DeleteProvisionedConcurrencyConfigImplementedServed at DELETE /2019-09-30/functions/{FunctionName}/provisioned-concurrency.
DeleteResourcePolicyNot implemented
GetAccountSettingsImplementedServed at GET /2016-08-19/account-settings. 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.
GetAliasImplementedServed at GET /2015-03-31/functions/{FunctionName}/aliases/{Name}.
GetCapacityProviderImplementedServed at GET /2025-11-30/capacity-providers/{CapacityProviderName}.
GetCodeSigningConfigImplementedServed at GET /2020-04-22/code-signing-configs/{CodeSigningConfigArn}.
GetDurableExecutionImplementedServed at GET /2025-12-01/durable-executions/{DurableExecutionArn}.
GetDurableExecutionHistoryImplementedServed at GET /2025-12-01/durable-executions/{DurableExecutionArn}/history.
GetDurableExecutionStateImplementedServed at GET /2025-12-01/durable-executions/{DurableExecutionArn}/state.
GetEventSourceMappingImplementedServed at GET /2015-03-31/event-source-mappings/{UUID}.
GetFunctionImplementedServed at GET /2015-03-31/functions/{FunctionName}. Local observation: Vera 1.2.0 preview, 5 November 2026 — succeeded for a function created with a role record that already existed.
GetFunctionCodeSigningConfigImplementedServed at GET /2020-06-30/functions/{FunctionName}/code-signing-config.
GetFunctionConcurrencyImplementedServed at GET /2019-09-30/functions/{FunctionName}/concurrency.
GetFunctionConfigurationImplementedServed at GET /2015-03-31/functions/{FunctionName}/configuration.
GetFunctionEventInvokeConfigImplementedServed at GET /2019-09-25/functions/{FunctionName}/event-invoke-config.
GetFunctionRecursionConfigImplementedServed at GET /2024-08-31/functions/{FunctionName}/recursion-config.
GetFunctionScalingConfigImplementedServed at GET /2025-11-30/functions/{FunctionName}/function-scaling-config.
GetFunctionUrlConfigImplementedServed at GET /2021-10-31/functions/{FunctionName}/url.
GetLayerVersionImplementedServed at GET /2018-10-31/layers/{LayerName}/versions/{VersionNumber}.
GetLayerVersionByArnImplementedServed at GET /2018-10-31/layers?find=LayerVersion.
GetLayerVersionPolicyImplementedServed at GET /2018-10-31/layers/{LayerName}/versions/{VersionNumber}/policy.
GetPolicyImplementedServed at GET /2015-03-31/functions/{FunctionName}/policy.
GetProvisionedConcurrencyConfigImplementedServed at GET /2019-09-30/functions/{FunctionName}/provisioned-concurrency.
GetResourcePolicyNot implemented
GetRuntimeManagementConfigImplementedServed at GET /2021-07-20/functions/{FunctionName}/runtime-management-config.
InvokeKnown differenceLocal 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 /2015-03-31/functions/{FunctionName}/invocations 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.
InvokeAsyncImplementedServed at POST /2014-11-13/functions/{FunctionName}/invoke-async.
InvokeWithResponseStreamImplementedServed at POST /2021-11-15/functions/{FunctionName}/response-streaming-invocations.
ListAliasesImplementedServed at GET /2015-03-31/functions/{FunctionName}/aliases.
ListCapacityProvidersImplementedServed at GET /2025-11-30/capacity-providers.
ListCodeSigningConfigsImplementedServed at GET /2020-04-22/code-signing-configs.
ListDurableExecutionsByFunctionImplementedServed at GET /2025-12-01/functions/{FunctionName}/durable-executions.
ListEventSourceMappingsImplementedServed at GET /2015-03-31/event-source-mappings.
ListFunctionEventInvokeConfigsImplementedServed at GET /2019-09-25/functions/{FunctionName}/event-invoke-config/list.
ListFunctionUrlConfigsImplementedServed at GET /2021-10-31/functions/{FunctionName}/urls.
ListFunctionVersionsByCapacityProviderImplementedServed at GET /2025-11-30/capacity-providers/{CapacityProviderName}/function-versions.
ListFunctionsImplementedServed at GET /2015-03-31/functions. Local observation: Vera 1.2.0 preview, 5 November 2026 — returned an empty Functions list on an empty emulator, in this page's example.
ListFunctionsByCodeSigningConfigImplementedServed at GET /2020-04-22/code-signing-configs/{CodeSigningConfigArn}/functions.
ListLayerVersionsImplementedServed at GET /2018-10-31/layers/{LayerName}/versions.
ListLayersImplementedServed at GET /2018-10-31/layers.
ListProvisionedConcurrencyConfigsImplementedServed at GET /2019-09-30/functions/{FunctionName}/provisioned-concurrency?List=ALL.
ListTagsImplementedServed at GET /2017-03-31/tags/{Resource}.
ListVersionsByFunctionImplementedServed at GET /2015-03-31/functions/{FunctionName}/versions.
PublishLayerVersionImplementedServed at POST /2018-10-31/layers/{LayerName}/versions.
PublishVersionImplementedServed at POST /2015-03-31/functions/{FunctionName}/versions.
PutFunctionCodeSigningConfigImplementedServed at PUT /2020-06-30/functions/{FunctionName}/code-signing-config.
PutFunctionConcurrencyImplementedServed at PUT /2017-10-31/functions/{FunctionName}/concurrency.
PutFunctionEventInvokeConfigImplementedServed at PUT /2019-09-25/functions/{FunctionName}/event-invoke-config.
PutFunctionRecursionConfigImplementedServed at PUT /2024-08-31/functions/{FunctionName}/recursion-config.
PutFunctionScalingConfigImplementedServed at PUT /2025-11-30/functions/{FunctionName}/function-scaling-config.
PutProvisionedConcurrencyConfigImplementedServed at PUT /2019-09-30/functions/{FunctionName}/provisioned-concurrency.
PutResourcePolicyNot implemented
PutRuntimeManagementConfigImplementedServed at PUT /2021-07-20/functions/{FunctionName}/runtime-management-config.
RemoveLayerVersionPermissionImplementedServed at DELETE /2018-10-31/layers/{LayerName}/versions/{VersionNumber}/policy/{StatementId}.
RemovePermissionImplementedServed at DELETE /2015-03-31/functions/{FunctionName}/policy/{StatementId}.
SendDurableExecutionCallbackFailureImplementedServed at POST /2025-12-01/durable-execution-callbacks/{CallbackId}/fail.
SendDurableExecutionCallbackHeartbeatImplementedServed at POST /2025-12-01/durable-execution-callbacks/{CallbackId}/heartbeat.
SendDurableExecutionCallbackSuccessImplementedServed at POST /2025-12-01/durable-execution-callbacks/{CallbackId}/succeed.
StopDurableExecutionImplementedServed at POST /2025-12-01/durable-executions/{DurableExecutionArn}/stop.
TagResourceImplementedServed at POST /2017-03-31/tags/{Resource}.
UntagResourceImplementedServed at DELETE /2017-03-31/tags/{Resource}.
UpdateAliasImplementedServed at PUT /2015-03-31/functions/{FunctionName}/aliases/{Name}.
UpdateCapacityProviderImplementedServed at PUT /2025-11-30/capacity-providers/{CapacityProviderName}.
UpdateCodeSigningConfigImplementedServed at PUT /2020-04-22/code-signing-configs/{CodeSigningConfigArn}.
UpdateEventSourceMappingImplementedServed at PUT /2015-03-31/event-source-mappings/{UUID}.
UpdateFunctionCodeImplementedServed at PUT /2015-03-31/functions/{FunctionName}/code.
UpdateFunctionConfigurationImplementedServed at PUT /2015-03-31/functions/{FunctionName}/configuration.
UpdateFunctionEventInvokeConfigImplementedServed at POST /2019-09-25/functions/{FunctionName}/event-invoke-config.
UpdateFunctionUrlConfigImplementedServed at PUT /2021-10-31/functions/{FunctionName}/url.