This is event-driven implementation of Tweet Trends using Sentimental Analysis.
-
NodeJS(via Lambda) - for serverless nodeJS code
-
Twitter API - fetch live public tweet streams
-
Sentiment Analysis - IBM Watson NLU API
-
AWS:
- Lambda - Serverless implementation
- API Gateway - Route API req/res to/from Lambda/Client
- SQS - Message queue to pipe tweets asynchronously
- SNS - Kinda pub/sub implementation between client & back-end to notify of fetched tweets
- S3 - Hosting static landing page to interact with back-end
- ElasticSearch - Store tweets with Sentiment analysis
- API Gateway - To deploy API into a REST endpoint, this way the client can make REST calls to lambda functions
-
Apex - To deploy AWS lambda functions through command line
[Insert Image here with markdown!!]
- 1st Lambda function to fetch tweets from Twitter-streaming API & filter out tweets with no location & check for language to be english
- send those stream of tweets onto SQS, SNS. SNS triggers 2nd Lambda (sqsToSa)
- 2nd Lambda function to fetch tweets from SQS, Sentiment analyse(text) & send to second SNS topic which triggers 3rd lambda
- 3rd lambda function to fetch tweets from SNS & & index the tweet as document onto ElasticSearch
- Client listens onto new tweets through Static website hosted on S3
- For every functions in functions folder run
npm install
which will download all the required packages from NPM - Setup apex for command line changes to lambda & deploy them to AWS
- Learn to setup environment variables, add required rules to run lambdas
- Setup all the infrastructure
- SQS - one queue
- SNS - two sns topics
- ElasticSearch - to document tweets
- S3 - create a front-end and deploy it onto S3 for hosting
- Setup all the infrastructure
apex deploy
to delpoy all lambda(s) to AWS Lambda- Call first lambda via API Gateway, it should fetch tweets and store them onto ElasticSearch