Summary
What's the best way to transform some data in DDB tables and send that data to other teams for processing using AWS services?
Details
Let's say I'm on the "customers" team, and I have a system where new customers can be created and the customer info is stored in DDB tables. This system has been around for a while so the existing DDB tables are fairly large, and the system is fairly active so new customers are frequently created.
I'm working on a project where I need to expose specific (not all) customer information to other teams when a new customer is created along with that specific information for all existing customers. For each customer, clients may or may not perform some operations based on the info. When the project is complete, clients will need to be able to
- Onboard with us and receive specific information for all existing customers
- Receive specific customer information as soon as new customers are created
For #2, I think I'm leaning towards publishing an event to an SNS topic each time a customer is created. Clients can subscribe to the SNS topic if they would like to receive this info on-demand.
I'm not sure what the best way to do #1 is, however.
Some Potential Options
If I could do anything, each time a client onboards with us I would create a dedicated SQS queue for them and then run some sort of job (a Lambda?) which goes through our DDB table and puts each customer info as an message in the queue. I'm aware that's now how SQS is designed to work and it's not scalable.
Another option could be to write something like a script, which can be triggered during onboarding and clients create an SQS queue and pass in the ID to the script which will then go through the customer DDB table and add each piece of info as a message to the queue.