Amplify list queries use DynamoDB scans, and DynamoDB applies filters after reading up to 1 MB, so a filtered page costs a full read and can return almost nothing. When the data is relational, Postgres is the better home. How to export, transform, keep the two in sync and switch.
Amplify's data docs say the list operation uses DynamoDB scan operations. DynamoDB's docs explain the consequence: a Scan reads up to 1 MB, then applies the filter, and Limit counts items before the filter. Read capacity is charged for everything read, matching or not.
So a screen that lists "my open orders" from a large table reads pages of other people's orders, keeps the few that match, and returns a nextToken for the client to try again. It works at launch. It gets slower and more expensive every month after.
Book a free 30-minute call. You'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.
Turn on point-in-time recovery and export each table to S3. Exports don't consume read capacity or affect the live table.
Write the transform as code and run it against the export: types, relationships Amplify stored as id fields, timestamps, and soft-deleted rows.
Load Postgres, then keep it current: replay DynamoDB Streams from the export time, or run incremental exports on a schedule if a few minutes of lag is acceptable during the overlap.
Compare counts and checksums per entity every day of the overlap. A migration is done when the numbers match without anyone looking.
Switch reads, then writes, screen by screen. Keep the stream running in reverse only if something still reads DynamoDB.
Once a month: what changed in tech that month and what it means for you, from cloud and AI to security and the tools you build with. Every item links to its source. No sales pitch, unsubscribe in one click.
Book a free 30-minute call about it. Bring your setup and your bill; you'll leave knowing what we'd do first and roughly what it costs, whether or not you hire us.
Or keep reading
Leaving AWS Amplify and AppSync: When It Is Time, and How to Do It Without a Rewrite
Amplify gets a startup to launch fast. The trouble starts later: list queries that scan, resolvers that can't throw or call out, a 30-second ceiling, and a data model that was never designed. The signs it is time to leave, what to move to, what to keep, and a cutover that doesn't log anyone out.
Read
Cutting Over From AppSync to Your Own API Without Downtime (and Without Logging Anyone Out)
Keep the Cognito user pool, verify the same tokens in the new API, move one screen at a time behind a flag, and keep AppSync alive until old mobile app versions are gone. The order that avoids a big-bang release, and the checks that tell you it is safe to switch off the old backend.
Read
As of November 2, 2026. Provided as is, for general information, and accurate to the best of our knowledge on the date shown. Not legal, compliance, tax, financial or other professional advice. Prices, limits and vendor services change; check current vendor documentation before relying on anything here. Terms of use.