Getting duplicate events from Genesys Cloud via EventBridge. The source is aws.partner/genesys.com/gen-gateway. Here’s the raw event payload structure hitting my Lambda:
{
"id": "evt-12345",
"source": "aws.partner/genesys.com/gen-gateway",
"detail": {
"id": "conv-67890",
"type": "conversation",
"data": { ... }
}
}
My consumer is a Node.js Lambda using the @aws-lambda-powertools/event-handler. I’m seeing the same id in detail arrive twice within a 200ms window. Not sure if this is EventBridge retrying or Genesys sending duplicates.
Current dedup logic:
import { Lambda } from '@aws-lambda-powertools/event-handler';
import { DynamoDB } from '@aws-lambda-powertools/persistence';
const db = new DynamoDB({ tableName: 'gen_dedup' });
export const handler = async (event: any) => {
const eventId = event.id;
const exists = await db.get(eventId);
if (exists) {
console.log('Duplicate event ignored');
return;
}
await db.put(eventId, {});
// process event
};
This works but adds latency for every event. Is there a better way? Maybe using EventBridge’s built-in deduplication? Or should I handle this in the Genesys webhook configuration?
Looking for a more efficient approach. Current solution feels heavy for high-volume queues.