A fully serverless, cloud-native web application that generates witty AI-powered cloud computing facts — built on AWS with Generative AI at its core.
The Cloud Fun Facts Generator lets users instantly generate AI-crafted, witty cloud computing facts through a clean, responsive frontend hosted on AWS Amplify.
How it works — one click, five services:
- The user clicks Generate Fun Fact on the frontend
- The frontend sends a request to Amazon API Gateway (HTTP API)
- API Gateway triggers an AWS Lambda function
- Lambda fetches a cloud fact from Amazon DynamoDB
- Amazon Bedrock (Nova Lite model) rewrites it into a witty AI response
- The generated fact is returned and displayed on screen
This is what your project will look like once built:
| Service | Role in the Project |
|---|---|
| AWS Lambda | Serverless backend — processes requests and orchestrates responses |
| Amazon API Gateway | Exposes a RESTful HTTP API endpoint for the frontend |
| Amazon DynamoDB | Stores a library of cloud computing facts |
| Amazon Bedrock | Generates witty, AI-powered rewordings using the Nova Lite model |
| AWS Amplify | Hosts and deploys the frontend application |
| AWS IAM | Manages permissions and access control across services |
- ⚡ Fully serverless — no servers to manage, scales automatically
- 🤖 Generative AI integration via Amazon Bedrock (Nova Lite)
- 🗄️ DynamoDB-backed fact storage with Lambda retrieval
- 🌐 HTTP API Gateway simple cheaper than REST API
- 🖥️ Responsive frontend hosted on AWS Amplify
- 🔒 Secure IAM permission model across all services
- 💸 Designed to stay within AWS Free Tier limits
- Table name:
CloudFacts - Partition key:
factId(String) - Populate the table with cloud computing fact records
- Runtime: Python 3.x
- Attach an IAM role with permissions for DynamoDB and Bedrock
- Deploy the function from
lambda/lambda_function.py
- Create a new HTTP API
- Add a
GET /funfactroute - Integrate the route with the Lambda function
- Enable CORS for the Amplify frontend origin
- Enable model access in the AWS Console by submiting onetime usecase and provide IAM permissions
- Select and enable the Amazon Nova Lite model
- Update the Lambda function with the correct model ID and inference parameters
- Upload
frontend/index.htmlto a new Amplify app - Update the API endpoint URL in the frontend code
- Trigger a deployment and verify the live URL
CloudFunFactGenerator/
│
├── lambda/
│ └── lambda_function.py # Core backend logic
│
├── frontend/
│ └── index.html # Frontend UI
│
├── architecture/
│ └── architecture-diagram.png # Architecture diagram
│
└── README.md
| Challenge | Resolution |
|---|---|
| CORS errors between Amplify and API Gateway | Configured CORS headers correctly on the HTTP API |
| IAM permission issues for DynamoDB and Bedrock | Scoped IAM role with least-privilege policies |
| Bedrock model deprecation mid-project | Migrated from legacy model to Amazon Nova Lite |
| API Gateway route not resolving | Debugged route configuration and redeployed the stage |
| Bedrock inference compatibility errors | Updated invocation payload to match Nova Lite's expected format |
| Frontend deployment failures on Amplify | Resolved by correcting build settings and re-uploading the app |
- Designing and wiring together a multi-service serverless architecture on AWS
- Integrating Generative AI into a real application using Amazon Bedrock
- Working with HTTP APIs in API Gateway and managing CORS in serverless deployments
- Writing Lambda functions that interface with both DynamoDB and Bedrock
- Structuring IAM roles and policies for least-privilege access
- Diagnosing and resolving real-world cloud deployment issues end-to-end
- Add user authentication with Amazon Cognito
- Automate infrastructure provisioning with Terraform
- Set up a CI/CD pipeline using GitHub Actions
- Add multiple AI-generated fact categories (e.g., DevOps, Security, Networking)
- Store and display a history of previously generated facts
- Build an analytics dashboard using CloudWatch metrics
- Improve the frontend UI/UX with a modern component library
This project was designed to stay within AWS Free Tier limits wherever possible:
| Service | Cost Profile |
|---|---|
| AWS Lambda | Free Tier eligible (1M requests/month free) |
| Amazon API Gateway | Low-cost HTTP API pricing |
| Amazon DynamoDB | Free Tier eligible (25 GB storage free) |
| AWS Amplify | Free Tier eligible for hosting |
| Amazon Bedrock | Pay-per-use inference — minimal cost for testing |
To avoid AWS charges, delete the following resources after testing:
- AWS Amplify App
- API Gateway HTTP API (
FunfactsAPI) - Lambda Function (
CloudFunFacts) - DynamoDB Table (
CloudFacts) - CloudWatch Log Groups (
/aws/lambda/CloudFunFacts) - Optional: IAM roles created for the project
Note: Amazon Bedrock is usage-based, so avoid unnecessary model invocations.
Deepigha Japamony