The AWS App Runner alternatives to evaluate are Vercel for HTTP applications deployed with their frontends, Amazon ECS Express Mode for infrastructure in your AWS account, Google Cloud Run for applications moving to Google Cloud, and Render for an application split into web services and workers. Choose by deployment workflow and dependency access.
Copy link to headingDo you need to leave App Runner now?
AWS App Runner is closed to new customers. Existing customers can continue using it and creating resources. AWS continues security and availability investment but plans no new features. The change establishes no shutdown deadline.
For an existing application, use the time to test a replacement against real dependencies before setting a cutover date. For a new project, select a destination based on the application you intend to operate. Reproducing an App Runner setup is useful only where those choices still serve the project.
Copy link to headingWhich alternative fits your deployment requirements?
Start with the requirements that would invalidate a successful container build. An application that starts but cannot reach its database has not passed a migration test.
A frontend and an internal API may have different migration constraints even when they share a repository. Identify those differences before choosing whether to move them together.
Copy link to headingWhen should you evaluate ECS Express Mode?
Amazon ECS Express Mode runs public or private HTTPS container applications on Fargate. It configures the load balancer and TLS, plus autoscaling, monitoring, and networking. The resources remain in your AWS account, which makes it a relevant candidate when your team needs to inspect or manage that infrastructure directly.
AWS recommends Express Mode for App Runner migrations. If App Runner currently builds your application from source, the move requires an image-build pipeline. Include that pipeline in the evaluation, with responsibility for publishing each release image and deploying the intended version.
Direct resource access also requires an operating decision. Changes made outside Express Mode can affect its management of the service. Agree on which settings the application team can change through Express Mode and which infrastructure changes need coordination. Keeping the resources in the same account does not remove that responsibility.
Copy link to headingHow do HTTP applications and workers fit on Vercel?
Vercel Container Runtime is in Beta. It builds a Dockerfile or Containerfile into a Function, so your application must run an HTTP server and meet Function limits. A root Dockerfile selects Container when no other framework is detected. Otherwise, select Container explicitly.
This gives a team with an existing Docker application a concrete evaluation path. Deploy a representative route and exercise the work that happens during a request, including dependency calls. Local memory and files are not durable storage, so keep data that must survive the instance in an external store.
For a frontend and API that should ship together, Vercel Services, also in Beta, places multiple frontends and backends in one project deployment. Rewrites expose public routes, and bindings give callers private HTTP target URLs. Map the API calls your frontend makes before deciding which routes need public exposure.
Continuous pull workers have a separate deployment model. Vercel Daemons, in Public Beta, build Dockerfiles, maintain configured instance counts, and restart processes that exit or crash. Services and Daemons can coexist. The Daemons beta limits include production-only deployment, no autoscaling, no inbound HTTP or TCP, and no persistent local storage. Test workers locally with Docker and decide how you will adjust capacity as queue demand changes.
Copy link to headingWhen do Cloud Run or Render fit?
Google Cloud Run services handle HTTP requests. Jobs execute tasks to completion, and worker pools handle continuous background work. For an App Runner application moving to Google Cloud, identify which work belongs in the HTTP service and which needs a separate execution model. Include access to any retained AWS resources in the initial test so a change of cloud does not hide a dependency migration.
Render has public web services and internal private services, plus continuous background workers and cron jobs. Workers and cron services do not receive inbound traffic. That separation suits evaluation of an API with companion processes. If your release process already produces an image, a Render deploy hook can trigger deployment of an image-backed service.
For applications that need a mounted filesystem, Render supports persistent disks on eligible paid web, private, and worker services. A disk belongs to one instance, cannot be shared across services, and prevents horizontal scaling of the attached service. Check whether the filesystem requirement is compatible with that instance model before choosing it over external storage.
Copy link to headingWhat does a Dockerfile leave behind?
A compatible Dockerfile packages the application. It does not transfer IAM permissions, private networking, database contents, or platform configuration. Use the existing App Runner service as an inventory of what the replacement needs.
Separate image retrieval from application access. An App Runner access role retrieves private ECR images, while an instance role grants the running application access to AWS APIs. Record both responsibilities and test them separately at the destination. A deployment that can fetch an image has not demonstrated that application requests have the permissions they need.
Network reachability needs its own check. An App Runner VPC connector controls outbound application connections. It does not change inbound traffic or managed image pulls. Identify each private endpoint your app calls and establish the destination's connection path before moving traffic.
On Vercel, OIDC can provide scoped AWS access, but credentials do not establish a network route. Secure Compute and Static IPs are unsupported for custom container images. Validate private-dependency requirements against that constraint. Vercel's general AWS migration guide covers access and cutover planning; use it alongside your App Runner configuration inventory.
Finish the evaluation with a release rehearsal. Build from the intended source revision, run representative requests against the required dependencies, and check where writes land. Record how you would return traffic to the existing application. Database contents require a separate retention or migration decision, even when the application image stays unchanged.
Copy link to headingFrequently asked questions
Copy link to headingIs AWS App Runner shutting down?
No. AWS has closed App Runner to new customers, while existing customers can keep using the service and create resources. AWS plans no new features but continues security and availability investment; the announcement provides no shutdown deadline.
Copy link to headingIs ECS Express Mode a separate hosting provider from AWS?
No. ECS Express Mode provisions an Amazon ECS application on Fargate within your AWS account. You retain access to the underlying resources, with responsibility for understanding how direct changes interact with Express Mode management.
Copy link to headingCan I move a source-based App Runner app to ECS Express Mode?
Yes, after adding container-image creation to your release process. Express Mode needs an image, so a source-based App Runner application needs a pipeline that builds and publishes one before deployment.
Copy link to headingCan I keep AWS dependencies when moving the application to Vercel?
You can retain an AWS dependency when the Vercel application has both permission to use it and a supported network path to it. Vercel OIDC supports scoped AWS access. Test connectivity separately, especially for private endpoints.
Copy link to headingDoes permission to pull an ECR image give the app AWS API access?
No. App Runner uses the access role for private ECR image retrieval and the instance role for AWS API calls from application code. Map those permissions separately when configuring the replacement.
Copy link to headingCan I use my default App Runner URL while shifting traffic?
The default App Runner service URL cannot act as a shared hostname for traffic shifting to the replacement. A custom domain can move between the services. Decide on the client-facing hostname before planning the transition.