DEV Community

Cover image for Deploying an Angular Application: Why S3 + CloudFront is Better Than EC2
Manas Tole
Manas Tole

Posted on

Deploying an Angular Application: Why S3 + CloudFront is Better Than EC2

Introduction

Angular is a powerful front-end framework for building dynamic, single-page applications (SPAs). However, when it comes to deploying an Angular application, many developers default to using an EC2 instance. While EC2 can work, it is not the most efficient solution for deploying static frontend applications. Instead, using AWS S3 + CloudFront is a better and more cost-effective alternative. In this post, we’ll explore why and how to deploy Angular efficiently.

Why is Angular a Static Frontend Application?

Angular applications, once built, consist of static files:

HTML (Structure of the app)
CSS (Styling and layouts)
JavaScript (Compiled from TypeScript, providing interactivity)

Unlike traditional server-side applications, Angular does not require backend rendering. The frontend makes API calls to fetch data from a REST or GraphQL backend, which can be hosted separately. Because of this, an Angular app does not need a dedicated server like an EC2 instance to function—it just needs to be served as static files.

Why S3 + CloudFront is the Best Deployment Option

Since Angular applications are static, AWS S3 (Simple Storage Service) with CloudFront (CDN) offers several advantages:

✅ Cost-Effective

Running an EC2 instance 24/7 incurs costs for compute power, storage, and maintenance. S3 storage costs are much lower, and you only pay for what you use.

✅ Scalability

S3 automatically scales to handle any number of users, whereas EC2 requires manual scaling and load balancing.

✅ Faster Performance with CloudFront

CloudFront, AWS’s Content Delivery Network (CDN), caches static files globally, reducing latency and improving load times for users worldwide.

✅ No Server Maintenance

With S3, there’s no need to configure or maintain a server (like Nginx or Apache) since AWS handles everything for you.

Angular Application Deployment with S3 + Cloudfront

How to Deploy an Angular App on S3 + CloudFront

Step 1: Build Your Angular Application

Run the following command to generate a production-ready build:

ng build --configuration=production
Enter fullscreen mode Exit fullscreen mode

This will create a dist/ folder containing static files.

Step 2: Upload Files to an S3 Bucket

Create an S3 bucket and upload the contents of the dist/ folder:

aws s3 sync dist/my-app s3://my-angular-app-bucket --acl public-read
Enter fullscreen mode Exit fullscreen mode

Enable Static Website Hosting in the S3 bucket settings.

Step 3: Set Up CloudFront for Faster Delivery

Create a CloudFront distribution pointing to your S3 bucket.

Enable caching and compression for better performance.

Use a custom domain (optional) and enable HTTPS for security.

Now, your Angular app is globally available with low latency and high scalability!

Why EC2 is Not the Best Choice for Static Angular Apps

If you still choose to deploy Angular on EC2, you must use a web server like Nginx, Apache, or Express because EC2 alone does not serve static files. Here’s why EC2 is not ideal:

❌ Higher Cost

EC2 instances charge for compute time, storage, and bandwidth.

Requires a load balancer for high-traffic apps.

❌ Manual Scaling Required

You need to set up auto-scaling and load balancing.

Server maintenance is required (updates, security patches, etc.).

❌ No Built-in Global Distribution

Unlike CloudFront, EC2 does not provide automatic global caching.

How to Deploy Angular on EC2 with Nginx

If you must use EC2, follow these steps to serve Angular properly:

Step 1: Install Nginx

sudo apt update
sudo apt install nginx -y
Enter fullscreen mode Exit fullscreen mode

Step 2: Copy Angular Build Files

sudo cp -r dist/my-app/* /var/www/html/

Enter fullscreen mode Exit fullscreen mode

Step 3: Restart Nginx

sudo systemctl restart nginx

Enter fullscreen mode Exit fullscreen mode

Your Angular app is now accessible via the EC2 instance’s public IP.

When to Use S3 + CloudFront?

✔️ You only need to serve an Angular frontend.
✔️ You want a scalable and cost-effective solution.
✔️ You don’t want to manage servers.

When to Use EC2?

✔️ You need to host both the Angular frontend and the backend API on the same instance.
✔️ Your application requires dynamic server-side rendering.
✔️ You need more control over server configurations.

Conclusion

For deploying an Angular SPA, S3 + CloudFront is the best choice due to its low cost, high scalability, and ease of maintenance. However, if you need full server control or want to deploy a backend on the same instance, EC2 with Nginx is an option.

Which method do you prefer for your Angular deployments? Let me know in the comments! 🚀

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay