fshy

Home / AWS

AWS Lambda layers (and function deployment packages)

aws.amazon.com/lambda/IaaSstorage/aws-lambda-layersJSONcomparereport an errorprovider JSON

Free allowance
Per-function/per-layer caps only, plus a regional aggregate.
Verdict
fails: quotathe free allowance is too small to matter
Cost
free tier
Identity
institutionno card, no phone
Binding limit
noneno named constraint binds
Evidence
reported2 sources; a third party said so
Freshness
stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
Free tierPer-function/per-layer caps only, plus a regional aggregate. Verbatim: 'Deployment package (.zip file archive) size | 50 MB (zipped, when uploaded through the Lambda API or SDKs) ... 50 MB (when uploaded through the Lambda console) ... 250 MB The maximum size of the contents of a deployment package, including layers and custom runtimes. (unzipped)'. 'Function layers | 5 layers'. The one aggregate number is code storage: 'Storage for uploaded functions (.zip file archives) and layers using Lambda-managed storage ... 300 GB (unzipped) | Not increasable.'
unit MB; metered on stored-bytes
Pricenone stated
Identityinstitution not published
EgressNot free and not public. Layer download is a signed S3 URL obtainable only via an authenticated GetLayerVersion call; there is no anonymous URL surface at all. Lambda invocations also bill per request and GB-second.
Per-object capnot stated
Retentionuntil the instance is recycled; not persistent
Interfacerest, rclone, cli rest
ToolingAWS CLI publish-layer-version / get-layer-version; SDKs. Immutability is structural: a layer version is immutable once published, so every write is a new version. No rclone backend.
Composes with300 GB unzipped per region across functions + layers, non-increasable, is the only aggregate — so the whole region is a 300 GB bucket with a private API in front. 250 MB per layer, 5 layers per function, 50 MB per uploaded zip means the 250 MB ceiling can only be reached via S3-referenced uploads.
ReliabilityVery durable while the function exists; deleting a function version or layer version removes the code. No silent expiry, but no public read path either — the 300 GB is real and effectively unreachable without building your own proxy.
Evidence 2
datesourcewhat it proved
2026-10-21docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.h'50 MB (zipped, when uploaded through the Lambda API or SDKs)'; '250 MB The maximum size of the contents of a deployment package, including layers and custom runtimes. (unzipped)'; 'Function layers | 5 layers'; '300 GB (unzipped) | Not increasable'
2026-10-21docs.aws.amazon.com/lambda/latest/dg/gettingstarted-limits.h'/tmp directory storage | Between 512 MB and 10,240 MB, in 1-MB increments'
More fields 1
{
 "dead_end": {
  "failure_class": "quota",
  "why": "Per-function/per-layer caps only, plus a regional aggregate. Verbatim: 'Deployment package (.zip file archive) size | 50 MB (zipped, when uploaded through the Lambda API or SDKs) ... 50 MB (when uploaded through the Lambda console) ... 250 MB The maximum size of the contents of a deployment package, including layers and custom runtimes. (unzipped)'. 'Function layers | 5 layers'. The one aggregate number is code storage: 'Storage for uploaded functions (.zip file archives) and layers using Lambda-managed storage ... 300 GB (unzipped) | Not increasable.'",
  "retry_when": null,
  "first_recorded": "2026-10-21"
 }
}
Unknown values 5
  • $.binding_note boilerplate
  • $.identity_cost.detail boilerplate
  • $.per_object_cap.notes the field may be stated in a source that was not read
  • $.per_object_cap.stated the field may be stated in a source that was not read
  • $.retention.notes the field may be stated in a source that was not read