---
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 호출은 그대로 유지되며, SigV4 요청 서명이나 AMB Accessor tokens 대신 API 키를 사용한다.

AMB Query는 노드가 아니라 인덱싱된 데이터 API이므로 URL 변경만으로는 끝나지 않는다. 우리의 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**. Ethereum(메인넷 및 Sepolia)과 Bitcoin(메인넷 및 테스트넷)의 잔액, 트랜잭션, 토큰 데이터를 위한 인덱싱된 API.
- **AMB Access Hyperledger Fabric**. 프라이빗 허가형 네트워크.

우리는 이 목록의 모든 퍼블릭 체인, 즉 Ethereum, Bitcoin, Polygon을 이미 지원하며, 같은 API 키로 100개 이상의 다른 체인도 지원한다. Hyperledger Fabric은 퍼블릭 체인이 아닌 프라이빗 원장을 운영하므로 이 가이드의 범위를 벗어나며, 이에 대한 선택지는 AWS 공지에 나와 있다.

AWS의 [노드 및 RPC 마이그레이션 가이드](https://docs.aws.amazon.com/managed-blockchain/latest/ethereum-dev/migrating-node-rpc-workloads.html)는 AMB Access Ethereum, Bitcoin, Polygon의 서드파티 제공업체로 Alchemy를 명시한다. 모든 트래픽이 Alchemy에서 처리되면 AMB Ethereum 노드, Accessor tokens, 그리고 AMB 접근 권한을 부여하는 IAM 권한을 삭제하라. AWS는 AMB Ethereum 노드를 삭제할 때까지 초 단위로 과금한다.

## 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 키가 그 모든 네트워크에서 동작한다.

터미널을 선호한다면, [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 키가 없다. `alchemy install mcp`로 추가하거나, Claude Code에서는 다음과 같이 추가한다:

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

Claude Code에서는 [Claude Code용 Alchemy 플러그인](/docs/alchemy-claude-plugin)이 스킬과 MCP 서버를 한 번에 설치하며, [Claude Code에 Alchemy 설정하기](/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 키</p>",
          tooltip: "",
          icon: "",
        },
        id: 5,
      },
      {
        "1": {
          title: "<p>managedblockchain 액션에 대한 IAM 정책</p>",
          tooltip: "",
          icon: "",
        },
        "2": {
          title: "<p>앱별 IP 및 오리진 허용 목록</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에서는 모든 요청이 각 호출에 IAM 자격 증명을 첨부하는 방식인 AWS Signature Version 4(SigV4)로 서명되거나, URL에 Accessor token을 담는다. Alchemy에서는 URL에 포함된 API 키가 곧 자격 증명이므로, 서명 단계를 다른 것으로 대체하는 대신 삭제하면 된다.

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는 Ethereum 및 기타 EVM 체인의 인덱싱된 트랜잭션 히스토리와 토큰 데이터를 제공하는 블록체인 데이터 API이며, 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)는 주소 히스토리를 커버한다. 지갑의 입출금 트랜잭션 히스토리 전체가 필요하다면 `alchemy_getAssetTransfers`를 `fromAddress`로 한 번, `toAddress`로 한 번 호출하거나, Transfers By Wallet을 사용해 요청 하나로 여러 체인을 커버하라. NFT 잔액은 과거 시점을 포함해 필요한 블록에서 토큰 컨트랙트에 `eth_call`을 실행해 가져온다(ERC-721은 `ownerOf`, ERC-1155는 `balanceOf`). `getNFTsForOwner`는 현재 보유 내역만 반환하기 때문이다. Token Balances By Wallet은 요청 하나로 Ethereum과 Polygon에 걸친 여러 주소를 커버하므로 네이티브 및 ERC-20 잔액의 일괄 조회를 대체한다:

<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)로 처리한다. 주소, 잔액, 잔액 히스토리, 트랜잭션, 미사용 출력을 위한 Blockbook 스타일 엔드포인트를 갖춘 REST 인터페이스다. 대시보드에서 애드온으로 활성화하라. 잔액 히스토리는 지정한 범위에서 시간 간격별로 받은 금액과 보낸 금액을 반환하므로 리포팅 화면에 활용할 수 있다:

<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를 사용한다면, 토큰 엔드포인트는 일반 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>매월 3천만 CU를 제공하는 Free 플랜</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 메서드를 유지하고 SigV4 서명을 API 키로 대체한다. 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 호출로 대체해야 한다.

### AMB Query처럼 인덱싱된 트랜잭션 히스토리와 토큰 데이터를 제공하는 블록체인 API는 무엇인가?

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 플랜은 프라이빗 오퍼로 제공된다. 매월 3천만 컴퓨트 유닛이 포함된 Alchemy의 Free 플랜으로 시작한 뒤, 백만 컴퓨트 유닛당 $0.525인 Pay As You Go로 옮길 수도 있다.

### Alchemy로 옮긴 후 어떤 체인을 사용할 수 있는가?

AMB가 지원한 모든 퍼블릭 체인을 사용할 수 있다. Ethereum(메인넷, Sepolia, Hoodi), Bitcoin(메인넷, 테스트넷, Signet), Polygon(메인넷, Amoy)이다. 그 밖에도 Alchemy는 Base, Arbitrum, Optimism, Solana를 비롯한 100개 이상의 체인을 지원하며, 모두 같은 API 키로 접근할 수 있다.

### AMB Access Hyperledger Fabric은 어떻게 되는가?

Hyperledger Fabric은 프라이빗 허가형 원장을 운영하므로, 퍼블릭 체인 RPC 트래픽을 옮기는 것과는 다른 마이그레이션이다. AWS의 지원 종료 공지에는 Fabric에 대한 선택지로 다른 관리형 Fabric 네트워크, AWS에서 직접 관리하는 Fabric, 또는 AWS 데이터베이스가 나와 있다. Fabric 워크로드를 퍼블릭 체인으로 옮기는 것을 고려하고 있다면 Alchemy 영업팀과 상담하라.
