heroku to aws · who pays, who files, how to move · checked oct 10, 2026

Can AWS pay for your Heroku to AWS migration?

Partly. AWS does not pay your Heroku bill, but it can fund the AWS side of a Heroku to AWS migration through MAP (Migration Acceleration Program). An AWS partner files the request and AWS decides. For startups, CloudRoute's partner records show $50K to $150K, depending on the workload. Small apps may not qualify; Activate credits are the do-it-yourself fallback.

who files MAP
your AWS partner
startup range, partner records
$50K to $150K
CloudRoute fee for startups
$0
TL;DR
  • AWS funding for a Heroku exit comes through MAP. Your AWS partner files it and AWS decides. It can cover the overlap while both platforms run, the partner's work and your AWS usage, never Heroku invoices or your team's time. Only AWS resources launched after the MAP agreement is accepted count, so sort out funding first.
  • Heroku moved to a "sustaining engineering" model on February 6, 2026. Existing plans keep running and no end date was given, so this is a reason to plan, not to panic.
  • The database is the hard part. On classic Heroku Postgres plans, Heroku does not grant the replication role, so AWS DMS cannot stream changes out. Plan a dump and restore, or a DMS full load, inside a maintenance window. Heroku Postgres Advanced is the exception: it supports managed logical replication to an external database.
  • App Runner is closed to new customers. For a Heroku-like start, AWS points to Amazon ECS Express Mode: one container image in, ECS on Fargate with a load balancer and auto scaling out.
the short answer

ICan AWS pay for a Heroku to AWS migration?

Yes, for the AWS side of the move, when the migration qualifies. The program is the AWS Migration Acceleration Program (MAP), and an AWS partner files it.

The MAP user guide says the program includes "financial investment to help manage migration double bubble costs". Double bubble is the stretch when you pay Heroku and AWS at the same time. The AWS partner funding page says MAP funds support "migrations or modernizations of any size or workload to AWS", and that partners can receive cash or AWS promotional credits for the work.

For startups, CloudRoute's partner records show $50K to $150K in partner-filed funding. Depends on the workload; AWS approves. AWS itself publishes no MAP amounts. Compare that with AWS Activate Founders, which a startup with no investor can apply for alone: $1,000 to start, up to $5,000 in credits.

What the money can and cannot cover:

  • Can cover: the weeks or months you run Heroku and AWS side by side, the partner's migration work, and your AWS usage through credits on your AWS bill.
  • Cannot cover: your Heroku invoices, add-on vendors billed by Heroku, or your own engineers' time. AWS credits only offset AWS charges.
  • Also excluded: AWS promotional credits do not pay Savings Plans or Reserved Instance upfront fees. (Source: AWS promotional credit terms.)

Full details on phases, tagging and eligibility are in the AWS MAP guide.

who does what

IIWho files the funding, and who applies for what?

A partner files MAP, POC and IW funding. The founder applies for AWS Activate. CloudRoute files nothing; it matches you with the partner.

A Heroku app is not on AWS yet, so MAP fits the move. A test of something new, such as an AI feature, can fit proof of concept (POC) funding. Once you run on AWS, new work there can fit incremental workload (IW) funding. A partner files each one and AWS decides. AWS Activate is the founder's own application; no consulting partner can file it for you.

Who files it: AWS funding for a startup leaving Heroku
FundingWho files itAmountWhen it fits
Migration Acceleration Program (MAP)Your matched AWS partner$50K to $150K for startups. Depends on the workload; AWS approves.You are not on AWS yet and want to migrate.
Proof of concept (POC) fundingYour matched AWS partner$50K to $150K for startups. Depends on the workload; AWS approves.You want to test something, whether or not you are on AWS today.
Incremental workload (IW) fundingYour matched AWS partner$50K to $150K for startups. Depends on the workload; AWS approves.You are already on AWS and are launching new work: a new AI feature, a new customer or a new contract.
AWS Activate FoundersFounder applies$1,000 to start, up to $5,000Self-funded startups with no investor or accelerator behind them.
AWS Activate PortfolioFounder appliesup to $200,000Startups backed by a VC firm, accelerator or angel investor that is an AWS Activate Provider.
AWS Credits for AI StartupsInvite only (AWS account manager)$200,000 or more, by invitationAI startups ready to scale after Activate Portfolio, invited by AWS.
Facts checked on October 10, 2026. AWS decides every application.
eligibility

IIIWill a Heroku app qualify for MAP?

AWS publishes no minimum size. It does publish rules that decide many Heroku cases, and the first one changes the order of your project.

  • Funding first, then build: AWS's MAP FAQ says only resources launched after the MAP agreement acceptance date are eligible. If you build your production stack on AWS first and ask about funding later, those resources do not count.
  • It has to be a real move: MAP is for production workloads leaving another platform. A side project with one small dyno is unlikely to be worth a MAP request.
  • One payer account: The FAQ says the migration runs under the management (payer) account in the MAP plan, or accounts linked to it.
  • Everything gets tagged: Migrated resources carry the tag key map-migrated, exactly as written. AWS uses it to track what belongs to the migration.
  • A partner scopes it: The partner files a scoped plan and AWS decides. Ask the partner to tell you whether the move qualifies before any paid work starts.

If your app is small and does not qualify, nothing is lost. The do-it-yourself path in section VIII costs nothing but time.

the trigger

IVWhy are teams moving off Heroku in 2026?

Three reasons come up: Heroku's new status, the platform limits, and the price of compute as you grow.

Heroku's status. On February 6, 2026, Heroku announced it is "transitioning to a sustaining engineering model focused on stability, security, reliability, and support", rather than new features. Heroku gave no end date and calls itself an actively supported platform. That is a reason to plan a move on your own schedule, not a reason to rush one.

Platform limits. Heroku's router ends any request that takes longer than 30 seconds, and Heroku says that timeout is not configurable. Dynos restart at least once a day: every 24 hours plus up to 216 random minutes. Heroku Postgres plans cap connections, for example 200 on Standard-0 and 500 on Standard-2 and up (Heroku Postgres plans).

Compute price. On Heroku's pricing page, a Standard-2X dyno with 1 GB of memory is $50 a month. On AWS Fargate, one task with 0.5 vCPU and 1 GB running all month (730 hours, Linux, us-east-1, list price) is about $18. That is not the whole bill: AWS adds a load balancer at $0.0225 an hour (about $16 a month, ELB pricing) plus usage charges, the database, cache, logs and data transfer. Run your own numbers in the AWS Pricing Calculator before you decide on cost alone.

the service map

VWhere does each Heroku piece land on AWS?

Most pieces map one to one. Two need real design work: the Salesforce sync (Heroku Connect) and the database move.

Compute. Web and worker dynos become containers on Amazon ECS with AWS Fargate. AWS App Runner, once the closest thing to Heroku on AWS, is closed to new customers. AWS now recommends Amazon ECS Express Mode: you give it a container image and two IAM roles, and it sets up an ECS service on Fargate, an Application Load Balancer, auto scaling and networking, with no extra charge beyond the resources it creates. AWS Elastic Beanstalk is another managed option.

Buildpacks and the Procfile. AWS does not run Heroku buildpacks, so each app gets a Dockerfile. Each Procfile process type becomes its own ECS service (web, worker) or a one-off task (the release phase that runs database migrations).

Heroku to AWS: where each piece lands
HerokuAWSWhat changes
Web dynosAmazon ECS on Fargate behind an Application Load Balancer (ECS Express Mode sets this up), or Elastic BeanstalkBuildpack becomes a Dockerfile
Worker dynosA separate ECS serviceEach process type becomes its own service or task
Release phaseA one-off ECS task or a CI stepRun migrations before new code takes traffic
Heroku PostgresAmazon RDS for PostgreSQL or Aurora PostgreSQLNew connection string; data moves in a maintenance window (section VI)
Heroku Key-Value StoreAmazon ElastiCache (Valkey or Redis OSS)New connection string; same protocol
Heroku SchedulerAmazon EventBridge SchedulerRecreate each job by hand
Config varsAWS Secrets Manager and Systems Manager Parameter StoreSecrets go to Secrets Manager, plain settings to Parameter Store; ECS passes both in as environment variables, so code does not change
Pipelines and review appsCodePipeline and CodeBuild, or GitHub Actions pushing to ECR and ECSRebuild the deploy flow
Log drains and metricsAmazon CloudWatch Logs and Container InsightsPoint logs at the new sink
Custom domains and SSLAmazon Route 53 and AWS Certificate ManagerNew DNS records and certificates
Heroku ConnectNo direct equivalentPlan the Salesforce sync as its own piece of work
Service names checked against AWS and Heroku documentation on October 10, 2026.
the risky part

