Looking to build a mobile application that records a a session of data. The data is required to be cleansed, and then uploaded into an incoming S3 bucket. An event is on this bucket that then triggers a Lambda function to process the data, which then is placed into an outgoing S3 bucket. This is in the form of a file with the file contents being a word on the result of the processing. This result then needs to be returned back to the device. I'm looking to architect this using as many AWS Architect services as possible. There does also need to be historical data available to the user(device), to see their previous results. At the moment, I have the following ideas:
- AWS Cognito to authenticate device
- Mobile device will process and cleanse data, and again using Cognito authentication, place payload packet into S3 incoming bucket, with the DeviceID making up part of the filename
- Process remaining as is with Lamdba function, with output being text file, again using DeviceID naming convention
- Event trigger on outgoing S3 bucket, with another Lambda function to store the result into DynamoDB. Once stored, send a push notification to the device with the latest result (status)
- A small EC2 instance with a custom Node.js admin app to search DynamoDB and view all results, and potentially intercept results (like a workflow) before sent to user. Even possible to trigger final notification to user from admin console
- Device application will used AWS SDK to read DynamoDB results historically
- Future may incorporate Elastic MapReduce to perform complex queries on results
Solution seems fairly sound, I'm still getting up to speed on all the available AWS services, so not sure if I'm missing anything glaringly obvious.