Skip to content

Repository files navigation

AWS Services Spring Boot Application

Author: Zeenat Hussain

A comprehensive Spring Boot application demonstrating integration with major AWS services: S3, SNS, SQS, and RDS.

🚀 Features

AWS Services Integration

  • S3 (Simple Storage Service) - Bucket and object operations (Full functionality)
  • SNS (Simple Notification Service) - Topic management and messaging (Full functionality)
  • SQS (Simple Queue Service) - Queue operations and message handling (Full functionality)
  • RDS (Relational Database Service) - Database instance management (Demo/Mock implementation)

🛠️ Tech Stack

  • Spring Boot 2.7.18 - Main framework (Compatible with Java 11)
  • AWS SDK for Java 2.21.29 - AWS service integration
  • MySQL Connector - Database connectivity (Disabled for demo)
  • Maven - Dependency management

📋 Setup

  1. Configure AWS Credentials in application.properties:
aws.access-key=your-access-key
aws.secret-key=your-secret-key
aws.region=your-region
  1. Run the application:
cd "AWS Services App"
mvn spring-boot:run
  1. Access the application: http://localhost:8082

🔧 API Endpoints

S3 Operations

  • GET /api/s3/buckets - List all buckets
  • POST /api/s3/buckets/{bucketName} - Create bucket
  • DELETE /api/s3/buckets/{bucketName} - Delete bucket
  • GET /api/s3/buckets/{bucketName}/objects - List objects
  • POST /api/s3/buckets/{bucketName}/objects/{key} - Upload object
  • GET /api/s3/buckets/{bucketName}/objects/{key} - Download object
  • DELETE /api/s3/buckets/{bucketName}/objects/{key} - Delete object

SNS Operations

  • GET /api/sns/topics - List topics
  • POST /api/sns/topics/{topicName} - Create topic
  • DELETE /api/sns/topics?topicArn={arn} - Delete topic
  • POST /api/sns/subscribe - Subscribe to topic
  • DELETE /api/sns/unsubscribe - Unsubscribe
  • POST /api/sns/publish - Publish message
  • GET /api/sns/subscriptions?topicArn={arn} - List subscriptions

SQS Operations

  • GET /api/sqs/queues - List queues
  • POST /api/sqs/queues/{queueName} - Create queue
  • DELETE /api/sqs/queues?queueUrl={url} - Delete queue
  • POST /api/sqs/send - Send message
  • GET /api/sqs/receive - Receive messages
  • DELETE /api/sqs/messages - Delete message
  • POST /api/sqs/purge - Purge queue
  • GET /api/sqs/attributes - Get queue attributes

RDS Operations

  • GET /api/rds/instances - List DB instances
  • POST /api/rds/instances - Create DB instance
  • DELETE /api/rds/instances/{id} - Delete DB instance
  • GET /api/rds/instances/{id}/status - Get instance status
  • POST /api/rds/instances/{id}/start - Start instance
  • POST /api/rds/instances/{id}/stop - Stop instance
  • POST /api/rds/instances/{id}/reboot - Reboot instance
  • POST /api/rds/snapshots - Create snapshot
  • GET /api/rds/snapshots - List snapshots

🧪 Testing Examples

S3 Example

# Create bucket
curl -X POST http://localhost:8082/api/s3/buckets/my-test-bucket

# Upload object
curl -X POST http://localhost:8082/api/s3/buckets/my-test-bucket/objects/test.txt \
  -H "Content-Type: text/plain" \
  -d "Hello AWS S3!"

# Download object
curl http://localhost:8082/api/s3/buckets/my-test-bucket/objects/test.txt

SNS Example

# Create topic
curl -X POST http://localhost:8082/api/sns/topics/my-topic

# Publish message
curl -X POST "http://localhost:8082/api/sns/publish?topicArn=arn:aws:sns:us-east-1:123456789012:my-topic&message=Hello&subject=Test"

SQS Example

# Create queue
curl -X POST http://localhost:8082/api/sqs/queues/my-queue

# Send message
curl -X POST "http://localhost:8082/api/sqs/send?queueUrl=https://sqs.us-east-1.amazonaws.com/123456789012/my-queue" \
  -H "Content-Type: text/plain" \
  -d "Hello SQS!"

⚠️ Important Notes

RDS Implementation

RDS operations return placeholder messages instead of creating actual AWS resources. This is intentional because:

  • RDS operations are complex and require specific AWS permissions
  • Creating real RDS instances costs money ($15-50+ per month)
  • RDS instance creation takes 10-20 minutes
  • The demo implementation shows API structure without AWS charges

Expected RDS Response: "RDS operations require proper AWS configuration and permissions. Instance ID: [your-id]"

Service Status

  • S3, SNS, SQS: Full AWS integration with real operations
  • RDS: Mock implementation for demo purposes
  • Database: Disabled to avoid MySQL connection requirements

🔐 Security Notes

  • Never commit AWS credentials to version control
  • Use IAM roles when running on EC2
  • Follow AWS security best practices
  • Implement proper error handling for production use

📝 Configuration

  • Default port: 8082
  • AWS region: us-east-1 (configurable)
  • Supports both credential-based and IAM role authentication
  • Database auto-configuration disabled for demo purposes

About

Production-ready Spring Boot REST API demonstrating AWS services integration (S3, SNS, SQS, RDS) with comprehensive documentation, Postman testing guide, and 40+ interview questions. Perfect for learning cloud development and interview preparation.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

Contributors

Languages