Introduction
Lambda destinations route function results (success or failure) to other AWS services like SQS, SNS, EventBridge, or another Lambda. When destinations don't deliver, async invocation results disappear silently, breaking downstream processing workflows.
Symptoms
No delivery to destination:
```bash $ aws lambda invoke --function-name my-function --invocation-type Event output.json
# Invocation succeeds but no message in SQS/SNS $ aws sqs receive-message --queue-url https://sqs.us-west-2.amazonaws.com/123456789/my-queue
# Returns empty - no messages delivered ```
CloudWatch showing invocation but no destination:
```bash $ aws logs filter-log-events --log-group-name /aws/lambda/my-function
# Shows function execution completed # But no "DestinationInvoke" log entry ```
IAM permission errors:
```bash $ aws logs filter-log-events --log-group-name /aws/lambda/my-function
"errorMessage": "AccessDenied: User is not authorized to perform: sqs:SendMessage" ```
Common Causes
- 1.IAM permissions missing - Lambda can't send to destination
- 2.Destination not configured - OnSuccess/OnFailure not set
- 3.Event filtering too strict - All events filtered out
- 4.Destination resource deleted - SQS/SNS no longer exists
- 5.Maximum event age exceeded - Event expired before delivery
- 6.Retry policy exhausted - Delivery retries failed
- 7.Destination ARN incorrect - Wrong resource ARN
Step-by-Step Fix
- 1.Check logs for specific error messages
- 2.Verify configuration settings
- 3.Test network connectivity
- 4.Review recent changes
- 5.Apply corrective action
- 6.Verify the fix
Step 1: Check Destination Configuration
```bash # Get function's destination configuration aws lambda get-function-configuration --function-name my-function \ --query '{OnSuccess:DestinationConfig.OnSuccess,OnFailure:DestinationConfig.OnFailure}'
# Should show: # OnSuccess: { Destination: "arn:aws:sqs:..." } # OnFailure: { Destination: "arn:aws:sns:..." } ```
Step 2: Verify Destination Resource Exists
```bash # For SQS destination aws sqs get-queue-attributes --queue-url https://sqs.us-west-2.amazonaws.com/123456789/my-queue
# For SNS destination aws sns get-topic-attributes --topic-arn arn:aws:sns:us-west-2:123456789:my-topic
# For EventBridge destination aws events describe-event-bus --name my-event-bus
# For Lambda destination aws lambda get-function --function-name my-destination-function ```
Step 3: Check IAM Permissions
```bash # Get Lambda execution role aws lambda get-function-configuration --function-name my-function \ --query 'ExecutionRoleArn'
# Check role has permissions for destination aws iam get-role-policy --role-name LambdaExecutionRole --policy-name DestinationPolicy
# Required permissions: # SQS: sqs:SendMessage # SNS: sns:Publish # EventBridge: events:PutEvents # Lambda: lambda:InvokeFunction ```
Add missing permissions:
aws iam put-role-policy \
--role-name LambdaExecutionRole \
--policy-name SQSAccess \
--policy-document '{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Action": "sqs:SendMessage",
"Resource": "arn:aws:sqs:us-west-2:123456789:my-queue"
}]
}'Step 4: Configure Destination
```bash # Add OnSuccess destination aws lambda put-function-event-invoke-config \ --function-name my-function \ --destination-config '{"OnSuccess":{"Destination":"arn:aws:sqs:us-west-2:123456789:my-queue"}}'
# Add OnFailure destination aws lambda put-function-event-invoke-config \ --function-name my-function \ --destination-config '{"OnFailure":{"Destination":"arn:aws:sns:us-west-2:123456789:error-topic"}}'
# Configure both aws lambda put-function-event-invoke-config \ --function-name my-function \ --destination-config '{"OnSuccess":{"Destination":"arn:aws:sqs:..."},"OnFailure":{"Destination":"arn:aws:sns:..."}}' ```
Step 5: Check Event Filtering
```bash # Get filter criteria aws lambda get-function-event-invoke-config --function-name my-function \ --query 'DestinationConfig.OnSuccess.FilterCriteria'
# Filter patterns that might block delivery: # {"statusCode": [200]} - Only success responses # {"errorMessage": ["*timeout*"]} - Only specific errors
# Remove restrictive filters aws lambda put-function-event-invoke-config \ --function-name my-function \ --destination-config '{"OnSuccess":{"Destination":"arn:aws:sqs:..."}}' ```
Step 6: Verify Maximum Event Age
```bash # Check maximum event age aws lambda get-function-event-invoke-config --function-name my-function \ --query 'MaximumEventAgeInSeconds'
# Default: 21600 seconds (6 hours) # If events expire before destination delivery, they're dropped
# Increase if needed aws lambda put-function-event-invoke-config \ --function-name my-function \ --maximum-event-age-in-seconds 86400 ```
Step 7: Check Retry Configuration
```bash # Get retry policy aws lambda get-function-event-invoke-config --function-name my-function \ --query 'MaximumRetryAttempts'
# Default: 2 retries # After retries exhausted, OnFailure destination is triggered
# Increase retries aws lambda put-function-event-invoke-config \ --function-name my-function \ --maximum-retry-attempts 3 ```
Step 8: Test Destination Delivery
```bash # Invoke function asynchronously aws lambda invoke \ --function-name my-function \ --invocation-type Event \ --payload '{"test": "destination"}' \ output.json
# Check SQS for success messages aws sqs receive-message --queue-url https://sqs.us-west-2.amazonaws.com/123456789/my-queue
# Check CloudWatch for delivery logs aws logs filter-log-events \ --log-group-name /aws/lambda/my-function \ --filter-pattern "Destination" ```
Step 9: Check SQS Queue Policy
```bash # For SQS destination, queue must allow Lambda to send aws sqs get-queue-attributes \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789/my-queue \ --attribute-names Policy
# Add policy if missing: aws sqs set-queue-attributes \ --queue-url https://sqs.us-west-2.amazonaws.com/123456789/my-queue \ --attributes '{"Policy":"{\"Version\":\"2012-10-17\",\"Statement":[{"Effect":"Allow","Principal\":{\"Service\":\"lambda.amazonaws.com\"},\"Action\":\"sqs:SendMessage\",\"Resource\":\"arn:aws:sqs:us-west-2:123456789:my-queue\"}]}"}' ```
Step 10: Monitor Destination Metrics
```bash # Check Lambda destination metrics aws cloudwatch get-metric-statistics \ --namespace AWS/Lambda \ --metric-name DestinationInvocations \ --dimensions Name=FunctionName,Value=my-function \ --statistics Sum \ --period 60
# Check for delivery failures aws cloudwatch get-metric-statistics \ --namespace AWS/Lambda \ --metric-name DestinationDeliveryFailed \ --dimensions Name=FunctionName,Value=my-function ```
Lambda Destination Response Format
For SQS/SNS destinations, Lambda sends:
{
"version": "1.0",
"timestamp": "2024-01-15T10:00:00Z",
"requestContext": {
"requestId": "uuid",
"functionArn": "arn:aws:lambda:...",
"condition": "Success" // or "RetryFailure"
},
"responsePayload": {
// Actual function response
}
}Verification
```bash # After configuration, test invocation aws lambda invoke --function-name my-function --invocation-type Event /dev/null
# Wait a few seconds, then check destination aws sqs receive-message --queue-url https://sqs.us-west-2.amazonaws.com/123456789/my-queue
# Should receive message with function response ```
Related Issues
- [Fix AWS Lambda Function Timeout](/articles/fix-aws-lambda-function-timeout)
- [Fix AWS Lambda Dead Letter Queue Not Working](/articles/fix-aws-lambda-dead-letter-queue-not-working)
- [Fix AWS SQS Message Not Received](/articles/fix-aws-sqs-message-not-received)
Related Articles
- [AWS troubleshooting: Fix IAM Permission Denied - Complete Tro](fix-iam-permission-denied)
- [AWS cloud troubleshooting: AWS ACM Certificate Pending Validation Because the](aws-acm-certificate-pending-validation-wrong-route53-zone)
- [AWS cloud troubleshooting: AWS ALB Returns 502 Because the Target Closed the ](aws-alb-502-target-closed-connection-keepalive-timeout-mismatch)
- [AWS cloud troubleshooting: Fix AWS ALB CreateListener TargetGroupNotFound Err](aws-alb-createlistener-targetgroupnotfound)
- [AWS cloud troubleshooting: Fix Aws Alb Lambda 502 Bad Gateway Issue in AWS](aws-alb-lambda-502-bad-gateway)
<script type="application/ld+json"> { "@context": "https://schema.org", "@type": "TechArticle", "headline": "Fix AWS Lambda Destination Not Delivered", "description": "Troubleshoot Lambda destination delivery failures. Fix IAM permissions, SQS/SNS configuration, and event filtering.", "url": "https://www.fixwikihub.com/fix-aws-lambda-destination-not-delivered", "publisher": { "@type": "Organization", "name": "FixWikiHub", "url": "https://www.fixwikihub.com" }, "author": { "@type": "Person", "name": "FixWikiHub Editorial Team" }, "datePublished": "2026-04-02T02:57:27.096Z", "dateModified": "2026-04-02T02:57:27.096Z" } </script>