VIHow do you move Heroku Postgres to AWS without losing data?

On classic Heroku Postgres plans, in a planned maintenance window: streaming changes out is not available there, whatever older guides say. Heroku Postgres Advanced is the exception.

Heroku's help center is direct about classic plans. Tools such as Amazon DMS "may require SUPERUSER or REPLICATION roles", Heroku Postgres does not give customers those roles, and so it is "not possible" to use them to replicate a Heroku Postgres database to a non-Heroku database (Heroku help article). The AWS DMS documentation matches: a full-load-only task needs no extra setup, but ongoing change capture (CDC) needs superuser rights on the source.

So you have two ways to copy the data, both inside a window where the app does not write: a DMS full-load task, or a dump and restore. Heroku's import and export guide uses heroku pg:backups:capture and heroku pg:backups:download, then pg_restore into the new database. Heroku says PGBackups is meant for moderately loaded databases up to 20 GB and points larger ones to its logical backups guide.

On Heroku Postgres Advanced, Heroku documents managed logical replication to an external Postgres database. That can keep an RDS or Aurora copy in sync until cutover, which shortens the window. Read the limits first: the schema does not replicate (create it on AWS before you subscribe), schema changes do not stream, and sequence values must be advanced with setval() before you cut over. Heroku's Advanced plan page marks this feature as not supported on classic plans.

How to keep the window short and safe:

  • Rehearse: restore a recent backup into RDS or Aurora and time it. That time, plus checks, is your window.
  • Check extensions and versions: match the Postgres major version and the extensions you use. Heroku says restore errors about the heroku_ext schema go away if you create that schema first.
  • Lower DNS TTL early: so the switch and any rollback take effect quickly.
  • Stop writes: turn on Heroku maintenance mode, scale workers to zero and turn off scheduled jobs before the final backup.
  • Copy, point, verify: take the final backup, restore it, point the app's database secret at RDS, then test reads and writes before you open traffic.
  • Keep a way back: leave the Heroku database untouched until you are sure. Once AWS takes new writes, going back means copying those writes too, so decide your rollback point in advance.
the runbook

VIIWhat are the steps, start to finish?

The order matters more than the speed. Funding comes before building, and the database comes last.

  • 1. Inventory: list every app, dyno type, process type, add-on, config var and scheduled job, plus the database size, Postgres version and extensions.
  • 2. Settle funding: if a partner thinks the move qualifies for MAP, let it file before you launch production resources on AWS. Only resources launched after the agreement count.
  • 3. Set up the accounts: the payer account, a network (VPC), access roles (IAM) and a container registry (ECR).
  • 4. Containerize: write the Dockerfile, map each Procfile process to a service or task, and build in CI.
  • 5. Provision data and secrets: RDS or Aurora, ElastiCache, Secrets Manager and Parameter Store. Tag every migrated resource map-migrated as it launches.
  • 6. Test and rehearse: restore a recent backup, run the app, workers and scheduled jobs against it with no public traffic, and time the restore.
  • 7. Cut over: maintenance mode, final backup, restore, switch secrets and DNS, verify, open traffic.
  • 8. Turn Heroku off: after your rollback period, cancel the dynos and add-ons. Paying both bills longer than planned eats the savings.
the do-it-yourself path

VIIICan you do it yourself, without a partner?

Yes. Many teams with a small app should. Here is the free path, and when a partner is worth it.

  • Plan with AWS Startup Advisor: AWS's startup migration page offers a planner that maps Heroku dynos, Postgres and add-ons to AWS services, with cost estimates and credit eligibility. Heroku plans run in its IDE plugin for Kiro, Claude Code or Cursor.
  • Apply for Activate yourself: Activate Founders is $1,000 to start, up to $5,000, self-serve. If a VC, accelerator or angel group that is an Activate Provider backs you, use its Org ID for Activate Portfolio (up to $200,000). No partner needed.
  • Ask AWS about MAP: The MAP page has a button to talk with a Migration and Modernization specialist. Ask whether your move fits MAP and who would file it.

