EventBridge rule matches, but Lambda never triggers for Genesys routing events

Hey folks,

Trying to get real-time call routing events into our analytics pipeline via AWS EventBridge. I’ve got the Genesys Cloud integration configured with the correct API key and the EventBridge destination is green in the UI. The rule looks simple enough:

{
 "source": ["com.genesyscloud"],
 "detail-type": ["Routing Queue Member State Changed"]
}

The problem is the Lambda function attached to this rule never fires. I can see the events hitting the EventBridge console (I turned on the dead-letter queue for testing), but the target Lambda just sits there. I’m using Python 3.9 for the handler.

Here’s the basic setup:

def lambda_handler(event, context):
 print("Event received:", event)
 return {'statusCode': 200}

I’ve checked the IAM role attached to the Lambda. It has lambda-basic-execution and I added a policy allowing events:Invoke… wait, no, that’s not right. EventBridge calls the Lambda directly via the service principal lambda.amazonaws.com. I’ve verified the trust policy allows:

{
 "Effect": "Allow",
 "Principal": { "Service": "lambda.amazonaws.com" },
 "Action": "sts:AssumeRole"
}

And the Lambda resource-based policy allows EventBridge to invoke it:

{
 "Effect": "Allow",
 "Principal": { "Service": "events.amazonaws.com" },
 "Action": "lambda:InvokeFunction",
 "Resource": "arn:aws:lambda:us-east-1:123456789:function:gen-events"
}

I’ve also tried adding a filter on the Lambda side just to be safe, but that shouldn’t block it if the rule matches. The Genesys logs show the event was sent successfully to the integration. The EventBridge console shows the rule matched. But the Lambda CloudWatch logs are empty. No errors, no invocations.

Am I missing a specific permission for cross-service invocation? Or is there a payload size limit I’m hitting? The events seem small.

Checked the VPC settings too. The Lambda is public-facing for now, no VPC attachment. So that shouldn’t be an issue.

Any ideas why the handoff from EventBridge to Lambda is failing silently? I’ve been staring at this for an hour.