---
title: "AWS Managed Blockchain 替代方案：如何将 AMB Access 和 AMB Query 迁移到 Alchemy"
description: "AWS Managed Blockchain（AMB）将于 2027 年 9 月 29 日关停。沿用同样的 JSON-RPC 调用，并借助区块链数据 API，将 AMB Access 和 AMB Query 迁移到 Alchemy。"
---

# AWS Managed Blockchain 替代方案：如何将 AMB Access 和 AMB Query 迁移到 Alchemy

<ImageBlock
  src="https://media.alchemy.com/blog/amazon-managed-blockchain-alternative-hero.png"
  alt="从 AMB Access 和 AMB Query 迁移到 Alchemy 的标题卡"
  width={1920}
  height={900}
  priority
/>

Amazon Web Services 即将终止其托管区块链服务 Amazon Managed Blockchain（AMB）。现有客户可以继续使用到 2027 年 9 月 29 日，此后 AMB Access 和 AMB Query 将停止响应。如果你在 Ethereum、Bitcoin 或 Polygon 上运行 AMB Access，迁移到 Alchemy 只需更换端点。你的 JSON-RPC 调用保持不变，API key 将取代 SigV4 请求签名或 AMB Accessor tokens。

AMB Query 的迁移不只是更换 URL，因为它是一个索引数据 API，而不是节点。我们的 Data API 覆盖同样的 Ethereum 读取操作（余额、转账、代币和 NFT 元数据），我们的 UTXO API 则覆盖 Bitcoin 地址、余额和交易。本指南介绍这两条路径：获取端点、把代码修改交给编码代理、替换 SigV4、映射每个 AMB Query 操作、检查新端点是否返回相同的数据，以及两者的计费对比。

## AWS Managed Blockchain 什么时候关停？

根据 AWS 的 [Amazon Managed Blockchain 终止支持通知](https://docs.aws.amazon.com/managed-blockchain/latest/hyperledger-fabric-dev/managed-blockchain-end-of-support.html)，2027 年 9 月 29 日之后，现有客户将无法访问任何 AMB 产品。涉及以下五项服务：

- **AMB Access Ethereum**。Ethereum 主网上的专用全节点，支持通过 HTTP 和 WebSocket 访问 JSON-RPC，并提供 Consensus API。
- **AMB Access Bitcoin**。共享的 Bitcoin 主网和测试网端点。
- **AMB Access Polygon**。一个共享的 Polygon 主网端点。
- **AMB Query**。一个索引 API，提供 Ethereum（主网和 Sepolia）和 Bitcoin（主网和测试网）上的余额、交易和代币数据。
- **AMB Access Hyperledger Fabric**。私有的许可制网络。

该列表中的所有公链（Ethereum、Bitcoin 和 Polygon）我们都已支持，同一个 API key 还可以访问另外 100 多条链。Hyperledger Fabric 运行的是私有账本而非公链，因此不在本指南的范围内，AWS 的通知中列出了它的可选方案。

AWS 的[节点和 RPC 迁移指南](https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/migrating-node-rpc-workloads.html)将 Alchemy 列为 AMB Access Ethereum、Bitcoin 和 Polygon 的第三方服务商。当你的全部流量都运行在 Alchemy 上之后，请删除你的 AMB Ethereum 节点、Accessor tokens，以及授予 AMB 访问权限的 IAM 权限。在你删除 AMB Ethereum 节点之前，AWS 会一直按秒计费。

## 如何将 AMB Access 切换到新的 RPC 服务商？

<ImageBlock
  src="https://media.alchemy.com/blog/amazon-managed-blockchain-alternative-migration-support.png"
  alt="AWS 关停 Amazon Managed Blockchain，Alchemy 提供迁移实操支持"
  width={3200}
  height={1800}
/>

在 [Alchemy 控制台](https://dashboard.alchemy.com/)注册，创建一个应用，并启用你在 AMB 上使用的网络。每个网络都有自己的 URL，同一个应用的 API key 可用于所有这些网络。

如果你更习惯使用终端，[Alchemy CLI](/agents) 可以完成登录、创建应用并发起第一次测试调用：

<CodeSnippet
  language="bash"
  code={`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`}
/>

在没有浏览器的远程服务器上，请改用 `alchemy auth login --device-code`。`alchemy app chains` 会列出你可以添加的所有其他网络的标识符，包括 Bitcoin 和 Polygon。

如果你的团队通过 AWS 采购软件，我们也已上架 [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-vvdwfua4ksmkc)，因此 Alchemy 订阅可以通过你的 AWS 账户计费。

## AI 编码代理能替你完成 AMB 迁移吗？

可以。在 AMB 上这样做最节省时间，因为签名代码往往分散在多个地方：应用客户端、Lambda 函数和 API Gateway 代理。我们提供三款工具，为编码代理（Claude Code、Cursor、Codex 或类似工具）提供所需的一切：

- [Alchemy CLI](/docs/alchemy-cli) 负责执行命令：创建应用、设置白名单，以及对每个网络发起测试调用。
- [Alchemy Agent Skills](/docs/alchemy-agent-skills) 让代理掌握我们的端点格式、Data API 方法和 CLI 用法。使用 `alchemy install skills` 安装。
- [Alchemy MCP server](/docs/alchemy-mcp-server) 让代理可以直接访问 100 多个网络的链上数据，因此它可以在工作时对比结果。它托管在 `https://mcp.alchemy.com/mcp`，通过你的 Alchemy 账户登录，无需粘贴 API key。使用 `alchemy install mcp` 添加，或在 Claude Code 中运行：

<CodeSnippet
  language="bash"
  code={`claude mcp add alchemy --transport http https://mcp.alchemy.com/mcp`}
/>

在 Claude Code 上，[Alchemy 的 Claude Code 插件](/docs/alchemy-claude-plugin)可以一步安装 skills 和 MCP server，[使用 Alchemy 配置 Claude Code](/blog/setup-claude-code-with-alchemy) 一文详细介绍了整个过程。

然后在仓库根目录下，给代理一段类似下面的提示词：

<CodeSnippet
  language="text"
  code={`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.`}
/>

如果不借助代理手动迁移，请在代码和配置中搜索 `managedblockchain` 主机名和 SigV4 签名辅助函数，为每个网络换上对应的 Alchemy URL，并删除签名步骤。

## AWS 区块链配置的各个部分迁移后对应什么？

大部分对应关系是一对一的，还有一些 AMB 限制会随之消失。

<EmbeddedTable
  table={{
    columns: [
      {
        key: "1",
        width: 360,
        title: "Amazon Managed Blockchain 上",
        dataType: "object",
      },
      { key: "2", width: 360, title: "Alchemy 上", dataType: "object" },
    ],
    data: [
      {
        "1": {
          title: "<p>主网上的 AMB Access Ethereum 节点</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title:
            "<p>支持 HTTP 和 WebSocket 的 Ethereum 主网端点，同一端点还提供历史状态</p>",
          tooltip: "",
          icon: "",
        },
        id: 0,
      },
      {
        "1": {
          title: "<p>AMB Ethereum Consensus API</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>Ethereum Beacon 端点</p>",
          tooltip: "",
          icon: "",
        },
        id: 1,
      },
      {
        "1": {
          title: "<p>AMB Access Bitcoin（主网、测试网）</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>Bitcoin JSON-RPC 端点，以及提供地址级数据的 UTXO API</p>",
          tooltip: "",
          icon: "",
        },
        id: 2,
      },
      {
        "1": {
          title: "<p>AMB Access Polygon（主网）</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>支持 WebSocket 订阅和批量请求的 Polygon 主网端点</p>",
          tooltip: "",
          icon: "",
        },
        id: 3,
      },
      {
        "1": { title: "<p>AMB Query</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>Ethereum 使用 Data API，Bitcoin 使用 UTXO API</p>",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
      {
        "1": {
          title: "<p>SigV4 签名或 Accessor tokens</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>位于 URL 路径中的 API key</p>",
          tooltip: "",
          icon: "",
        },
        id: 5,
      },
      {
        "1": {
          title: "<p>针对 managedblockchain 操作的 IAM 策略</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>每个应用上的 IP 白名单和 origin 白名单</p>",
          tooltip: "",
          icon: "",
        },
        id: 6,
      },
      {
        "1": {
          title: "<p>专用 Ethereum 节点</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title:
            "<p>我们的 RPC API，或提供单租户容量的 Alchemy Dedicated Clusters</p>",
          tooltip: "",
          icon: "",
        },
        id: 7,
      },
    ],
  }}
/>

迁移后，AMB 的若干限制都会消失。AMB Ethereum 节点是全节点，因此 AWS 建议团队通过 AMB Query 获取历史数据，而我们的 [RPC API](/rpc-api) 可以在同一端点上针对任意历史区块响应 `eth_getBalance` 和 `eth_call`。AMB Ethereum 和 Polygon 不接受 JSON-RPC 批量请求，而我们在这两条链上都支持[批量请求](/docs/reference/batch-requests)。AMB Polygon 没有 WebSocket 端点，我们则提供。AMB Ethereum 也只覆盖主网，而我们提供 Sepolia 和 Hoodi 用于测试。

如果你当初选择 AMB 是为了单租户节点，可以改用 [Alchemy Dedicated Clusters](/dedicated-clusters)，而[如何在 Node RPC 和 Dedicated Clusters 之间做选择](/overviews/dedicated-vs-shared-nodes)一文解释了什么情况下值得这样做。

以下是以环境变量形式列出的端点替换：

<CodeSnippet
  language="bash"
  code={`# 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>`}
/>

如需进行 Bitcoin 测试，我们以相同的 URL 格式提供 `bitcoin-testnet` 和 `bitcoin-signet` 端点。

## 如何移除区块链请求中的 AWS SigV4 签名？

在 AMB 上，每个请求要么使用 AWS Signature Version 4（SigV4）签名（这种机制会把你的 IAM 凭证附加到每次调用上），要么在 URL 中携带 Accessor token。在 Alchemy 上，URL 中的 API key 就是凭证，因此你只需删除签名步骤，而无需替换它。

对于 Bitcoin，请求体保持不变，只有工具和 URL 会变：

<CodeSnippet
  language="bash"
  code={`# 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"`}
/>

在应用代码中，AWS SDK 签名器、凭证提供程序和请求封装都可以移除。对于 EVM 链，使用标准客户端即可：

<CodeSnippet
  language="typescript"
  code={`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();`}
/>

ethers、`web3.py` 以及任何 JSON-RPC 客户端也同样适用。当不再有任何代码调用 AMB 后，请删除签名相关的依赖以及 AMB 的 IAM 权限。

## 哪种区块链数据 API 可以替代 AMB Query？

我们的 Data API 是一款区块链数据 API，为 Ethereum 和其他 EVM 链提供索引化的交易历史和代币数据；我们的 UTXO API 则是面向地址、余额和交易的 Bitcoin API。两者合起来即可覆盖 AMB Query 提供的读取功能。

AMB Query 通过一组经过 SigV4 签名的操作返回标准化的索引数据。AWS 的 [AMB Query 迁移指南](https://docs.aws.amazon.com/managed-blockchain/latest/ambq-dg/migrating-query-workloads.html)明确指出，没有哪家服务商能一对一替代它，因此切实可行的做法是引入一个适配层。你的应用继续调用同一个接口，由适配器将每个 AMB 操作映射到我们的 API 上，并对你实际使用的字段进行标准化。

<EmbeddedTable
  table={{
    columns: [
      {
        key: "1",
        width: 240,
        title: "AMB Query 操作",
        dataType: "object",
      },
      {
        key: "2",
        width: 240,
        title: "Alchemy 上的 Ethereum",
        dataType: "object",
      },
      {
        key: "3",
        width: 240,
        title: "Alchemy 上的 Bitcoin",
        dataType: "object",
      },
    ],
    data: [
      {
        "1": { title: "<p>GetTokenBalance</p>", tooltip: "", icon: "" },
        "2": {
          title:
            "<p>在指定区块调用 <code>eth_getBalance</code> 或 <code>eth_call</code>（ERC-20 和 ERC-1155 用 <code>balanceOf</code>，ERC-721 用 <code>ownerOf</code>）</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>UTXO API <code>address</code> 端点（当前余额）</p>",
          tooltip: "",
          icon: "",
        },
        id: 0,
      },
      {
        "1": { title: "<p>BatchGetTokenBalance</p>", tooltip: "", icon: "" },
        "2": {
          title:
            "<p>原生代币和 ERC-20 余额使用 Token Balances By Wallet，ERC-721 和 ERC-1155 使用逐个代币的 <code>eth_call</code> 读取</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>UTXO API <code>address</code>，每个地址调用一次</p>",
          tooltip: "",
          icon: "",
        },
        id: 1,
      },
      {
        "1": { title: "<p>ListTokenBalances</p>", tooltip: "", icon: "" },
        "2": {
          title:
            "<p>Token Balances By Wallet 和 <code>getNFTsForOwner</code>；NFT 持有者列表使用 <code>getOwnersForContract</code></p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title:
            "<p>UTXO API <code>address</code> 和 <code>utxo</code> 端点</p>",
          tooltip: "",
          icon: "",
        },
        id: 2,
      },
      {
        "1": { title: "<p>GetTransaction</p>", tooltip: "", icon: "" },
        "2": {
          title:
            "<p><code>eth_getTransactionByHash</code> 和 <code>eth_getTransactionReceipt</code></p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>UTXO API <code>tx</code> 端点</p>",
          tooltip: "",
          icon: "",
        },
        id: 3,
      },
      {
        "1": { title: "<p>ListTransactions</p>", tooltip: "", icon: "" },
        "2": {
          title:
            "<p>使用 <code>alchemy_getAssetTransfers</code> 获取转账活动（或使用 Transfers By Wallet）</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>附带交易详情的 UTXO API <code>address</code> 端点</p>",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
      {
        "1": { title: "<p>ListTransactionEvents</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>交易收据日志，以及用于内部 ETH 转账的追踪数据</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>UTXO API <code>tx</code> 端点（输入和输出）</p>",
          tooltip: "",
          icon: "",
        },
        id: 5,
      },
      {
        "1": { title: "<p>GetAssetContract</p>", tooltip: "", icon: "" },
        "2": {
          title:
            "<p><code>alchemy_getTokenMetadata</code> 和 NFT <code>getContractMetadata</code></p>",
          tooltip: "",
          icon: "",
        },
        "3": { title: "<p>不适用</p>", tooltip: "", icon: "" },
        id: 6,
      },
      {
        "1": { title: "<p>ListAssetContracts</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>没有可直接替代的单一调用；需自行维护合约登记表</p>",
          tooltip: "",
          icon: "",
        },
        "3": { title: "<p>不适用</p>", tooltip: "", icon: "" },
        id: 7,
      },
      {
        "1": {
          title: "<p>ListFilteredTransactionEvents</p>",
          tooltip: "",
          icon: "",
        },
        "2": { title: "<p>不适用</p>", tooltip: "", icon: "" },
        "3": {
          title:
            "<p>UTXO API <code>address</code> 和 <code>utxo</code> 端点</p>",
          tooltip: "",
          icon: "",
        },
        id: 8,
      },
    ],
  }}
/>

### Ethereum：索引化的交易历史和代币数据

Ethereum 部分由我们的 [Data API](/docs/data) 承担。[Token API](/token-api) 覆盖 ERC-20 余额和元数据，[NFT API](/nft-api) 覆盖 ERC-721 和 ERC-1155 持仓，[Transfers API](/docs/reference/transfers-api-quickstart) 覆盖地址历史。如需获取某个钱包完整的转入和转出交易历史，请分别以 `fromAddress` 和 `toAddress` 各调用一次 `alchemy_getAssetTransfers`，或使用 Transfers By Wallet 在一个请求中覆盖多条链。NFT 余额（包括历史余额）需要在所需区块对代币合约执行 `eth_call` 获取（ERC-721 用 `ownerOf`，ERC-1155 用 `balanceOf`），因为 `getNFTsForOwner` 只返回当前持仓。Token Balances By Wallet 可以替代原生代币和 ERC-20 余额的批量读取，因为一个请求即可覆盖 Ethereum 和 Polygon 上的多个地址：

<CodeSnippet
  language="bash"
  code={`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：地址、余额和 UTXO

Bitcoin 部分由我们的 [UTXO API](/docs/bitcoin/utxo-migration-guide) 承担。这是一个 REST 接口，提供 Blockbook 风格的端点，用于查询地址、余额、余额历史、交易和未花费输出。请在控制台中将其作为附加组件启用。余额历史会在你设定的时间范围内，按时间间隔返回收到和发送的金额，可满足报表类视图的需求：

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

它返回的是每个时间间隔内的活动，而不是某一时刻的余额。如果你曾在 Bitcoin 上带时间戳调用 AMB 的 `GetTokenBalance`，请根据该地址的输出和花费重新计算余额，或自行保存快照。

### 适配器应该处理哪些问题？

有几个细节值得在适配器中处理：

- **最终性**。AMB Query 的余额和合约操作只返回已最终确认的数据，AWS 将其定义为 Ethereum 上 64 个区块、Bitcoin 上 6 个区块。如果需要得到相同的结果，请在达到该深度的区块上读取，而不是读取 `latest`。
- **时间戳**。AMB Query 接受一个时间点（`atBlockchainInstant`）来查询历史余额。我们的 Ethereum 余额方法接受的是区块号，因此请先将时间戳解析为区块，再在该区块上查询。
- **交易覆盖范围**。Transfers API 覆盖的是转账活动，而不是每一笔交易。如果你需要某个地址发出的每一笔顶层交易（包括失败的交易），请读取该范围内的区块，并检查每个收据的状态。
- **合约列表**。`ListAssetContracts` 按部署者筛选合约，没有任何单一调用能复现这一功能。如果你依赖它，请趁 AMB Query 仍可用时导出该列表，并保存在你自己的存储中。
- **分页**。AMB 的 `nextToken` 对应我们的 `pageKey`（或 UTXO API 的分页参数）。请把这一差异封装在适配器内部。

请用你现在从 AMB Query 捕获的响应来验证适配器：选取已最终确认的区块，覆盖你的应用实际读取的操作和字段。

## 如何验证迁移并实现零停机切换？

在迁移任何生产流量之前，先在一个固定的、已最终确认的区块上比较两个服务商。下面的脚本使用你在 AMB Bitcoin 上已经在用的 `awscurl` 工具，检查两边在同一高度上是否返回相同的区块哈希：

<CodeSnippet
  language="bash"
  code={`#!/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`}
/>

对 Ethereum 和 Polygon 也运行同样的比较：在远超最终性深度的区块上调用 `eth_getBlockByNumber`，并覆盖你的应用所依赖的每个历史 `eth_call`。如果你的 AMB Ethereum 节点使用 Accessor tokens，其 token 端点可以在任何普通 JSON-RPC 客户端中使用，因此这项比较无需任何签名代码。已最终确认区块上的结果不一致，几乎总是意味着网络 URL 填错了。

校验通过后，借助功能开关或加权路由分阶段迁移流量，并保留 AMB 作为回退路径，直到你有充分把握为止。[如何在 RPC 服务商之间零停机迁移](/blog/migrate-between-rpc-providers-zero-downtime)详细介绍了分阶段切换的做法，包括迁移后保留一个[备用 RPC 端点](/overviews/alternative-rpc-endpoint)。

## Alchemy 的定价与 AWS Managed Blockchain 相比如何？

AMB 的每款产品计费方式各不相同。AMB Access Ethereum 节点在运行期间按秒计费，另加存储和请求费用。AMB Access Bitcoin 和 AMB Query 按请求计费，费率按方法分档。我们对每条链和每个 API 采用相同的计费方式，以计算单元（CU）计量，轻量调用消耗的单元少于繁重调用。

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 240, title: "", dataType: "object" },
      {
        key: "2",
        width: 240,
        title: "Amazon Managed Blockchain",
        dataType: "object",
      },
      { key: "3", width: 240, title: "Alchemy", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Ethereum 节点</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>按节点收费，运行期间按秒计费</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>无需运行节点，按请求以 CU 计费</p>",
          tooltip: "",
          icon: "",
        },
        id: 0,
      },
      {
        "1": { title: "<p>Bitcoin 和数据 API</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>按请求收费，按方法分档定价</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>按请求以 CU 计费，所有链费率相同</p>",
          tooltip: "",
          icon: "",
        },
        id: 1,
      },
      {
        "1": { title: "<p>开始使用</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>需要 AWS 账户并配置 IAM</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Free 计划每月 3,000 万 CU</p>",
          tooltip: "",
          icon: "",
        },
        id: 2,
      },
      {
        "1": { title: "<p>付费用量</p>", tooltip: "", icon: "" },
        "2": { title: "<p>费率因区域而异</p>", tooltip: "", icon: "" },
        "3": {
          title: "<p>Pay As You Go 每百万 CU $0.525</p>",
          tooltip: "",
          icon: "",
        },
        id: 3,
      },
      {
        "1": { title: "<p>通过 AWS 购买</p>", tooltip: "", icon: "" },
        "2": { title: "<p>原生 AWS 计费</p>", tooltip: "", icon: "" },
        "3": {
          title: "<p>可通过 AWS Marketplace 购买</p>",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
    ],
  }}
/>

举一个具体的对比：AWS 的 [AMB 定价页面](https://aws.amazon.com/managed-blockchain/pricing/)在其 Bitcoin 示例中，按每百万次 `getblock` 调用 $16 计算。在我们的端点上，`getblock` 消耗 10 CU，按 Pay As You Go 计算约合每百万次调用 $5.25。我们的[定价页面](/pricing)列出了完整的套餐详情。高用量团队可以联系我们的销售团队了解 Enterprise 套餐，这些套餐也可以通过 AWS Marketplace 以私有报价的形式购买。

## 需要帮助规划迁移吗？

你可以[免费创建 Alchemy 账户](https://dashboard.alchemy.com/)，今天就拿到可用的 Ethereum、Bitcoin 和 Polygon 端点，无需签约，也没有需要同步的节点。这足以让你在本周内针对现有的 AMB 配置运行一致性校验。

如果你有生产工作负载、需要迁移 AMB Query，或者团队一直依赖专用节点，请[联系我们的销售团队](/contact-sales)。我们会帮你梳理 AMB 配置的对应关系，确定合适的套餐规模，并在 2027 年 9 月之前提早安排好切换。如果你也在将工作负载迁出 Google Cloud，我们的 [Google Cloud Blockchain Node Engine 迁移指南](/overviews/google-cloud-blockchain-node-engine-alternative)介绍了相应的切换方法。

## 常见问题

### AWS Managed Blockchain（AMB）什么时候关停？

Amazon Managed Blockchain 将于 2027 年 9 月 29 日终止支持。此后，现有客户将无法再访问 AMB Access Ethereum、Bitcoin、Polygon、Hyperledger Fabric 或 AMB Query。请在截止日期之前尽早规划迁移，以便让两个服务商并行运行一段时间。

### Amazon Managed Blockchain 最好的替代方案是什么？

对于 Ethereum、Bitcoin 和 Polygon 上的 AMB Access，Alchemy 可以直接替代，AWS 自己的节点和 RPC 迁移指南也将 Alchemy 列为第三方服务商。Alchemy 保留相同的 JSON-RPC 方法，并用 API key 取代 SigV4 签名。对于 AMB Query，Alchemy 的 Data API 和 UTXO API 覆盖了索引数据的读取。

### 迁出 Amazon Managed Blockchain 需要重写应用吗？

AMB Access 不需要。Alchemy 在 Ethereum、Bitcoin 和 Polygon 上使用标准 JSON-RPC，因此你只需更改端点 URL，并移除 SigV4 签名或 Accessor tokens。AMB Query 是一个索引 API，因此你需要通过适配器，将它的 SDK 调用替换为 Alchemy Data API 和 UTXO API 调用。

### 哪种区块链 API 能像 AMB Query 一样提供索引化的交易历史和代币数据？

Alchemy 的 Data API 提供索引化的交易历史和代币数据。在 Ethereum 上，它覆盖 AMB Query 的余额、交易、转账、代币和 NFT 读取，Token Balances By Wallet 可以替代原生代币和 ERC-20 余额的批量查询。对于 Bitcoin，Alchemy 的 UTXO API 覆盖地址、余额、余额历史、交易和未花费输出。请通过适配器映射你使用的每个 AMB Query 操作，并用捕获的 AMB 响应进行验证。

### 可以通过 AWS 支付 Alchemy 的费用吗？

可以。Alchemy 已上架 AWS Marketplace，因此订阅可以通过你的 AWS 账户计费，Enterprise 套餐也可以通过私有报价购买。你也可以先从 Alchemy 的 Free 计划开始，每月包含 3,000 万计算单元，之后再升级到 Pay As You Go，价格为每百万计算单元 $0.525。

### 迁移到 Alchemy 后可以使用哪些链？

AMB 支持的所有公链均可使用：Ethereum（主网以及 Sepolia 和 Hoodi）、Bitcoin（主网、测试网和 Signet）以及 Polygon（主网和 Amoy）。除此之外，Alchemy 还支持 100 多条链，包括 Base、Arbitrum、Optimism 和 Solana，全部可以用同一个 API key 访问。

### AMB Access Hyperledger Fabric 怎么办？

Hyperledger Fabric 运行的是私有的许可制账本，其迁移方式与迁移公链 RPC 流量不同。AWS 的终止支持通知列出了 Fabric 的可选方案：另一个托管 Fabric 网络、在 AWS 上自行管理 Fabric，或者使用 AWS 数据库。如果你正在考虑将 Fabric 工作负载迁移到公链上，请联系 Alchemy 的销售团队。
