Cloud Hosting Deep Dive
AWS Hosting Explained: What You Actually Need to Know Before You Choose It
EC2, Lightsail, and Elastic Beanstalk broken down by cost, complexity, and who each one is actually built for
๐ What’s in this guide
- Why “AWS Hosting” Isn’t Really One Thing
- Meet the Three Contenders
- How Each One Actually Works
- Pricing Compared
- Complexity & Time-to-Launch
- Scaling: Manual vs. Automatic
- Security & the Shared Responsibility Model
- Managed Services vs. Do-It-Yourself
- When AWS Actually Makes Sense
- Common Mistakes People Make Choosing AWS
- Cost Breakdown by Site/App Type
- Which One Should You Choose?
“Should I just host on AWS?” is a common question when comparing VPS hosting and cloud hosting options โ and usually the wrong one to ask, because “AWS hosting” isn’t one product. Amazon Web Services is a catalog of well over 200 services, and at least three get pitched as “the way to host your site on AWS”: EC2, Lightsail, and Elastic Beanstalk.
Each solves the same basic problem โ running your site on Amazon’s infrastructure โ but they sit at very different points on the control-versus-convenience spectrum, and price out very differently once you count everything you actually pay for. Picking the wrong one is how people end up fighting infrastructure they didn’t need, or paying for a load balancer they didn’t know they had.
This guide breaks down what each actually is, what real costs look like using AWS’s own published pricing, and โ the part most AWS explainers skip โ an honest answer to whether you need AWS at all instead of a traditional managed host.
1. Why “AWS Hosting” Isn’t Really One Thing
When someone says “I want to host on AWS,” they almost always mean one of three things, and the three imply very different levels of hands-on work:
- “I want a virtual server I fully control on Amazon’s infrastructure” โ that’s EC2 (Elastic Compute Cloud), AWS’s raw infrastructure-as-a-service (IaaS) product.
- “I want something like a $5 VPS, but from Amazon, without the AWS console overwhelm” โ that’s Lightsail, AWS’s simplified virtual private server product.
- “I want to deploy my app and have AWS figure out the servers, load balancer, and scaling for me” โ that’s Elastic Beanstalk, a platform-as-a-service (PaaS) layer built on top of EC2.
None of these is “AWS hosting” the way a shared or managed WordPress plan is a single, bundled product at one flat price. All three are usage-based: you provision resources and get billed for what they actually consume, hour by hour and gigabyte by gigabyte. That distinction โ bundled flat pricing versus metered usage-based pricing โ is the most important thing to understand before comparing any AWS option to traditional hosting.
AWS also sells S3, CloudFront, Amplify, Lambda, and dozens more services occasionally called “AWS hosting” for specific use cases. This guide sticks to the three services people actually mean when asking whether to run a site on AWS instead of a traditional host.
2. Meet the Three Contenders
Who Manages What
The cleanest comparison: who’s on the hook for each layer of the stack.
| Layer | EC2 | Lightsail | Elastic Beanstalk |
|---|---|---|---|
| Physical hardware & hypervisor | AWS | AWS | AWS |
| OS patching & updates | You | You (simplified panel) | AWS-managed platform updates available, opt-in |
| Web server / runtime config | You | You, or use a Bitnami blueprint | AWS’s platform config, with overrides via .ebextensions |
| Load balancing | You set it up (ELB) | Manual, add-on, limited | One-click “High availability” preset โ the console actually defaults new environments to no load balancer |
| Scaling | You configure Auto Scaling Groups | Manual resize; no autoscaling | Auto Scaling is one preset away, but “Single instance” is the actual default |
| Monitoring/alerting | You wire up CloudWatch | Basic graphs included | CloudWatch integrated by default |
3. How Each One Actually Works
EC2: You’re the System Administrator
An EC2 instance is a virtual machine you launch from an Amazon Machine Image (AMI) โ Amazon Linux, Ubuntu, or a custom image. From there it behaves like any VPS: you SSH in, install your web server and runtime, attach storage (EBS volumes), assign a security group (AWS’s firewall layer), and decide whether to put it behind a load balancer. Nothing happens automatically. If traffic spikes and you haven’t configured an Auto Scaling Group, your single instance simply runs out of capacity.
Lightsail: EC2 With the Sharp Edges Filed Off
Lightsail runs on the same EC2 infrastructure, but Amazon pre-packages the instance, static IP, DNS zone, storage, and a fixed monthly data transfer allowance into one flat-rate bundle with a much simpler dashboard than the full AWS console. You can launch a pre-configured WordPress, LAMP, or Node.js “blueprint” in a few clicks โ historically packaged by Bitnami, though AWS has announced it’s phasing those out in favor of its own Lightsail-packaged blueprints starting November 2026, so check which you’re getting when you launch one. The tradeoff: Lightsail intentionally hides (and restricts) much of what makes EC2 flexible โ there’s no native horizontal auto-scaling, so outgrowing a plan means a manual resize or a migration to EC2, not automatic added capacity.
Elastic Beanstalk: You Hand Off the Plumbing
With Elastic Beanstalk, you upload your application code (a container image, or code in a supported runtime like Node.js, Python, Java, .NET, Go, Ruby, or PHP) and Beanstalk provisions everything underneath it: EC2 instances, an Elastic Load Balancer, an Auto Scaling Group, CloudWatch monitoring, and optionally an RDS database โ wired together automatically. You deploy new application versions and Beanstalk handles the rollout rather than you managing individual servers. You can still customize the underlying configuration through .ebextensions files, but the further you customize, the more you’re fighting the abstraction Beanstalk exists to provide.
4. Pricing Compared ๐ Lightsail Wins on Predictability
All AWS pricing is usage-based and varies by region โ treat the numbers below as real, current figures for US East (N. Virginia), not universal constants. Your bill moves with region, instance size, and whatever you add on top.
EC2: Pay by the Second, By Instance Type
On-demand EC2 pricing (no long-term commitment) for two of the most common general-purpose burstable instance types in US East (N. Virginia):
| Instance | vCPU / RAM | On-Demand Hourly | Approx. Monthly (730 hrs) |
|---|---|---|---|
| t3.micro | 2 vCPU / 1 GB RAM | ~$0.0104/hr | ~$7.60 |
| t3.medium | 2 vCPU / 4 GB RAM | ~$0.0416/hr | ~$30.37 |
That instance price is the floor, not the total. A real EC2 bill typically adds: EBS storage, a static Elastic IP (AWS now charges for every public IPv4 address, in use or idle โ a policy change effective February 2024; it used to be free while attached to a running instance), snapshot/backup storage, and data transfer out to the internet โ AWS gives a free allowance and then charges per GB beyond it, with the exact free tier and rate varying by account type and changing over time, so check AWS’s current Data Transfer pricing before assuming a number. Add an Application Load Balancer for redundancy or SSL and you’re adding a separate hourly fee plus per-GB charges โ commonly cited estimates put a single ALB’s base cost around $16โ20/month before traffic.
For sustained, predictable workloads, AWS also sells Reserved Instances and Savings Plans that commit you to 1 or 3 years of usage for a discount AWS advertises at up to roughly 72% off on-demand rates โ meaningful if you know your baseline capacity in advance, irrelevant if your workload is genuinely variable, which is often the reason people consider EC2 in the first place.
Lightsail: Flat Monthly Bundles
Lightsail’s Linux instance pricing (published on AWS’s own Lightsail pricing page) bundles compute, storage, and a fixed monthly data transfer allowance into one number:
| Plan | RAM / vCPU | SSD Storage | Data Transfer |
|---|---|---|---|
| $5/mo | 0.5 GB / 2 vCPU* | 20 GB | 1 TB |
| $7/mo | 1 GB / 2 vCPU* | 40 GB | 2 TB |
| $12/mo | 2 GB / 2 vCPU* | 60 GB | 3 TB |
| $24/mo | 4 GB / 2 vCPU | 80 GB | 4 TB |
| $44/mo | 8 GB / 2 vCPU | 160 GB | 5 TB |
*Instances created before AWS’s late-June 2023 bundle update shipped with 1 vCPU at these tiers; current instances get 2. Lightsail also sells flat-rate managed MySQL/PostgreSQL database plans starting around $15/month, separate from the instance price. Because storage and transfer are bundled rather than metered, a Lightsail bill is close to the flat, predictable pricing traditional hosts are known for โ though exceeding your bundled data transfer allowance bills the overage at Lightsail’s per-GB rate, so a viral spike still shows up on the invoice.
Elastic Beanstalk: No Beanstalk Fee, Full Resource Fee
AWS states it directly: “There is no additional charge for AWS Elastic Beanstalk โ you pay only for the AWS resources actually used to store and run your application.” In practice your bill is EC2 + (usually) an Elastic Load Balancer + RDS if you attach a database + S3 for app versions/logs + CloudWatch. Beanstalk’s console-provided defaults actually favor cheapness first: creating a new environment defaults to the “Single instance” preset โ no load balancer โ putting a bare-minimum deployment’s cost in line with a comparable single EC2 instance. The pricier “High availability” preset (load balancer plus Auto Scaling, provisioning an ALB even for low-traffic apps) is one click away and is what most production guides point you toward, so plenty of real deployments end up there anyway โ it’s just an active choice, not the default AWS hands you.
5. Complexity & Time-to-Launch ๐ Lightsail Wins
Dollar cost is only half the equation โ the other half is your own time, and how steep the learning curve is before you can launch and maintain something in production. These figures are our own comparative estimates based on typical setup steps for each service, not a published AWS benchmark, so treat them as directional rather than exact.
On EC2, launching a working, secured, publicly reachable web server from a blank instance is a full sysadmin exercise: choosing an AMI, configuring security groups, hardening SSH, installing your web server and runtime, mounting storage, setting up TLS, and โ for any resilience โ wiring up a load balancer and Auto Scaling Group by hand. None of this is exotic to an experienced engineer, but it’s a different skill set than clicking “install WordPress” on a control panel.
On Lightsail, the equivalent task is picking a blueprint (WordPress, LAMP, Node.js, plain Linux), choosing a plan size, and waiting a couple of minutes โ Amazon deliberately modeled the console after simpler VPS providers. The complexity reappears later: because there’s no native autoscaling, growing past your plan means a manual resize or migration, not a config change.
On Elastic Beanstalk, the initial deploy is genuinely fast when your app fits a supported platform cleanly โ the CLI or console can have a load-balanced, auto-scaled environment running from a zip file in minutes. Complexity shows up when your app needs something Beanstalk didn’t anticipate: custom nginx directives, background workers, or a deployment step its platform hooks don’t cleanly support. At that point you’re writing .ebextensions YAML to patch behavior into a system designed to hide exactly those details โ a specific, often frustrating kind of complexity, distinct from EC2’s more predictable “everything is manual” version.
6. Scaling: Manual vs. Automatic ๐ Elastic Beanstalk Wins
“AWS scales automatically” is one of the most common oversimplifications repeated about AWS hosting. Whether it’s true depends entirely on which of the three services you’re using and how you’ve configured it.
- EC2 by itself does not scale automatically. A single instance behaves like a single VPS: fixed CPU, fixed RAM, a hard ceiling. Automatic scaling requires you to explicitly build an Auto Scaling Group behind a load balancer, define scaling policies (e.g., add an instance when CPU exceeds 70%), and keep your app stateless enough that a second or tenth identical instance actually works. Powerful once built, but opt-in engineering work, not a default.
- Lightsail instances do not autoscale at all. There’s no built-in mechanism to add capacity under load. Options are a manual plan upgrade (vertical scaling) or migrating to EC2 if you outgrow a single instance. Lightsail is built for predictable, bounded workloads, not spikes.
- Elastic Beanstalk can turn on Auto Scaling with a single preset โ its “High availability” environment type. It’s not what the console defaults to (that’s “Single instance,” with no autoscaling), but it’s one click away: you set minimum/maximum instance counts and scaling triggers, and Beanstalk manages the Auto Scaling Group and load balancer for you โ the clearest structural advantage it has over raw EC2, where you’d build that same setup by hand.
We see this assumption regularly: someone moves a site to a single EC2 instance or a Lightsail plan expecting it to “handle whatever traffic AWS throws at it,” and it behaves exactly like an under-provisioned VPS during a real spike โ because, without an Auto Scaling Group actually configured, that’s exactly what it is.
7. Security & the Shared Responsibility Model
AWS’s security posture runs on what it calls the Shared Responsibility Model: AWS is responsible for security of the cloud, you’re responsible for security in the cloud. AWS secures the physical data centers, hardware, hypervisor, and its managed services’ underlying infrastructure. You’re responsible for everything configured on top โ and exactly where that line falls shifts by service.
| Responsibility | EC2 | Lightsail | Elastic Beanstalk |
|---|---|---|---|
| OS security patches | You | You (or Bitnami’s blueprint maintainer) | You, or opt into managed platform updates |
| Firewall rules | You configure security groups | You configure the simplified firewall panel | Managed via the environment’s security group, editable by you |
| Application-level vulnerabilities | You | You | You |
| IAM / access control | You | Simplified, less granular | You, via IAM roles Beanstalk assigns |
| Physical/hypervisor security | AWS | AWS | AWS |
The practical takeaway: none of the three options makes you meaningfully “more secure” out of the box than a managed VPS or hosting plan where the host handles OS patching for you. AWS gives you tools โ security groups, IAM, encryption, AWS WAF โ but it doesn’t patch your plugins, rotate your database credentials, or notice a misconfigured S3 bucket. If you don’t have someone to own the “in the cloud” half on an ongoing basis, weigh that burden honestly against a managed host that bundles it into the plan price.
8. Managed Services vs. Do-It-Yourself
Part of what makes AWS attractive to engineering teams is the surrounding ecosystem of managed services that can replace things you’d otherwise run and maintain yourself on a VPS. Three come up constantly in this comparison:
- RDS (Relational Database Service) โ instead of installing and patching MySQL or PostgreSQL yourself, RDS runs it as a fully managed service with automated backups, patching, and optional multi-AZ failover. It costs more than self-hosting the same database, but removes a whole category of operational risk. Beanstalk can provision RDS automatically; on EC2 or Lightsail you’d add it yourself.
- S3 (Simple Storage Service) โ object storage for backups, uploads, and static assets, instead of relying on local disk. Priced per GB stored plus requests, durable by design.
- CloudFront โ AWS’s CDN, which can front any of the three compute options to cache static assets at edge locations closer to visitors, reducing origin load and often improving load times for a spread-out audience.
The pattern holds across all three: DIY equivalents are cheaper in raw dollars and more work to maintain; the managed AWS service costs more but converts ongoing effort into a monthly line item. Whether that trade is worth it depends on whether your time is the scarcer resource.
9. When AWS Actually Makes Sense
This is the question underneath all the others: should you actually be comparing EC2, Lightsail, and Elastic Beanstalk in the first place, or should you be looking at traditional managed hosting instead? Here’s the honest breakdown.
AWS Genuinely Makes Sense When:
- Your traffic is variable or bursty and you need capacity that expands and contracts automatically โ a ticketing platform, a seasonal retailer, a media site that occasionally goes viral.
- You need specific AWS-native services โ Lambda functions, SQS queues, machine learning services, or tight integration with other AWS infrastructure your company already runs.
- You have engineering capacity on staff to own security patching, scaling configuration, and cost monitoring on an ongoing basis โ not just to set it up once.
- You’re building a custom application, not running an off-the-shelf CMS, where you need fine control over the runtime, deployment pipeline, or architecture.
- Compliance or data residency requirements point you toward a specific AWS region or a specific AWS certification (HIPAA-eligible services, for example).
Traditional Managed Hosting Usually Wins When:
- You’re running a standard WordPress or WooCommerce site with fairly predictable traffic. A managed host bundles server administration, patching, backups, and often a CDN and caching layer into one flat price โ work you’d otherwise assemble yourself across EC2, RDS, S3, and CloudFront.
- You don’t have (or want to hire) dedicated ops capacity. The Shared Responsibility Model means AWS never patches your application stack for you; a managed host’s support team effectively does.
- Budget predictability matters more than elasticity. A flat plan doesn’t fluctuate with a bad data-transfer month or a misconfigured Auto Scaling Group; a usage-based bill can.
- You want to launch this week, not this month. Managed hosting removes nearly all the setup steps in Section 5 above.
If you’re describing your project as “a website,” a traditional managed or VPS host is very likely cheaper and less work for the same result. If you’re describing it as “an application” with specific scaling, architecture, or AWS-service requirements, that’s when EC2, Lightsail, or Beanstalk start to earn their added complexity.
10. Common Mistakes People Make Choosing AWS
Underestimating Total Cost Beyond the Instance Price
The hourly instance rate is the number everyone quotes and the smallest part of a real bill. Data transfer out, EBS storage and snapshots, an Elastic Load Balancer, and RDS all stack on top. A t3.medium at ~$30/month can easily become a $60โ120/month bill once storage, a load balancer, and modest data transfer are added.
Picking Elastic Beanstalk, Then Fighting Its Abstraction
Beanstalk is excellent when your app fits its model, and a source of frustration when teams pick it for the fast initial deploy, then spend weeks working around its assumptions with custom .ebextensions scripts for things a raw EC2 setup would have let them configure directly.
No Budget Alarms or Cost Monitoring Set Up
Because AWS bills are usage-based, a traffic spike, a runaway script, or an accidentally public S3 bucket can produce a surprise bill โ unless you’ve proactively set up AWS Budgets or CloudWatch billing alarms. It’s one of the most repeated pieces of advice from AWS users who’ve been caught off guard, and it costs nothing to set up.
Treating Lightsail Like It Scales the Way EC2 Does
Because Lightsail runs on EC2 underneath, it’s easy to assume it inherits EC2’s scaling story. It doesn’t โ there’s no native Auto Scaling Group for a Lightsail instance. Sites expecting it to absorb a traffic spike will just run out of capacity, same as an underpowered traditional VPS.
Letting Elastic Beanstalk Delete a Database It Created
When Beanstalk provisions an RDS database as part of an environment, that database’s lifecycle is tied to the environment by default. Terminating the environment can delete the database with it unless you explicitly decouple it first โ a real, unrecoverable-data-loss mistake for teams who didn’t realize the coupling existed.
11. Cost Breakdown by Site/App Type
These are illustrative monthly ranges based on the pricing structures above, not vendor-quoted totals โ actual costs depend heavily on region, traffic, architecture choices, and whether you’re on-demand or using a Savings Plan. Where a range is wide, that’s honest: usage-based pricing doesn’t collapse to one number.
| Site/App Type | EC2 (est.) | Lightsail (est.) | Elastic Beanstalk (est.) |
|---|---|---|---|
| Small brochure/portfolio site | $10โ25/mo | $5โ12/mo | $10โ25/mo in the console’s default single-instance mode; $50โ90/mo if you opt into the “High availability” preset with a load balancer |
| Mid-traffic WooCommerce/ecommerce | $60โ150/mo (w/ RDS + storage) | $30โ60/mo (instance + managed DB add-on) | $100โ200/mo (EC2 + ALB + RDS) |
| Bursty/seasonal app (needs autoscaling) | $100โ400+/mo, scales with traffic | Not well suited โ no native autoscaling | $120โ450+/mo, scales with traffic |
12. Which One Should You Choose?
Choose EC2 If:
- You have the systems administration skill to configure and secure a server from scratch
- You need precise control over instance type, networking, and architecture
- Your workload is stable enough to benefit from Reserved Instance or Savings Plan discounts
- You’re building a custom architecture Lightsail or Beanstalk’s assumptions don’t fit
Choose Lightsail If:
- You want AWS’s infrastructure with predictable, bundled flat-rate pricing
- You’re comfortable with a bounded, non-autoscaling workload
- You want a guided, blueprint-based launch rather than a blank Linux box
- You’re testing whether AWS is right for you before committing to raw EC2
Choose Elastic Beanstalk If:
- You have a custom app in a supported runtime and want to deploy code, not manage servers
- You want autoscaling and load balancing configured for you with one preset, instead of building it by hand
- Your app fits Beanstalk’s platform assumptions without extensive
.ebextensionscustomization - You’re comfortable adding a load balancer to your baseline monthly cost once you pick the “High availability” preset over the console’s cheaper single-instance default
Choose Traditional Managed Hosting Instead If:
- You’re running WordPress, WooCommerce, or another standard CMS with fairly predictable traffic
- You want server administration, patching, and backups bundled into one flat price
- You don’t have dedicated engineering capacity to own an AWS account on an ongoing basis
- Budget predictability matters more to you than elastic, usage-based scaling
It’s common โ and often smart โ to run the bulk of a site on traditional managed or VPS hosting while offloading specific pieces to AWS: static assets and images through S3 and CloudFront, for instance, while the CMS itself runs elsewhere. You don’t have to choose an all-or-nothing AWS strategy just because part of your stack benefits from an AWS-native service.
The Honest Summary
| Category | Winner | Runner-Up | Note |
|---|---|---|---|
| Pricing Predictability | ๐ Lightsail | Elastic Beanstalk (single-instance mode) | Flat bundles vs. fully metered usage |
| Raw Flexibility & Control | ๐ EC2 | Elastic Beanstalk | Nothing is hidden from you on EC2 |
| Time-to-Launch | ๐ Lightsail | Elastic Beanstalk | Blueprint vs. blank Linux box |
| Automatic Scaling | ๐ Elastic Beanstalk | EC2 (with an ASG built by hand) | Lightsail has none natively |
| Cheapest at Small Scale | ๐ Lightsail | EC2 | Beanstalk’s optional load-balanced preset adds cost if you pick it |
| Best for Custom Applications | ๐ EC2 / Elastic Beanstalk | โ | Depends on how much control you want |
| Lowest Ops Burden | ๐ Elastic Beanstalk | Lightsail | EC2 leaves everything to you |
| Best vs. Traditional Managed Hosting | ๐ Managed Hosting | Lightsail | For a typical WordPress/ecommerce site |
The Right AWS Service Is the
One That Matches Your Workload.
EC2 gives you total control over Amazon’s infrastructure, and total responsibility with it. It’s the right call when you have the operational capacity to run it and a workload specific enough to need that control.
Lightsail is the friendliest on-ramp to AWS โ predictable pricing, a guided setup, none of the console overwhelm โ as long as traffic stays within a plan’s bounds. Elastic Beanstalk automates the parts of EC2 most people find tedious, at the cost of a load balancer’s worth of baseline spend and an abstraction that can fight back when your app doesn’t fit its assumptions.
For most standard sites and stores, though, none of the three beats a good traditional managed host on total cost or effort. AWS earns its complexity when traffic is genuinely variable, the architecture is genuinely custom, or you already have the capacity to own it โ not by default, just because it’s AWS.
Need real elasticity or AWS-native services: EC2 or Beanstalk. Want AWS without the operational weight: Lightsail. Running a standard site: a traditional host is usually the simpler, cheaper answer.