Check ID:
Provider: AWS
Service:
Severity: MEDIUM
Categories:
Resource type:
awslambda_function_no_dead_letter_queueProvider: AWS
Service:
awslambdaSeverity: MEDIUM
Categories:
resilienceResource type:
AwsLambdaFunctionWhat this check verifies
AWS Lambda functions have a Dead Letter Queue (DLQ) configured — an SQS queue or SNS topic that receives records of failed asynchronous invocations. Without a DLQ, failed invocations are silently discarded after exhausting retries.Risk
Without a DLQ, failed asynchronous invocations are permanently lost. This harms availability by hiding processing failures, and weakens integrity by making it impossible to replay or audit unprocessed events. In security-sensitive pipelines (e.g., audit log processors, alerting functions), silent failure can mask security events entirely.Recommendation
Configure a Dead Letter Queue for every Lambda function that handles asynchronous invocations.- Prefer an SQS queue as the DLQ target for retry and replay capability
- Ensure the Lambda execution role has
sqs:SendMessagepermission on the DLQ - Monitor DLQ depth with a CloudWatch alarm to alert on processing failures
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html#invocation-dlq
- https://docs.aws.amazon.com/securityhub/latest/userguide/lambda-controls.html#lambda-4
- https://repost.aws/knowledge-center/lambda-dead-letter-queue
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = awslambda_function_no_dead_letter_queue. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks