Skip to content
0%

AWS Managed Blockchain alternative: how to migrate AMB Access and AMB Query to Alchemy

Uttam Singh headshot

Written by Uttam Singh

Published on October 16, 202612 min read

Migrate from AMB Access and AMB Query to Alchemy title card

Amazon Web Services is ending Amazon Managed Blockchain (AMB), its managed blockchain service. Existing customers can keep using it until September 29, 2027, and after that date AMB Access and AMB Query stop responding. If you run AMB Access on Ethereum, Bitcoin, or Polygon, switching to Alchemy is an endpoint change. Your JSON-RPC calls stay the same, and an API key replaces SigV4 request signing or AMB Accessor tokens.

AMB Query takes more than a URL change, because it is an indexed data API rather than a node. Our Data APIs cover the same Ethereum reads (balances, transfers, token and NFT metadata), and our UTXO API covers Bitcoin addresses, balances, and transactions. This guide covers both paths: getting an endpoint, handing the code changes to a coding agent, replacing SigV4, mapping each AMB Query operation, checking that the new endpoint returns the same data, and how billing compares.

When does AWS Managed Blockchain shut down?

Per AWS's Amazon Managed Blockchain end-of-support notice, existing customers lose access to every AMB product after September 29, 2027. That covers five services:

  • AMB Access Ethereum. Dedicated full nodes on Ethereum Mainnet, with JSON-RPC over HTTP and WebSocket, plus the Consensus API.
  • AMB Access Bitcoin. Shared Bitcoin Mainnet and Testnet endpoints.
  • AMB Access Polygon. A shared Polygon Mainnet endpoint.
  • AMB Query. An indexed API for balances, transactions, and token data on Ethereum (Mainnet and Sepolia) and Bitcoin (Mainnet and Testnet).
  • AMB Access Hyperledger Fabric. Private, permissioned networks.

We already support every public chain on that list, Ethereum, Bitcoin, and Polygon, along with more than 100 other chains on the same API key. Hyperledger Fabric runs private ledgers rather than a public chain, so it falls outside this guide, and AWS's notice lists the options for it.

AWS's node and RPC migration guide names Alchemy as a third-party provider for AMB Access Ethereum, Bitcoin, and Polygon. Once all your traffic runs on Alchemy, delete your AMB Ethereum nodes, your Accessor tokens, and the IAM permissions that grant AMB access. AWS bills AMB Ethereum nodes per second until you delete them.

How do you switch AMB Access to a new RPC provider?

AWS is shutting down Amazon Managed Blockchain, and Alchemy offers hands-on migration support

Sign up in the Alchemy dashboard, create an app, and turn on the networks you used on AMB. Each network gets its own URL, and one app's API key works on all of them.

If you prefer the terminal, the Alchemy CLI signs you in, creates the app, and makes a first test call:

bash
Copied
npm i -g @alchemy/cli@latest alchemy auth # browser sign-in alchemy app create --name amb-migration --networks ETH_MAINNET alchemy app select <app-id> # use the new app's key alchemy evm block latest -n eth-mainnet # confirm the endpoint answers

On a remote server without a browser, use alchemy auth login --device-code. alchemy app chains lists the identifiers for every other network you can add, including Bitcoin and Polygon.

If your team buys software through AWS, we are also on AWS Marketplace, so an Alchemy subscription can be billed through your AWS account.

Can an AI coding agent migrate off AMB for you?

Yes, and it saves the most time on AMB, where signing code often sits in several places: application clients, Lambda functions, and API Gateway proxies. We ship three tools that give a coding agent (Claude Code, Cursor, Codex, or similar) what it needs:

  • The Alchemy CLI runs the commands: creating apps, setting allowlists, and test calls against each network.
  • Alchemy Agent Skills teach the agent our endpoint formats, Data API methods, and CLI usage. Install them with alchemy install skills.
  • The Alchemy MCP server gives the agent direct access to chain data across 100+ networks, so it can compare results while it works. It is hosted at https://mcp.alchemy.com/mcp and signs in with your Alchemy account, so there is no API key to paste. Add it with alchemy install mcp, or in Claude Code:
bash
Copied
claude mcp add alchemy --transport http https://mcp.alchemy.com/mcp

On Claude Code, the Alchemy plugin for Claude Code installs the skills and the MCP server in one step, and setting up Claude Code with Alchemy walks through it.

Then give the agent a prompt like this from the root of your repository:

text
Copied
Move this project off Amazon Managed Blockchain (AMB Access and AMB Query) before the September 29, 2027 shutdown. The new provider is Alchemy. Use the Alchemy MCP server, the Alchemy CLI, and Alchemy skills. If the MCP tools aren't available, walk me through setup and sign-in first. Plan first. Don't change files or Alchemy settings until I approve. Never print or commit credentials. Before changing anything, ask me: - which AMB products and networks we use (Ethereum, Bitcoin, Polygon, AMB Query) - where our secrets live (env files, AWS Secrets Manager, CI variables) - whether the new Alchemy app needs IP or origin allowlists Then find every AMB dependency: managedblockchain.amazonaws.com endpoints, SigV4 signing code (signature-v4, aws4, awscurl, botocore signers), billingtoken query parameters, IAM policies granting managedblockchain actions, and every AMB Query SDK call (ManagedBlockchainQuery clients and operations). Show me the list with file paths and wait. After I approve, replace each RPC endpoint with an environment variable holding the Alchemy URL, remove the signing code, and add placeholders to .env.example. For AMB Query, propose an adapter that maps each operation we use to Alchemy Data API or UTXO API calls, and list any fields that don't map one-to-one. Finally, verify each migrated network with the Alchemy CLI and report the results.

To migrate without an agent, search your code and config for managedblockchain hostnames and SigV4 signing helpers, swap in the Alchemy URL for each network, and delete the signing step.

What replaces each part of your AWS blockchain setup?

Most of the mapping is one-to-one, and a few AMB limits go away.

On Amazon Managed Blockchain
On Alchemy

AMB Access Ethereum node on Mainnet

Ethereum Mainnet endpoint over HTTP and WebSocket, with historical state on the same endpoint

AMB Ethereum Consensus API

Ethereum Beacon endpoint

AMB Access Bitcoin (Mainnet, Testnet)

Bitcoin JSON-RPC endpoints, plus the UTXO API for address-level data

AMB Access Polygon (Mainnet)

Polygon Mainnet endpoint with WebSocket subscriptions and batch requests

AMB Query

Data APIs for Ethereum, UTXO API for Bitcoin

SigV4 signing or Accessor tokens

API key in the URL path

IAM policies on managedblockchain actions

IP and origin allowlists on each app

Dedicated Ethereum nodes

Our RPC API, or Alchemy Dedicated Clusters for single-tenant capacity

Several AMB limits go away in the move. AMB Ethereum nodes are full nodes, so AWS points teams to AMB Query for historical data, while our RPC API answers eth_getBalance and eth_call at any past block on the same endpoint. AMB Ethereum and Polygon don't accept JSON-RPC batch requests, and we support batch requests on both. AMB Polygon has no WebSocket endpoint, and ours does. AMB Ethereum also covers Mainnet only, while we serve Sepolia and Hoodi for testing.

Teams that chose AMB for single-tenant nodes can run on Alchemy Dedicated Clusters, and choosing between Node RPC and Dedicated Clusters explains when that is worth it.

Here is the endpoint swap as environment variables:

bash
Copied
# Before: Amazon Managed Blockchain ETH_RPC_URL=https://<node-id>.ethereum.managedblockchain.<region>.amazonaws.com/ ETH_WS_URL=wss://<node-id>.wss.ethereum.managedblockchain.<region>.amazonaws.com/ # Accessor-token variant: https://<node-id>.t.ethereum.managedblockchain.<region>.amazonaws.com?billingtoken=<token> BTC_RPC_URL=https://mainnet.bitcoin.managedblockchain.<region>.amazonaws.com/ POLYGON_RPC_URL=https://mainnet.polygon.managedblockchain.<region>.amazonaws.com/ # After: Alchemy ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/<your-key> ETH_WS_URL=wss://eth-mainnet.g.alchemy.com/v2/<your-key> ETH_BEACON_URL=https://eth-mainnetbeacon.g.alchemy.com/v2/<your-key> BTC_RPC_URL=https://bitcoin-mainnet.g.alchemy.com/v2/<your-key> POLYGON_RPC_URL=https://polygon-mainnet.g.alchemy.com/v2/<your-key> POLYGON_WS_URL=wss://polygon-mainnet.g.alchemy.com/v2/<your-key>

For Bitcoin testing, we serve bitcoin-testnet and bitcoin-signet endpoints in the same URL format.

How do you remove AWS SigV4 signing from blockchain requests?

On AMB, every request is signed with AWS Signature Version 4 (SigV4), the scheme that attaches your IAM credentials to each call, or carries an Accessor token in the URL. On Alchemy, the API key in the URL is the credential, so you delete the signing step instead of replacing it.

For Bitcoin, the request body doesn't change. Only the tool and URL do:

bash
Copied
# Before: AMB Access Bitcoin, signed with awscurl awscurl -X POST --service managedblockchain --region us-east-1 \ -d '{"jsonrpc":"1.0","id":"1","method":"getblockcount","params":[]}' \ https://mainnet.bitcoin.managedblockchain.us-east-1.amazonaws.com # After: Alchemy, plain curl curl -X POST -H "Content-Type: application/json" \ -d '{"jsonrpc":"1.0","id":"1","method":"getblockcount","params":[]}' \ "https://bitcoin-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY"

In application code, the AWS SDK signer, credential provider, and request wrapper all go away. For EVM chains, a standard client is enough:

typescript
Copied
import { createPublicClient, http } from "viem"; import { mainnet } from "viem/chains"; const { ETH_RPC_URL } = process.env; // Fail fast: viem's http() silently falls back to a public RPC when the URL is undefined. if (!ETH_RPC_URL) { throw new Error("Set ETH_RPC_URL to your Alchemy Ethereum Mainnet URL"); } // No SignatureV4, credential provider, or signed fetch wrapper. const client = createPublicClient({ chain: mainnet, transport: http(ETH_RPC_URL) }); async function main() { console.log(await client.getBlockNumber()); } main();

The same applies to ethers, web3.py, and any JSON-RPC client. Once nothing calls AMB, delete the signing dependencies along with the AMB IAM permissions.

Which blockchain data API replaces AMB Query?

Our Data API is a blockchain data API with indexed transaction history and token data for Ethereum and other EVM chains, and our UTXO API is the Bitcoin API for addresses, balances, and transactions. Together they cover the reads AMB Query served.

AMB Query returns normalized, indexed data from a set of SigV4-signed operations. AWS's AMB Query migration guide is direct that no provider is a one-to-one replacement, so the practical approach is an adapter layer. Your application keeps calling one interface, and the adapter maps each AMB operation onto our APIs and normalizes the fields you actually use.

AMB Query operation
Ethereum on Alchemy
Bitcoin on Alchemy

GetTokenBalance

eth_getBalance or eth_call at a block (balanceOf for ERC-20 and ERC-1155, ownerOf for ERC-721)

UTXO API address endpoint (current balance)

BatchGetTokenBalance

Token Balances By Wallet for native and ERC-20 balances, plus per-token eth_call reads for ERC-721 and ERC-1155

UTXO API address, one call per address

ListTokenBalances

Token Balances By Wallet and getNFTsForOwner; getOwnersForContract for NFT holder lists

UTXO API address and utxo endpoints

GetTransaction

eth_getTransactionByHash and eth_getTransactionReceipt

UTXO API tx endpoint

ListTransactions

alchemy_getAssetTransfers for transfer activity (or Transfers By Wallet)

UTXO API address endpoint with transaction details

ListTransactionEvents

Receipt logs, plus traces for internal ETH transfers

UTXO API tx endpoint (inputs and outputs)

GetAssetContract

alchemy_getTokenMetadata and NFT getContractMetadata

Not applicable

ListAssetContracts

No single call; keep a contract registry

Not applicable

ListFilteredTransactionEvents

Not applicable

UTXO API address and utxo endpoints

Ethereum: indexed transaction history and token data

The Ethereum side runs on our Data API. The Token API covers ERC-20 balances and metadata, the NFT API covers ERC-721 and ERC-1155 holdings, and the Transfers API covers address history. For a wallet's complete incoming and outgoing transaction history, call alchemy_getAssetTransfers once with fromAddress and once with toAddress, or use Transfers By Wallet to cover several chains in one request. NFT balances, including historical ones, come from eth_call against the token contract at the block you need (ownerOf for ERC-721, balanceOf for ERC-1155), since getNFTsForOwner returns current holdings only. Token Balances By Wallet replaces batched native and ERC-20 balance reads, since one request covers several addresses across Ethereum and Polygon:

bash
Copied
curl -X POST "https://api.g.alchemy.com/data/v1/$ALCHEMY_API_KEY/assets/tokens/balances/by-address" \ -H "Content-Type: application/json" \ -d '{"addresses":[{"address":"0xYourAddress","networks":["eth-mainnet","matic-mainnet"]}]}'

Bitcoin API: addresses, balances, and UTXOs

The Bitcoin side runs on our UTXO API, a REST interface with Blockbook-style endpoints for addresses, balances, balance history, transactions, and unspent outputs. Enable it as an add-on in the dashboard. Balance history returns the amounts received and sent per time interval over a range you set, which covers reporting views:

bash
Copied
curl "https://bitcoin-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY/api/v2/balancehistory/<btc-address>?from=1700000000&to=1710000000"

It returns activity per interval, not a balance at a single moment. If you used AMB's GetTokenBalance with a timestamp on Bitcoin, rebuild that balance from the address's outputs and spends, or keep your own snapshots.

What should the adapter handle?

A few details are worth handling in the adapter:

  • Finality. AMB Query's balance and contract operations return only final data, which AWS defines as 64 blocks on Ethereum and six blocks on Bitcoin. Read at a block that deep, not at latest, when you need the same answers.
  • Timestamps. AMB Query accepts a point in time (atBlockchainInstant) for historical balances. Our Ethereum balance methods take a block number, so resolve the timestamp to a block first, then query at that block.
  • Transaction coverage. The Transfers API covers transfer activity, not every transaction. If you need every top-level transaction an address sent, including failed ones, read the blocks in that range and check each receipt's status.
  • Contract lists. ListAssetContracts filters contracts by deployer, which no single call reproduces. If you depend on it, export that list from AMB Query while it is still available and keep it in your own store.
  • Pagination. AMB's nextToken becomes our pageKey (or the UTXO API's page parameters). Keep that difference inside the adapter.

Validate the adapter against responses you capture from AMB Query today, at finalized blocks, for the operations and fields your application actually reads.

How do you verify the migration and cut over without downtime?

Compare both providers at a fixed, finalized block before any production traffic moves. This script uses the awscurl tool you already use for AMB Bitcoin and checks that both sides return the same block hash at the same height:

bash
Copied
#!/usr/bin/env bash set -euo pipefail : "${ALCHEMY_API_KEY:?Set ALCHEMY_API_KEY}" : "${AWS_REGION:?Set AWS_REGION}" HEIGHT="${1:-850000}" BODY="{\"jsonrpc\":\"1.0\",\"id\":\"parity\",\"method\":\"getblockhash\",\"params\":[$HEIGHT]}" AMB=$(awscurl -X POST --service managedblockchain --region "$AWS_REGION" -d "$BODY" \ "https://mainnet.bitcoin.managedblockchain.$AWS_REGION.amazonaws.com" | jq -r .result) ALC=$(curl -s -X POST -H "Content-Type: application/json" -d "$BODY" \ "https://bitcoin-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY" | jq -r .result) if [ "$AMB" = "$ALC" ]; then echo "block $HEIGHT match: $ALC"; else echo "MISMATCH at $HEIGHT: AMB=$AMB Alchemy=$ALC"; exit 1; fi

Run the same comparison for Ethereum and Polygon with eth_getBlockByNumber at a block well past finality, and for any historical eth_call your application depends on. If your AMB Ethereum node uses Accessor tokens, its token endpoint works in any plain JSON-RPC client, so this comparison needs no signing code. A mismatch at a finalized block almost always means the wrong network URL.

Once the checks pass, shift traffic in stages behind a feature flag or weighted routing, and keep AMB as a rollback path until you are confident. How to migrate between RPC providers with zero downtime covers the staged cutover in detail, including keeping a backup RPC endpoint after the move.

How does Alchemy pricing compare with AWS Managed Blockchain?

AMB bills differently for each product. AMB Access Ethereum nodes bill per second for as long as they run, plus storage and requests. AMB Access Bitcoin and AMB Query bill per request, in tiers that depend on the method. We bill every chain and API the same way, in compute units (CUs), where a light call costs fewer units than a heavy one.

Amazon Managed Blockchain
Alchemy

Ethereum nodes

Per node, billed per second while running

No nodes to run, billed per request in CUs

Bitcoin and data APIs

Per request, priced in method tiers

Per request in CUs, same rate for every chain

Getting started

AWS account and IAM setup

Free plan with 30M CUs a month

Paid usage

Region-dependent rates

Pay As You Go at $0.525 per million CUs

Buying through AWS

Native AWS billing

Available on AWS Marketplace

As one concrete comparison, AWS's AMB pricing page uses $16 per million getblock calls in its Bitcoin example. On our endpoint, getblock costs 10 CUs, which works out to about $5.25 per million calls on Pay As You Go. Our pricing page has the full plan details. High-volume teams can talk to our sales team about Enterprise plans, which are also available as private offers on AWS Marketplace.

Need help planning the move?

You can create a free Alchemy account and have working Ethereum, Bitcoin, and Polygon endpoints today, with no contract and no node to sync. That is enough to run the parity check against your AMB setup this week.

For production workloads, AMB Query migrations, or teams that relied on dedicated nodes, talk to our sales team. We will help you map your AMB setup, size the right plan, and schedule the cutover well ahead of September 2027. If you are also moving workloads off Google Cloud, our Google Cloud Blockchain Node Engine migration guide covers that switch.

Frequently asked questions

When does AWS Managed Blockchain (AMB) shut down?

Amazon Managed Blockchain reaches end of support on September 29, 2027. After that date, existing customers can no longer access AMB Access Ethereum, Bitcoin, Polygon, Hyperledger Fabric, or AMB Query. Plan the migration well before the deadline so you can run both providers side by side.

What is the best alternative to Amazon Managed Blockchain?

For AMB Access on Ethereum, Bitcoin, and Polygon, Alchemy is a direct replacement, and AWS's own node and RPC migration guide lists Alchemy as a third-party provider. Alchemy keeps the same JSON-RPC methods and replaces SigV4 signing with an API key. For AMB Query, Alchemy's Data API and UTXO API cover the indexed reads.

Do I have to rewrite my application to leave Amazon Managed Blockchain?

Not for AMB Access. Alchemy speaks standard JSON-RPC on Ethereum, Bitcoin, and Polygon, so you change the endpoint URL and remove SigV4 signing or Accessor tokens. AMB Query is an indexed API, so you replace its SDK calls with Alchemy Data API and UTXO API calls behind an adapter.

Which blockchain API offers indexed transaction history and token data like AMB Query?

Alchemy's Data API offers indexed transaction history and token data. On Ethereum it covers AMB Query's balance, transaction, transfer, token, and NFT reads, and Token Balances By Wallet replaces batched native and ERC-20 balance lookups. For Bitcoin, Alchemy's UTXO API covers addresses, balances, balance history, transactions, and unspent outputs. Map each AMB Query operation you use through an adapter and validate against captured AMB responses.

Can I pay for Alchemy through AWS?

Yes. Alchemy is listed on AWS Marketplace, so a subscription can be billed through your AWS account, and Enterprise plans are available as private offers. You can also start on Alchemy's Free plan, with 30 million compute units a month, and move to Pay As You Go at $0.525 per million compute units.

Which chains can I use after moving to Alchemy?

Every public chain AMB supported is available: Ethereum (Mainnet plus Sepolia and Hoodi), Bitcoin (Mainnet, Testnet, and Signet), and Polygon (Mainnet and Amoy). Beyond those, Alchemy supports more than 100 chains, including Base, Arbitrum, Optimism, and Solana, all with the same API key.

What about AMB Access Hyperledger Fabric?

Hyperledger Fabric runs private, permissioned ledgers, which is a different migration from moving public-chain RPC traffic. AWS's end-of-support notice lists the Fabric options: another managed Fabric network, self-managed Fabric on AWS, or an AWS database. If you are considering moving a Fabric workload onto a public chain, talk to Alchemy's sales team.

Background gradient

Build blockchain magic

Alchemy combines the most powerful web3 developer products and tools with resources, community and legendary support.