Astrology for Remote Work Productivity · CodeAmber

How to Deploy a Full-Stack Application to AWS using EC2, S3, and RDS

How to Deploy a Full-Stack Application to AWS using EC2, S3, and RDS

This guide provides a professional workflow for migrating a local full-stack environment to a production-ready AWS architecture. By the end of this process, your frontend will be hosted on S3, your backend on EC2, and your data persisted in RDS.

What You'll Need

Steps

Step 1: Provision an RDS Instance

Create a relational database instance in the RDS console selecting the engine that matches your local DB (e.g., PostgreSQL or MySQL). Configure the DB subnet group to allow access from your EC2 security group and ensure you securely store the master username and password.

Step 2: Launch an EC2 Instance

Launch a t2.micro or t3.small instance using an Amazon Linux 2 or Ubuntu AMI. Assign a Security Group that opens port 22 for SSH, port 80 for HTTP, and the specific port your backend uses (e.g., 5000 or 8000).

Step 3: Configure the Backend Environment

SSH into your EC2 instance and install the necessary runtime environments, such as Node.js, Python, or Java. Clone your repository from Git and install dependencies using your package manager.

Step 4: Set Up Environment Variables

Create a .env file on the EC2 instance to store sensitive credentials. Include the RDS endpoint, database name, and API secret keys to ensure the backend can communicate with the database securely.

Step 5: Deploy Backend with a Process Manager

Use a tool like PM2 or systemd to keep your application running in the background. This ensures the server automatically restarts if the application crashes or the instance reboots.

Step 6: Configure an Nginx Reverse Proxy

Install Nginx to act as a reverse proxy, routing incoming traffic from port 80 to your backend application port. This improves security and allows you to easily implement SSL certificates via Certbot.

Step 7: Host Frontend on S3

Build your frontend project locally to generate static assets. Upload these files to an S3 bucket configured for 'Static Website Hosting' and enable public read access for the objects.

Step 8: Connect Frontend to Backend

Update your frontend API base URL to point to the EC2 public DNS or your custom domain. Re-deploy the static assets to S3 to ensure the client-side application communicates with the live production server.

Expert Tips

See also

Original resource: Visit the source site