Skip to main content

Service Quotas and Limits

This page documents the service quotas, default limits, and configurable thresholds for the Visual Asset Management System (VAMS). Some limits are inherent to AWS services, while others are configurable through the VAMS deployment configuration.


API Limits

API Gateway Throttling

VAMS uses Amazon API Gateway REST API with configurable rate limiting.

ParameterDefaultConfigurableConfiguration Key
Global rate limit50 requests/secondYesapp.api.apiGatewayRest.globalRateLimit
Global burst limit100 requestsYesapp.api.apiGatewayRest.globalBurstLimit
Integration timeout29 secondsYes (29–300)app.api.apiGatewayRest.apiGatewayTimeoutTime
Authorizer cache TTL30 secondsNoSet in CDK authorizer construct
tip

The burst limit must be greater than or equal to the rate limit. Adjust both values in infra/config/config.json and redeploy to apply changes.

Integration timeout above 29 seconds needs an AWS quota increase

The integration timeout is how long Amazon API Gateway waits for a backend AWS Lambda function before returning a 504. Raising app.api.apiGatewayRest.apiGatewayTimeoutTime above the 29-second default requires an approved increase to the account-level Integration timeout quota (L-E5AE38E3) in the deployment Region, requested through the AWS Service Quotas console or AWS Support. Request the increase before deploying a higher value, or the deployment fails. The increase applies to both the REGIONAL and PRIVATE endpoint types VAMS supports, and may require a compensating reduction in the account's Region-level request throttle quota.

AWS Lambda Function Limits

All VAMS Lambda functions share the same configuration:

ParameterValueConfigurable
Timeout15 minutesNo (CDK constant)
Memory5,308 MB (4 vCPU)No (CDK constant)
RuntimePython 3.12No (CDK constant)
Concurrent executionsAWS account default (1,000)Via AWS Service Quotas

Authentication Limits

ParameterDefaultConfigurableConfiguration Key
Credential/token timeout3,600 seconds (1 hour)Yesapp.authProvider.useCognito.credTokenTimeoutSeconds
Presigned URL timeout86,400 seconds (24 hours)Yesapp.authProvider.presignedUrlTimeoutSeconds
Upload initializations20 per user per minuteNoHardcoded rate limit

Storage Limits

Amazon DynamoDB

All VAMS DynamoDB tables use on-demand (pay-per-request) billing mode, which automatically scales to handle workload demands.

ParameterValue
Billing modeOn-demand (PAY_PER_REQUEST)
Maximum item size400 KB (DynamoDB service limit)
Metadata records per entity500
Table count46 tables (plus 5 retained for migration)
info

On-demand mode has no provisioned throughput to configure. Amazon DynamoDB automatically allocates capacity based on traffic patterns. For sustained high-throughput workloads, monitor your account-level DynamoDB service quotas.

Amazon S3

ParameterValue
Maximum object size5 TB (Amazon S3 service limit)
Multipart upload threshold5 GB (parts required above this size)
Maximum parts per upload10,000 (Amazon S3 service limit)
Part size range5 MB to 5 GB
VAMS upload part size150 MB
Bucket encryptionAWS KMS (when CMK enabled) or Amazon S3-managed

Amazon OpenSearch

ParameterServerlessProvisioned
Index OCUs (default)2 index + 2 searchN/A
Data node instance typeN/AConfigurable (default: r7g.large.search)
Master node instance typeN/AConfigurable (default: r7g.large.search)
EBS volume sizeN/AConfigurable (default: 120 GB per node)
Data nodesN/AOne per Availability Zone (2 or 3)
Master nodesN/A3
Engine versionManaged by AWSOpenSearch 3.x (OpenSearch 2.x in the AWS European Sovereign Cloud, which does not yet support 3.x)

Pipeline Limits

General Pipeline Limits

ParameterValue
AWS Step Functions state transitionsBased on workflow complexity
Pipeline execution typesAWS Lambda, Amazon SQS, Amazon EventBridge, AWS Deadline Cloud
Pipeline steps per workflow100
Concurrent workflow executions per assetMultiple (with different input files)
note

The AWS Deadline Cloud execution type is available when the deployment sets app.pipelines.deadlineCloudExecutionTypeEnabled, and only in the commercial AWS partition. See Building custom pipelines.

Pipeline-Specific Limits

PipelineParameterLimit
3D Preview ThumbnailMaximum input file size100 GB
All ECS pipelinesMetadata JSON input8,000 characters
Gaussian Splat ToolboxGPU instance requiredg6e.2xlarge or g5.xlarge
Isaac Lab TrainingGPU instance requiredg6e.2xlarge or g5.xlarge
RapidPipeline (EKS)Node instance typeConfigurable
RapidPipeline (EKS)Job timeoutConfigurable
RapidPipeline (EKS)Job backoff limitConfigurable

Pipeline Template and Tag-Schema Limits

Bounds on a pipeline configuration template and the typed tag schema that supplies its {{tagName}} placeholders. Every limit in this table rejects the create or update request with a 400 response, so an authoring mistake is reported immediately rather than surfacing at run time.

ParameterValue
Tag definitions per tag schema250
tagKey length128 characters
label / description length1,024 characters each
enumValues entries per enum tag250
enumValues entry length256 characters
default value length4,096 characters (serialized)
inputInstructions length4,096 characters
Input-file filter patterns per list250 (allow and exclude each)
Input-file filter pattern length512 characters
Auxiliary preview suffix length256 characters
AWS Deadline Cloud job template length256 KB
Pipeline task timeout604,800 seconds (7 days)
systemConfig serialized size64 KB
Template overrides serialized size64 KB
executionConfig serialized size320 KB
configBody + webFormJson combined5 MB
note