A partner is worth it when you want MAP funding (a partner files it), when nobody on the team has run AWS in production, when Heroku Connect or compliance work is in scope, or when the database is too large for a simple dump and restore.

CloudRoute matches you with one vetted AWS partner that fits your stack and region, for free. We reply within 24 hours; your matched partner reaches out within 5 business days. To compare partners yourself, see how to find an AWS partner.

leaving heroku?
Get matched with a vetted AWS partner who files MAP when your move qualifies
Get matched free with a vetted AWS partner who can file it
how a match works

How a match works (example)

  1. You tell us about the work

    You fill in a short form: what you run today, what you want to move, test or build, your stage and your region.

  2. We pick one partner

    We read your answers and pick one vetted AWS consulting partner that fits the work, the stack and the region. We reply within 24 hours; your matched partner reaches out within 5 business days.

  3. The partner checks MAP funding

    Your matched partner scopes the migration with you. Then it checks whether the move qualifies for MAP (Migration Acceleration Program) funding. MAP is for teams that are not on AWS yet.

  4. The partner files, AWS decides

    If the work qualifies, the partner files the funding request with AWS. AWS reviews it and decides. The amount depends on the workload.

  5. You pay nothing

    CloudRoute is free for startups. Partners pay CloudRoute a monthly membership plus 10% of AWS-approved funding.

AWS Activate credits are separate, and you apply for them yourself. Use Activate Founders if no investor backs you. Use Activate Portfolio with the Org ID or invite from your VC, accelerator, incubator or angel group if it is an Activate Provider. A consulting partner cannot apply for Activate on your behalf.

faq

Common questions

Can AWS pay for a Heroku to AWS migration?
Partly. AWS does not pay Heroku, but MAP (the Migration Acceleration Program) can fund the AWS side: the overlap while both platforms run, the partner's work and your AWS usage. An AWS partner files it and AWS decides. For startups, CloudRoute's partner records show $50K to $150K. Depends on the workload; AWS approves.
Can AWS credits pay my Heroku bill?
No. AWS credits only offset AWS charges. They do not pay Heroku, Heroku add-on vendors or your team's time. AWS promotional credits do not pay Savings Plans or Reserved Instance upfront fees.
Should I build on AWS first and ask about MAP later?
No. AWS's MAP FAQ says only resources launched after the MAP agreement acceptance date are eligible. Ask a partner about MAP before you launch production resources on AWS.
Can I use AWS DMS to replicate Heroku Postgres with no downtime?
Not on classic plans. Heroku does not give customers the superuser or replication roles, and Heroku says tools such as Amazon DMS therefore cannot replicate Heroku Postgres to a non-Heroku database. Use a DMS full-load task or a pg_dump and pg_restore inside a maintenance window. Heroku Postgres Advanced is different: Heroku documents managed logical replication to an external Postgres database, with limits on schema changes and sequences.
Should I move to AWS App Runner?
Not as a new customer. AWS closed App Runner to new customers and recommends Amazon ECS Express Mode, which sets up ECS on Fargate, an Application Load Balancer, auto scaling and networking from one container image.
Does Heroku run on AWS?
Yes, underneath. Heroku's security policy says its physical infrastructure is hosted and managed in Amazon's data centers. That does not make your app an AWS workload: Heroku bills you, not AWS, so AWS credits and MAP funding only apply once the app runs in an AWS account you own. That move is the Heroku to AWS migration this page covers.
Is Heroku shutting down?
Heroku has not announced an end date. On February 6, 2026 it moved to a sustaining engineering model focused on stability, security, reliability and support, with no new features. Credit card customers keep their current pricing and billing.
Is CloudRoute a middleman? Why is it free?
CloudRoute is a free referral service. It matches you with one vetted AWS partner; it does not file funding itself. Startups pay nothing. Partners pay CloudRoute a monthly membership plus 10% of AWS-approved funding.

Find out if your Heroku move qualifies for MAP

Tell us what you run on Heroku and what you want on AWS. We reply within 24 hours; your matched partner reaches out within 5 business days. If the move qualifies, the partner files MAP and AWS decides.