partySim / DEPLOYMENT.md
dpang's picture
Upload 15 files
7b84343 verified
# AWS Deployment Guide for Party Planner
This guide will walk you through deploying your Party Planner app on AWS using Elastic Beanstalk.
## Prerequisites
1. **AWS Account**: You need an active AWS account
2. **AWS CLI**: Install and configure AWS CLI
3. **EB CLI**: Install Elastic Beanstalk CLI
4. **Git**: For version control
## Step 1: Install AWS CLI and EB CLI
### Install AWS CLI
```bash
# macOS (using Homebrew)
brew install awscli
# Or download from AWS website
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
```
### Install EB CLI
```bash
pip install awsebcli
```
### Configure AWS CLI
```bash
aws configure
# Enter your AWS Access Key ID
# Enter your AWS Secret Access Key
# Enter your default region (e.g., us-east-1)
# Enter your output format (json)
```
## Step 2: Prepare Your Application
Your application is already prepared with the necessary files:
- `application.py` - Main Flask application
- `requirements.txt` - Python dependencies
- `Procfile` - Tells EB how to run the app
- `.ebextensions/01_flask.config` - EB configuration
## Step 3: Initialize Elastic Beanstalk
```bash
# Navigate to your project directory
cd /path/to/your/LinkedInParty
# Initialize EB application
eb init
# Follow the prompts:
# 1. Select your region
# 2. Create new application (enter app name: party-planner)
# 3. Select Python platform
# 4. Select Python version (3.11 or 3.12)
# 5. Set up SSH (optional)
```
## Step 4: Create Environment
```bash
# Create and deploy your environment
eb create party-planner-env
# This will:
# 1. Create an EC2 instance
# 2. Set up load balancer
# 3. Configure security groups
# 4. Deploy your application
# 5. Provide you with a URL
```
## Step 5: Deploy Your Application
```bash
# Deploy your application
eb deploy
# Or if you want to deploy and open in browser
eb deploy --open
```
## Step 6: Monitor Your Application
```bash
# Check application status
eb status
# View application logs
eb logs
# Open application in browser
eb open
```
## Alternative Deployment Methods
### Method 2: AWS Lambda + API Gateway
If you prefer serverless deployment:
1. **Install AWS SAM CLI**
```bash
# macOS
brew install aws-sam-cli
```
2. **Create SAM template** (create `template.yaml`):
```yaml
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
PartyPlannerFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: ./
Handler: application.app
Runtime: python3.11
Events:
Api:
Type: Api
Properties:
Path: /{proxy+}
Method: ANY
```
3. **Deploy with SAM**
```bash
sam build
sam deploy --guided
```
### Method 3: AWS ECS (Docker)
1. **Create Dockerfile**:
```dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
EXPOSE 5000
CMD ["gunicorn", "--bind", "0.0.0.0:5000", "application:app"]
```
2. **Build and push to ECR**
```bash
aws ecr create-repository --repository-name party-planner
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin YOUR_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com
docker build -t party-planner .
docker tag party-planner:latest YOUR_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/party-planner:latest
docker push YOUR_ACCOUNT_ID.dkr.ecr.us-east-1.amazonaws.com/party-planner:latest
```
## Environment Variables (Optional)
You can set environment variables in the EB console or via CLI:
```bash
eb setenv SECRET_KEY=your-secret-key-here
```
## Custom Domain (Optional)
1. **Register domain in Route 53** or use existing domain
2. **Create SSL certificate** in AWS Certificate Manager
3. **Configure domain** in EB console or via CLI
```bash
eb config
# Add domain configuration
```
## Monitoring and Scaling
### Auto Scaling
```bash
# Configure auto scaling
eb config
# Set min/max instances based on your needs
```
### CloudWatch Monitoring
- Set up CloudWatch alarms
- Monitor application metrics
- Set up log aggregation
## Cost Optimization
### Free Tier
- AWS offers 12 months free tier
- 750 hours/month of t2.micro instances
- 20GB of storage
### Cost Saving Tips
1. Use t3.micro instances for development
2. Set up auto scaling to scale down during low usage
3. Use Spot Instances for non-critical workloads
4. Monitor costs in AWS Cost Explorer
## Troubleshooting
### Common Issues
1. **Deployment Fails**
```bash
eb logs
# Check for specific error messages
```
2. **Application Not Responding**
```bash
eb health
# Check application health
```
3. **Environment Issues**
```bash
eb events
# View recent events
```
### Useful Commands
```bash
# SSH into your instance
eb ssh
# View environment info
eb info
# List all environments
eb list
# Terminate environment
eb terminate party-planner-env
# Clone environment
eb clone party-planner-env --clone_name party-planner-env-2
```
## Security Best Practices
1. **Use IAM roles** instead of access keys
2. **Enable VPC** for network isolation
3. **Set up security groups** to restrict access
4. **Use HTTPS** for all communications
5. **Regular security updates**
## Backup and Recovery
1. **Database backups** (if using RDS)
2. **Application backups** (version control)
3. **Configuration backups** (EB configuration)
4. **Disaster recovery plan**
## Performance Optimization
1. **Enable CloudFront** for static content
2. **Use RDS** for database (if needed)
3. **Implement caching** (Redis/ElastiCache)
4. **Optimize application code**
## Maintenance
### Regular Tasks
1. **Update dependencies** monthly
2. **Monitor costs** weekly
3. **Review logs** for issues
4. **Update SSL certificates** before expiry
### Updates
```bash
# Update application
git add .
git commit -m "Update application"
eb deploy
# Update environment
eb upgrade
```
## Support
- **AWS Documentation**: https://docs.aws.amazon.com/elasticbeanstalk/
- **AWS Support**: Available with paid plans
- **Community Forums**: AWS Developer Forums
- **Stack Overflow**: Tag with aws-elasticbeanstalk
## Estimated Costs
### Small Application (t3.micro)
- **EC2**: ~$8-15/month
- **Load Balancer**: ~$18/month
- **Storage**: ~$1-5/month
- **Data Transfer**: ~$1-10/month
- **Total**: ~$30-50/month
### Free Tier
- **First 12 months**: Free (with limitations)
- **After free tier**: ~$30-50/month
## Next Steps
1. **Set up monitoring** with CloudWatch
2. **Configure custom domain**
3. **Set up CI/CD pipeline**
4. **Implement backup strategy**
5. **Plan for scaling**
Your Party Planner app is now ready for production deployment on AWS! 🚀