A template's configBody has no length limit of its own — it is bounded together with its webFormJson by the combined 5 MB ceiling in the table above. A combined body over 320 KB is offloaded to Amazon S3 automatically and the record keeps a pointer to it, so a large body is stored without a client ever addressing Amazon S3 directly.

info

The configuration blocks are bounded by their serialized size so an oversized request is rejected with a 400 at validation time rather than failing when the record is written. executionConfig has the larger allowance because an AWS Deadline Cloud block carries a job template up to its own 256 KB limit, alongside the settings for the other execution types. A template's overrides shares systemConfig's budget, since it replaces a subset of the same keys and is stored on the template row beside the configuration body.

Workflow Execution Limits

Bounds that apply when an execution is launched. These divide into two kinds, and the difference matters when reading a result:

  • Rejected — the request fails with a 400 and nothing runs.
  • Truncated and reported — the execution proceeds, and the response's warnings array names what was dropped. A run that hits one of these succeeds with less input than was available, so treat a warning as a signal to narrow the run rather than as noise.
ParameterValueExceeding it
Input files per execution1,000Rejected
Metadata-source assets per execution1,000Rejected
Per-pipeline parameter entries per execution100Rejected
Template tag values per pipeline250Rejected
Template tag key length128 charactersRejected
Template tag value length65,536 characters (serialized)Rejected
Template tag values combined per pipeline128 KB (serialized)Rejected
customTemplateOverride length per pipeline5 MBRejected
Output base-path extension length1,024 charactersRejected
Metadata entries captured per entity1,000Truncated and reported
Metadata bytes captured per entity300 KBTruncated and reported
Metadata bytes captured per execution128 MBTruncated and reported
info

The input-file limit counts individually specified files only. It bounds the number of file selections an execute request enumerates. A whole-asset selection, a folder selection, and any files a pipeline reads for itself from the asset directory once it is running are not counted and are not limited — a whole-asset run over an asset holding tens of thousands of files is a single selection. Reach the limit only by naming more than 1,000 individual files in one request; select the folder or the whole asset instead.

info

The per-entity metadata bounds are applied to each database, each asset, and each file's metadata and attributes independently, and keys are kept in sorted order until the bound is reached. The per-execution bound is applied across the whole run: rows are considered broadest-first, and a row that does not fit is emptied rather than partially kept, so a reader never sees a silently half-populated entity. A tag value is generous at 64 KB because a tag may legitimately carry a long generative-AI prompt.

Execution Detail and Log Limits

Bounds on what a single API response returns for one execution. These are response-shaping limits, not data limits — the full data remains stored and reachable.

ParameterValueExceeding it
Rows read per detail collection2,000Truncated, flagged
Rows returned per detail collection1,000Truncated, flagged
Rows returned in the output-files collection2,000Truncated, flagged
Bytes returned per detail collection4 MBTruncated, flagged
Total detail response size5 MBTruncated, flagged
Metadata bytes guaranteed in a detail response256 KB minimumReserved so a file-heavy run still shows metadata
Metadata rows per detail-metadata page500 (default 100)Clamped to the maximum; page with NextToken
Executions per global list page100Clamped to the maximum; page with NextToken
Free-form text bytes per execution record380 KBTruncated, flagged
Log text bytes per execution record390 KBTruncated
note

A page-size cap bounds the size of one response rather than the amount of data a caller may read, so a pageSize above the maximum is answered with a page at the maximum and its NextToken instead of a 400. Continue the walk with the returned token to read the remainder.

note

A truncated detail collection is named in the response's truncatedCollections array, and a truncated configuration or result body sets its own flag (renderedConfigTruncated, resultsContentTruncated) alongside a pointer to the complete object in Amazon S3. Retrieve a large collection through its paged endpoint rather than the detail response.


Upload Limits

File Upload Restrictions

ParameterValue
Blocked file extensions.jar, .java, .com, .php, .reg, .pif, .bak, .dll, .exe, .nat, .cmd, .lnk, .docm, .vbs, .bat
Upload stage 1 rate limit10 initializations per user per minute
File validationExtension and MIME type checks on API upload only

Blocked MIME Types

The following MIME types are rejected during file upload validation:

MIME TypeDescription
application/java-archiveJava archive files
application/x-msdownloadWindows executables
application/x-shShell scripts
application/x-phpPHP scripts
application/javascriptJavaScript files
application/x-powershellPowerShell scripts
application/vbscriptVBScript files
application/x-ms-dos-executableDOS executables
application/x-bat-scriptBatch scripts
application/vnd.ms-word.document.macroEnabled.12Macro-enabled Word documents

Amazon Cognito Limits

When using Amazon Cognito as the authentication provider:

ParameterDefaultNotes
User pool users40,000,000Amazon Cognito service default
Custom attributes per user50Amazon Cognito service limit
Groups per user pool10,000Amazon Cognito service limit
Invitation email deliveryVia Amazon SES or Cognito defaultRate limits apply
note

Amazon Cognito service quotas can be increased through the AWS Service Quotas console if your deployment requires higher limits.


Network and VPC Limits

ParameterValue
VPC endpoints per configuration1-11 per Availability Zone
Availability Zones required (ALB)2 minimum
Availability Zones required (OpenSearch Provisioned)2 or 3 (default 2)
Availability Zones required (Lambda in VPC)1 minimum

For detailed cost implications of VPC endpoint configurations, see the cost estimates.