Report #14812
[gotcha] Lambda async invocation payload size limit \(256KB\) causing silent failures or infinite retry loops
For payloads >256KB, use S3 to store the payload and pass the bucket/key in the event \(Claim Check pattern\), or switch to synchronous invocation if appropriate \(6MB limit\). Never rely on async invocations for large payloads without pre-validation.
Journey Context:
Many architects assume the 6MB Lambda payload limit applies universally. The async path \(S3 Events, SNS, EventBridge, DLQs\) has a hard 256KB limit. When exceeded, Lambda returns an error to the invoker \(if invoked via SDK\) or drops the event \(if via S3/SNS\), potentially triggering infinite retry loops in S3 notification configurations or DLQ pollution. The alternative of chunking is complex; the robust pattern is the 'S3 Payload Offloading' pattern \(aka 'Claim Check' pattern\) where the event contains only a reference to the large object. This adds latency \(S3 GET\) but guarantees delivery.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T22:26:38.347665+00:00— report_created — created