
AWS App Runner was the closest thing AWS had to "here is a container, give me a URL". AWS has now closed it to new customers, and points them to Amazon ECS Express Mode. We read the notice, the Express Mode docs and the price pages to see what the move changes for one small app.
Short version: the deploy command stays short, but the bill changes shape. App Runner charges memory only while an instance waits. Express Mode keeps a Fargate task and a load balancer running all the time. For an app with 1 vCPU and 2 GB, busy 8 hours a day, we get $25.44 a month on App Runner and $63.12 on Express Mode. Built-in deploys from source are gone too: Express Mode takes only an image.
What AWS says, and the date
| Question | AWS's notice, as read on 3 Nov 2026 |
|---|---|
| New customers? | "We decided to close AWS App Runner to new customers" |
| Existing customers? | Continue as normal, "including creating new resources and services" |
| Maintenance? | AWS "continues to invest in security and availability" but does "not plan to introduce new features" |
| Shutdown date? | None given |
| Where to go? | AWS recommends exploring ECS Express Mode, and the notice carries a migration guide |
On the date: reports give 30 April 2026 as the cutoff, and a search-engine copy of AWS's own page read "starting April 30, 2026". The page we can read today no longer prints a date; it just says the service is closed. The Internet Archive's first capture of the page is from 1 April 2026, so the notice came at least a few weeks ahead. If you hold an account that used App Runner before the cutoff, you can still create services. If not, this article is about your alternatives.
What a deploy takes, before and after
| App Runner | ECS Express Mode | |
|---|---|---|
| You provide | A container image, or a source repository | A container image and two IAM roles |
| Deploy from source | Built in: connect a repository, build fee $0.005 a build-minute | Not offered. AWS's guide: add a Dockerfile, a registry and a GitHub Actions workflow |
| Auto deploy on push | Built in: $1 per application a month | From your own CI, with an OIDC role and five variables in AWS's example |
| What appears in your account | An App Runner service | Cluster, task definition, service, load balancer with listener rules and target groups, security groups, three service-linked roles, scaling target and policy, log group, deployment alarm, ACM certificate |
| Provisioning | A service in the App Runner console or API | "Typically takes 3-5 minutes" (AWS's migration guide) |
| Defaults | Set per service | 1 vCPU, 2 GB, x86, minimum 1 task, maximum 20, scale at 60% CPU |
| While no one is calling | Pays memory only: CPU isn't billed for an idle provisioned instance | Pays the whole task and the load balancer; 1 is the default minimum |
| URL | Service URL, custom domain | `name.ecs.region.on.aws` with TLS, custom domain through the load balancer |
The command itself is hardly longer. This is the minimal form from AWS's tutorial:
In return you get things App Runner never had: all the resources are ordinary ECS, ALB and IAM pieces you can change, with canary deployments and rollback alarms by default. The price of that is that they are yours to understand when something fails. For a team already on AWS that's a fair trade. For someone who picked App Runner so as not to learn ECS, it's the part that was lost.
A worked monthly cost for one small app
Prices are from the App Runner, Fargate, load balancer, VPC and Cloud Run pages, in us-east-1 and Iowa, for a 30-day month (720 hours), the way AWS's own examples count. The app is busy 8 hours a day, one instance at a time.
| Item | Rate | 1 vCPU, 2 GB | 0.25 vCPU, 0.5 GB |
|---|---|---|---|
| App Runner, memory all month | $0.007 per GB-hour | $10.08 | $2.52 |
| App Runner, vCPU while active (240 h) | $0.064 per vCPU-hour | $15.36 | $3.84 |
| App Runner total | $25.44 | $6.36 | |
| Express Mode, Fargate x86, all month | $0.04048 per vCPU-hour, $0.004446 per GB-hour | $35.55 | $8.89 |
| Task's public IPv4 | $0.005 an hour | $3.60 | $3.60 |
| Load balancer hours | $0.0225 an hour | $16.20 | $16.20 |
| Load balancer usage, 0.1 LCU on average | $0.008 per LCU-hour | $0.58 | $0.58 |
| Load balancer public IPv4, two zones | $0.005 an hour each | $7.20 | $7.20 |
| Express Mode total | $63.12 | $36.46 | |
| Cloud Run, request-based, 240 active hours | $0.000024 per vCPU-second, $0.0000025 per GiB-second, 180,000 and 360,000 free | $19.84 | $1.04 |
Not counted: data transfer, logs, image storage, and requests on Cloud Run ($0.40 per million after 2 million free). The 0.1 LCU is our assumption for a small app; a load balancer in more than two zones costs another $3.60 per zone. Moving to Graviton (--cpu-architecture ARM64) takes the Fargate line for 1 vCPU and 2 GB from $35.55 to $28.44.
Most of the gap on a small task is the load balancer: $23.98 a month whatever the task size. Up to 25 Express Mode services can share one, and that changes the picture:
| Express Mode, 1 vCPU and 2 GB | Monthly cost per app |
|---|---|
| 1 app, own load balancer | $63.12 |
| 5 apps sharing | $44.40 |
| 25 apps sharing | $40.66 |
| App Runner busy 8 h a day, for comparison | $25.44 |
| App Runner busy 24 h a day, for comparison | $56.16 |
So the line crosses only for busy apps at scale: with 25 apps sharing a load balancer, Express Mode gets cheaper than App Runner once each app is active for more than about 16 hours a day. With one app it never does; App Runner busy all day comes to $56.16.
Where its users can go
| If you valued | Look at | What you give up |
|---|---|---|
| Staying on AWS, with the same image | ECS Express Mode | Idle pricing: from $25.44 to $63.12 in our example |
| Staying on AWS and paying for use | Lambda with a container image | A request-shaped app model, and a 15-minute limit |
| Paying little while idle, same image | Cloud Run with request-based billing | Another cloud and a cold start; $19.84 in our example |
| Deploy from source, no pipeline to own | A platform that builds for you | AWS integration such as VPC access and IAM roles |
| Staying where you are | App Runner, if you're an existing customer | New features; AWS gives no end date |
Our reading: if you run on App Runner today, there's no date forcing a move, and the notice says you can even add services. We would not start anything new on it, and we would make sure the app already builds as a plain image, because that is the one piece every option above accepts. If you deploy from source now, that Dockerfile is your first job, and a good .dockerignore is the second. For how the bills compare as traffic grows, see scale to zero, worked out.
Sources (read 3 Nov 2026): AWS App Runner availability change; App Runner pricing; Amazon ECS Express Mode, its resources and defaults and CLI tutorial; Fargate, Elastic Load Balancing and VPC pricing; Cloud Run pricing. Monthly totals are our own arithmetic.
On systemi you deploy from a zip or an https git URL and a branch; we build the container, and an app that gets no traffic sleeps and wakes on the next request.
See how deploys work

