A lightweight cloud-powered event notification platform built with AWS. This project allows users to subscribe to event alerts, view upcoming events, and create new announcements — all through a static website backed by serverless infrastructure.
An automated system using:
- Amazon S3 for frontend hosting and event data storage
- Amazon SNS for email subscriptions and notifications
- AWS Lambda for backend logic
- API Gateway for RESTful endpoints
- IAM Roles for secure access control
-
Frontend: Static site hosted on S3 with HTML, CSS, and
events.json
-
Subscribe Flow:
/subscribe
→ API Gateway → Lambda → SNS- The
SubscribeToSNSFunctionlambda
handles email subscriptions:
- Uses
boto3.client('sns')
to interact with SNS sns_client.subscribe
adds emails to the topic- Validates email presence in request body before subscribing
- Topic used:
arn:aws:sns:us-east-2:230193013910:MyEventAnnouncements
Subscribe Flow Screenshots
- Create Event Flow:
/create-event
→ API Gateway → Lambda- The
createEventFunction
:- Appends new event details to the
events.json
file stored in S3 (arn:aws:s3:::myevent-announcement-website-s3
) - Notifies all SNS subscribers about the new event
- Function permissioned by
myeventcreationLAMBDAroll
- Appends new event details to the
Here are key screenshots from the configuration and testing process:
- Frontend Hosting with S3
- Uploaded
index.html
,styles.css
, andevents.json
- Enabled static site hosting
- Used this bucket ARN:
arn:aws:s3:::myevent-announcement-website-s3
- Uploaded
- SNS Setup
- Created topic:
MyEventAnnouncements
- ARN:
arn:aws:sns:us-east-2:230193013910:MyEventAnnouncements
- Enabled Lambda to publish to the topic
- Created topic:
-
Lambda Functions
SubscribeToSNSFunctionlambda
: Manages email subscriptionscreateEventFunction
: Updates events.json and triggers notifications
-
API Gateway Configuration
- Created REST API:
myEventManagementAPIrest
- Integrated and tested endpoints
/subscribe
and/create-event
- Enabled CORS
- Deployed to stage
dev
:- Subscribe:
https://gh7p4kplu.execute-api.us-east-2.amazonaws.com/dev/subscribe
- Create Event:
https://gh7p4kplu.execute-api.us-east-2.amazonaws.com/dev/create-event
- Subscribe:
- Created REST API:
- IAM Roles & Policies
- Created role:
myeventcreationLAMBDAroll
for Lambda permissions - Roles assigned to handle S3 access and SNS publishing securely
- Created role:
- Manually tested Lambda and API Gateway connections
- Verified CORS handling and frontend communication
- Events successfully posted, stored in S3, and email notifications sent via SNS
- Responses were parsed and displayed correctly on the site
During the build, I ran into a few issues and fixed them along the way:
-
CORS Problems
My API Gateway wasn’t accepting requests from the frontend — fixed by turning on CORS for each endpoint and redeploying the API. -
Weird JSON Response from Lambda
Lambda gave me a response with a string inside the body. I had to useJSON.parse()
twice in my JavaScript to get the actual message out. -
Site Looked All White After Changes
When I swapped in tutorial code, my styling disappeared. Turned out a broken URL and a missing CSS link caused a JavaScript error that broke the layout. Once I fixed thefetch()
call and re-checked the CSS file, it worked again. -
Accidental Line Breaks
There was a sneaky line break in one of myfetch()
calls — made the code crash silently. I used VS Code to spot it and fix it. -
Endpoint Security
I kept my real API endpoints out of the repo for safety. I tested everything fully, then removed the live links during cleanup.
Once functionality was confirmed:
- Deleted S3 bucket
- Deleted Lambda functions:
SubscribeToSNSFunctionlambda
andcreateEventFunction
- Removed API Gateway endpoints
- Deleted SNS topic and subscriptions
- Detached and deleted IAM roles
This project was built with a hands-on approach to reinforce real-world AWS architecture. Each component was tested individually before full integration. Permissions followed least-privilege principles, and CORS was validated during deployment.
Temporary frontend was hosted at:
http://myevent-announcement-website-s3.s3-website.us-east-2.amazonaws.com
This site has since been removed during cleanup for security and cost control.
Cloud & Infrastructure:
AWS (Lambda, S3, SNS, API Gateway, IAM)
Frontend:
HTML, CSS, JavaScript, Static Site Hosting via S3
Backend:
Node.js (Lambda functions), REST API design via API Gateway, Event-driven architecture
Automation & Permissions:
IAM Roles, Email notifications via SNS + SES
Deployment Approach:
Serverless architecture, Infrastructure-as-Code style (manual in this repo, Terraform-ready)