Astrology for Remote Work Productivity · CodeAmber

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

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

This guide provides a professional deployment pipeline to host a static frontend on S3 and a dynamic backend on an EC2 instance, ensuring a scalable and secure production environment.

What You'll Need

Steps

Step 1: Configure VPC and Networking

Establish a Virtual Private Cloud (VPC) with a public subnet to house your EC2 instance. Configure a Security Group to allow inbound traffic on port 80 (HTTP), 443 (HTTPS), and 22 (SSH) for administrative access.

Step 2: Provision the EC2 Backend

Launch an EC2 instance using an Amazon Machine Image (AMI) such as Ubuntu. Attach an Elastic IP to ensure your backend endpoint remains constant across instance reboots.

Step 3: Set Up Backend Environment

SSH into the instance and install necessary runtimes, such as Node.js or Python. Use a process manager like PM2 or Gunicorn to keep the application running in the background and configure Nginx as a reverse proxy to route traffic to your app port.

Step 4: Deploy Static Assets to S3

Create an S3 bucket and enable 'Static Website Hosting' in the properties tab. Upload your compiled frontend build files (HTML, CSS, JS) and set the bucket policy to allow public read access for the objects.

Step 5: Connect Frontend to Backend

Update your frontend environment variables to point to the EC2 Elastic IP or custom domain. Re-deploy the build to S3 to ensure the client-side application can successfully make API calls to the backend.

Step 6: Implement CI/CD Integration

Set up a GitHub Action or AWS CodePipeline to automate deployments. Configure the pipeline to trigger a build on push, sync files to S3 via AWS CLI, and update the EC2 instance using a deployment script or SSH command.

Step 7: Configure DNS and SSL

Map your domain to the S3 bucket and EC2 instance using Route 53. Use AWS Certificate Manager (ACM) to provision SSL certificates, typically routed through an Application Load Balancer for secure HTTPS traffic.

Expert Tips

See also

Original resource: Visit the source site