翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
AgentCore 支払いのクイックスタート
このチュートリアルでは、AgentCore 支払いを設定し、最初のマイクロトランザクションを処理する方法について説明します。最終的に、エージェントはテストネットワークの x402 プロトコルを使用してリソースの料金を支払います。
支払いは 2 つの方法で設定できます。
-
AgentCore Payments スキルの使用 — Kiro、Claude Code、Codex などの AI コーディングエージェントとのガイド付き会話を通じてすべてのリソースをプロビジョニングする自動セットアップエクスペリエンス。このスキルは、CLI コマンド、SDK スクリプト、フレームワークのワイヤリングを自動的に処理します。
-
CLI、SDK、または Boto3 の使用 — AgentCore CLI、 AWS SDK、または AWS CLI を直接使用するstep-by-stepの手動セットアップ。
Coinbase コネクタを作成するときは、2 つの方法で認証情報を指定できます。クイック作成 (推奨) では、Coinbase および AgentCore 支払いを通じて認証情報をプロビジョニングして保存します。生成または貼り付けるキーはありません。手動 では、自分で生成した Coinbase API キーを指定します。Stripe (Privy) は手動フローのみを使用します。クイック作成では、手動セットアップのステップ 1 と 2 をスキップします。
AgentCore Payments スキルの使用
AgentCore Payments スキルは、インタラクティブなガイド付きエクスペリエンスを通じてセットアッププロセス全体を自動化します。次のリソースをプロビジョニングします。
-
PaymentCredentialProvider — 支払いプロバイダーの認証情報を AgentCore Identity に保存します。
-
Payment Manager — 支払いオペレーションを調整する最上位のリソース。
-
Payment Connector — AgentCore CLI を介してマネージャーを認証情報にリンクします。
-
支払い手段 — エージェントがユーザーに代わってマーチャントの支払いに使用する暗号ウォレット。
-
Payment Session — 支出制限のある時間制限付きコンテキスト。
また、このスキルはフレームワークに依存しないツールを使用してエージェントに支払いをルーティングするため、Strands、LangGraph、OpenAI Agents SDK、または任意の Python フレームワークで動作します。
前提条件
開始する前に、以下を確認してください。
-
AWS 認証情報が設定されたアカウント (aws configure)
-
AgentCore 支払いが利用可能な AWS リージョン — 「サポートされている AWS リージョン」を参照してください。
-
Coinbase AWS Marketplace サブスクリプション (Coinbase のみ) — Coinbase を支払いプロバイダーとして使用する場合は、 AWS Marketplace の AgentCore Payments の Coinbase Wallets リストをサブスクライブする必要があります。このサブスクリプションでは、Coinbase ウェブサイトの Coinbase の料金に基づいて、Coinbase ウォレット使用料が毎月の AWS 請求書に統合されます。AWS 「 Marketplace での AgentCore 支払いの Coinbase ウォレットへのサブスクライブ」を参照してください。
-
Node.js 20+ がインストールされている (スキルは AgentCore CLI を自動的にインストールします)
-
有料エンドポイントにアクセスするエージェント — このスキルにより、エージェントは x402 で保護された APIsに対して料金を支払うことができます。テストには、サンドボックスエンドポイント を使用できますhttps://sandbox.node4all.com/v1/x402-test。
-
AI コーディングエージェントにインストールされている Agent Toolkit for AWS aws-agentsプラグイン:
例
- Claude Code
-
/plugin marketplace add aws/agent-toolkit-for-aws
/plugin install aws-agents@agent-toolkit-for-aws
- Codex
-
プラグインはマーケットプレイスマニフェストから自動的に検出されます。マーケットプレイスを追加するには、次のコマンドを実行します。
codex plugin marketplace add aws/agent-toolkit-for-aws
スキルの呼び出し
支払いスキルは、 エージェントツールキットのagents-buildスキルの一部です。 AWSこれをトリガーするには、AI コーディングエージェントでインテントを記述します。例えば、次のようになります。
-
aws-agents 「プラグインのagents-buildスキルを使用してエージェントに支払いを追加する」
-
aws-agents 「プラグインのagents-buildスキルを使用してエージェントのマイクロトランザクションを設定する」
-
aws-agents 「 プラグインのagents-buildスキルを使用して 402 Payment Required レスポンスを処理する必要があります」
-
agents-build 「スキルインaws-agentsプラグインを使用して x402 で保護された APIs」
スキルは支払い関連のインテントを検出し、支払いワークフローを自動的にロードします。
スキルの動作
スキルは、支払いインフラストラクチャをend-to-endプロビジョニングする自動プロセスを実行します。スキルはほとんどのステップを自動的に実行し、入力のために 2 回一時停止します。
-
AgentCore CLI を検証またはインストールし、プロジェクトをセットアップします
-
支払いマネージャーを作成します。
-
一時停止 — 支払いコネクタを追加します。クイック作成の Coinbase (推奨) の場合、Coinbase と AgentCore の支払いによって認証情報がプロビジョニングされます。入力するシークレットはありません。Coinbase 手動または Stripe (プライベート) の場合は、 agentcore add payment-connector を実行してプロバイダーシークレットを入力します。
-
リソースを AWS アカウントにデプロイします (agentcore deploy -y)
-
フレームワークに依存しない支払いツール (x402_payment_tool.py) をエージェントにワイヤリングする
-
SDK を介してユーザーごとのウォレット (計器) と予算制限付きセッションを作成します。
-
一時停止 — Circle 蛇口ウェブサイトのウォレット (委任) を承認し、テストネット USDC で資金を提供します。
-
環境変数を設定し、有料エンドポイントに対してテスト支払いを実行します
手動フロー (Coinbase 手動または Stripe Privy) を使用する場合は、コネクタを追加する前にプロバイダーから認証情報を取得します。Coinbase クイック作成では、これをスキップします。キーを貼り付ける代わりに、Coinbase を通じて を承認します。
実行が成功するとx402_fetch、エージェントが を呼び出し、 を検出し402、AgentCore SDK を介して支払いを決済し、有料コンテンツ200で再試行して を返します。
CLI、SDK、または Boto3 の使用
このセクションでは、AgentCore CLI、 AWS CLI、または AWS SDK (Boto3) を使用して、各ステップを手動で説明します。
前提条件
開始する前に、以下を確認してください。
必要なパッケージをインストールします。
pip install boto3 bedrock-agentcore[strands-agents] strands-agents strands-agents-tools
認証情報が設定されていることを確認します。
aws sts get-caller-identity
AgentCore CLI v0.19.0 以降がインストールされている場合は、ステップ 2、3、5、6 で SDK の代わりに CLI コマンドを使用できます。以下の各ステップは、両方のオプションを示しています。
ステップ 1: 支払いプロバイダーの認証情報を取得する (手動フロー)
ステップ 1 と 2 は、Coinbase (手動) または Stripe (プライベート) の手動認証情報フローに適用されます。
Coinbase のクイック作成の使用 (推奨)。ステップ 1 と 2 をスキップし、ステップ 3 を参照してください。AgentCore 支払いは、Coinbase を通じて認可した後、Coinbase 認証情報をプロビジョニングします。キーを取得または保存することはありません。
AgentCore 支払いは、ウォレットオペレーションのために外部支払いプロバイダーに接続します。先に進む前に、サポートされているプロバイダーのいずれかの認証情報が必要です。
例
- Coinbase CDP
-
-
Coinbase 開発者プラットフォームにログインし、アカウントを作成またはログインします。プロジェクトを選択します。
-
API キーダッシュボードに移動し、シークレット API キーの作成を選択し、API キー ID と API キーシークレットを書き留めます。プロジェクトに戻ります。
-
Products > Wallets > Non-custodial Wallet > Security で、Generate new under Wallet secret を選択し、Wallet Secret を書き留めます。
-
Products > Wallets > Non-custodial Wallet > Security で、委任署名を有効にします。
次のステップでは、これらの値を使用します。
| [認証情報] |
説明 |
|
API Key ID
|
CDP プロジェクトのパブリック識別子
|
|
API Key Secret
|
API リクエストに署名するためのプライベートシークレット
|
|
Wallet Secret
|
暗号化ウォレットオペレーション (アドレスの取得、トランザクションの署名) のシークレット
|
- Privy
-
-
dashboard.privy.io で専用の Privy アプリを作成します。他の目的を果たすアプリは再利用しないでください。
-
アプリ設定からアプリ ID とアプリシークレットをコピーします。
-
ウォレットインフラストラクチャ > 認可に移動し、新しいキーを選択して P-256 キーペアを生成します。
次のステップでは、次の 4 つの値を使用します。
| [認証情報] |
説明 |
|
App ID
|
Privy アプリケーション識別子
|
|
App Secret
|
server-to-server基本認証のシークレット
|
|
Authorization ID
|
P-256 キーペアからのパブリックキー識別子
|
|
Authorization Private Key
|
P-256 キーペアからのプライベートキー
|
セキュリティのベストプラクティスや認証情報のローテーションなどの詳細については、「前提条件」を参照してください。
ステップ 2: AgentCore Identity に認証情報を保存する (手動フロー)
支払いプロバイダーの認証情報を PaymentCredentialProvider として保存します。これにより、アプリケーションコードではなく AWS Secrets Manager にシークレットが保持されます。Coinbase クイック作成を使用している場合は、このステップをスキップします。AgentCore 支払いは、ステップ 3 で認証情報プロバイダーを作成して保存します。
例
- Coinbase CDP
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
credential_provider = client.create_payment_credential_provider(
name="my-coinbase-credentials",
credentialProviderVendor="CoinbaseCDP",
coinbaseCdpConfig={
"apiKeyId": "<YOUR_CDP_API_KEY_ID>",
"apiKeySecret": "<YOUR_CDP_API_KEY_SECRET>",
"walletSecret": "<YOUR_CDP_WALLET_SECRET>"
}
)
CREDENTIAL_PROVIDER_ARN = credential_provider["credentialProviderArn"]
print(f"Credential provider created: {CREDENTIAL_PROVIDER_ARN}")
- Privy
-
import boto3
client = boto3.client("bedrock-agentcore-control", region_name="us-west-2")
credential_provider = client.create_payment_credential_provider(
name="my-privy-credentials",
credentialProviderVendor="StripePrivy",
stripePrivyConfig={
"appId": "<YOUR_PRIVY_APP_ID>",
"appSecret": "<YOUR_PRIVY_APP_SECRET>",
"authorizationId": "<YOUR_PRIVY_AUTHORIZATION_ID>",
"authorizationPrivateKey": "<YOUR_PRIVY_PRIVATE_KEY_BASE64>"
}
)
CREDENTIAL_PROVIDER_ARN = credential_provider["credentialProviderArn"]
print(f"Credential provider created: {CREDENTIAL_PROVIDER_ARN}")
リクエストとレスポンスの完全なスキーマについては、 API リファレンスのCreatePaymentCredentialProvider」を参照してください。
CLI の代替方法: 認証情報を保存する
AgentCore CLI では、支払いコネクタを追加すると認証情報ストレージが自動的に実行されます (ステップ 3)。CLI パスを使用する場合は、このステップをスキップします。
ステップ 3: Payment Manager とコネクタを作成する
Payment Manager は、支払いオペレーションを調整する最上位のリソースです。Payment Connector は、マネージャーを支払いプロバイダーの認証情報にリンクします。これらのリソースを作成する前に、AgentCore 支払いの IAM ロールの説明に従って、必要な IAM ロールを設定します。
まず、 Payment Manager を作成します (すべてのプロバイダーに共通)。
例
- Console
-
-
Amazon Bedrock AgentCore コンソールを開きます。
-
ナビゲーションペインのビルドで、支払いを選択します。
-
Payment Manager の作成を選択し、名前を入力し、アクセス許可 で新しいサービスロールの作成と使用 (または既存のロールの選択) を選択します。
-
インバウンド認証で、IAM ユーザー名を使用するを選択します。
-
Payment Manager の作成を選択します。コネクタは、以下のプロバイダーセクションに追加します。
JWT 認可やカスタムクレームを含むコンソールの詳細なチュートリアルについては、「Payment Manager と Connector の作成」を参照してください。
- AgentCore CLI
-
agentcore add payment-manager \
--name my-payment-manager \
--auto-payment \
--default-spend-limit 5.00
以下のプロバイダーセクションにコネクタを追加し、 を実行しますagentcore deploy。
- AgentCore SDK
-
from bedrock_agentcore.payments.client import PaymentClient
payment_client = PaymentClient(region_name="us-west-2")
manager = payment_client.create_payment_manager(
name="my-first-payment-manager",
authorizer_type="AWS_IAM",
role_arn="<YOUR_SERVICE_ROLE_ARN>",
)
PAYMENT_MANAGER_ID = manager["paymentManagerId"]
PAYMENT_MANAGER_ID で payment_clientを使用して、以下のプロバイダーセクションでコネクタを作成します。
- AWS CLI
-
aws bedrock-agentcore-control create-payment-manager \
--name "my-first-payment-manager" \
--authorizer-type AWS_IAM \
--role-arn "<YOUR_SERVICE_ROLE_ARN>" \
--region us-west-2
マネージャーが に到達するのを待ってからREADY、以下のプロバイダーセクションでコネクタを作成します。
- AWS SDK
-
import time
manager = client.create_payment_manager(
name="my-first-payment-manager",
authorizerType="AWS_IAM",
roleArn="<YOUR_SERVICE_ROLE_ARN>"
)
PAYMENT_MANAGER_ID = manager["paymentManagerId"]
while client.get_payment_manager(paymentManagerId=PAYMENT_MANAGER_ID)["status"] != "READY":
time.sleep(5)
次に、プロバイダーの Payment Connector を作成します。Coinbase セクション (クイック作成または手動) または Stripe (プライベート) セクションを選択します。
Coinbase — クイック作成 (推奨)
クイック作成では、Coinbase 認証情報を取得または保存しません。コンソールで、Coinbase を使用したクイック作成を選択してこれを完了します。 AWS CLI、 AWS SDK、AgentCore CLI、または AgentCore SDK を使用して、空の認証情報リストprovisionMode=QUICK_CREATEで を渡します。コネクタは で始まりPENDING_AUTHENTICATION、 を返しますauthorizationUrl。ブラウザauthorizationUrlで返された を開きます。Coinbase を通じて を承認すると、AgentCore 支払いは認証情報をプロビジョニングし、コネクタを に移動しますREADY。
例
- Console
-
-
Payment connector セクションで、Add outbound auth > Create payment auth を選択し、for Payment provider choose Coinbase を選択します。
-
クイック作成設定 - 推奨を選択し、支払い認証の作成 を選択します。
-
Coinbase ウィンドウが開きます — サインインするか、サインアップして Coinbase CDP アカウントを承認 (リンク) します。
-
AgentCore 支払いは、Coinbase CDP API キーとウォレットシークレットをプロビジョニングし、自動的に保存します。コネクタは から PENDING_AUTHENTICATION に移動しますREADY。
- AgentCore CLI
-
agentcore add payment-connector \
--manager my-payment-manager \
--name my-coinbase-connector \
--provider CoinbaseCDP \
--provision-mode QUICK_CREATE
agentcore deploy
CLI は Coinbase 認可フローを開きます。認可すると、サービスは認証情報をプロビジョニングし、コネクタは に到達しますREADY。
- AgentCore SDK
-
connector = payment_client.create_payment_connector(
payment_manager_id=PAYMENT_MANAGER_ID,
name="my-coinbase-connector",
connector_type="CoinbaseCDP",
credential_provider_configurations=[],
provision_mode="QUICK_CREATE",
)
# Open connector["authorizationUrl"], authorize through Coinbase,
# then poll get_payment_connector until status == "READY".
- AWS CLI
-
aws bedrock-agentcore-control create-payment-connector \
--payment-manager-id "<PAYMENT_MANAGER_ID>" \
--name "my-coinbase-connector" \
--type CoinbaseCDP \
--credential-provider-configurations '[]' \
--provision-mode QUICK_CREATE \
--region us-west-2
レスポンスには、 status: PENDING_AUTHENTICATIONと が含まれますauthorizationUrl。ブラウザで URL を開き、Coinbase 認可を完了してから、コネクタが になるまでポーリングしますREADY。
aws bedrock-agentcore-control get-payment-connector \
--payment-manager-id "<PAYMENT_MANAGER_ID>" \
--payment-connector-id "<PAYMENT_CONNECTOR_ID>" \
--region us-west-2
- AWS SDK
-
connector = client.create_payment_connector(
paymentManagerId=PAYMENT_MANAGER_ID,
name="my-coinbase-connector",
type="CoinbaseCDP",
credentialProviderConfigurations=[],
provisionMode="QUICK_CREATE",
)
PAYMENT_CONNECTOR_ID = connector["paymentConnectorId"]
print(connector["status"], connector.get("authorizationUrl"))
# PENDING_AUTHENTICATION https://...
# Open the authorizationUrl, authorize, then poll get_payment_connector until READY.
Coinbase — 手動
自分で生成した Coinbase CDP 認証情報を使用します (ステップ 1~2)。認証情報プロバイダーを作成し、その ARN を参照するコネクタを作成します。コンソールまたは AgentCore CLI の手動チュートリアルについては、「 Payment Manager とコネクタの作成」を参照してください。
例
- AgentCore CLI
-
agentcore add payment-connector \
--manager <manager-name> \
--name my-coinbase-connector \
--provider CoinbaseCDP \
--api-key-id <YOUR_API_KEY_ID> \
--api-key-secret <YOUR_API_KEY_SECRET> \
--wallet-secret <YOUR_WALLET_SECRET>
agentcore deploy
CLI は AgentCore Identity に認証情報を保存し、 の実行時にコネクタを作成しますagentcore deploy。
- AgentCore SDK
-
connector = payment_client.create_payment_connector(
payment_manager_id=PAYMENT_MANAGER_ID,
name="my-coinbase-connector",
connector_type="CoinbaseCDP",
credential_provider_configurations=[
{"coinbaseCDP": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}}
],
)
- AWS CLI
-
aws bedrock-agentcore-control create-payment-connector \
--payment-manager-id "<PAYMENT_MANAGER_ID>" \
--name "my-coinbase-connector" \
--type CoinbaseCDP \
--credential-provider-configurations '[{"coinbaseCDP":{"credentialProviderArn":"<CREDENTIAL_PROVIDER_ARN>"}}]' \
--region us-west-2
- AWS SDK
-
connector = client.create_payment_connector(
paymentManagerId=PAYMENT_MANAGER_ID,
name="my-coinbase-connector",
type="CoinbaseCDP",
credentialProviderConfigurations=[{"coinbaseCDP": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}}],
)
Stripe (プライベート) — 手動
Stripe (Privy) は手動フローのみを使用します。Privy 認証情報から認証情報プロバイダーを作成し (ステップ 1~2)、その ARN を参照するコネクタを作成します。コンソールまたは AgentCore CLI の手動チュートリアルについては、「 Payment Manager とコネクタの作成」を参照してください。
例
- AgentCore CLI
-
agentcore add payment-connector \
--manager <manager-name> \
--name my-privy-connector \
--provider StripePrivy \
--app-id <YOUR_APP_ID> \
--app-secret <YOUR_APP_SECRET> \
--authorization-id <YOUR_AUTHORIZATION_ID> \
--authorization-private-key <YOUR_PRIVATE_KEY_BASE64>
agentcore deploy
CLI は AgentCore Identity に認証情報を保存し、 の実行時にコネクタを作成しますagentcore deploy。
- AgentCore SDK
-
connector = payment_client.create_payment_connector(
payment_manager_id=PAYMENT_MANAGER_ID,
name="my-privy-connector",
connector_type="StripePrivy",
credential_provider_configurations=[
{"stripePrivy": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}}
],
)
- AWS CLI
-
aws bedrock-agentcore-control create-payment-connector \
--payment-manager-id "<PAYMENT_MANAGER_ID>" \
--name "my-privy-connector" \
--type StripePrivy \
--credential-provider-configurations '[{"stripePrivy":{"credentialProviderArn":"<CREDENTIAL_PROVIDER_ARN>"}}]' \
--region us-west-2
- AWS SDK
-
connector = client.create_payment_connector(
paymentManagerId=PAYMENT_MANAGER_ID,
name="my-privy-connector",
type="StripePrivy",
credentialProviderConfigurations=[{"stripePrivy": {"credentialProviderArn": CREDENTIAL_PROVIDER_ARN}}],
)
サービスロールがない場合は、サービスロールの作成手順について AgentCore 支払いの IAM ロールを参照してください。コンソールは、ユーザーに代わってロールを作成することもできます。リクエストとレスポンスの完全なスキーマについては、Amazon Bedrock AgentCore Control API リファレンスのCreatePaymentManager」とCreatePaymentConnector」を参照してください。
ステップ 4: 支払い手段を作成する
支払い手段は、エージェントがユーザーに代わってマーチャントに支払うために使用する埋め込み暗号ウォレットです。各機器は、特定のブロックチェーンネットワークに関連付けられます。
例
- AgentCore SDK
-
from bedrock_agentcore.payments import PaymentManager
manager = PaymentManager(
payment_manager_arn=PAYMENT_MANAGER_ARN,
region_name="us-west-2"
)
instrument = manager.create_payment_instrument(
user_id="test-user-123",
payment_connector_id=PAYMENT_CONNECTOR_ID,
payment_instrument_type="EMBEDDED_CRYPTO_WALLET",
payment_instrument_details={
"embeddedCryptoWallet": {
"network": "ETHEREUM",
"linkedAccounts": [{"email": {"emailAddress": "your-email@example.com"}}]
}
},
)
INSTRUMENT_ID = instrument["paymentInstrumentId"]
REDIRECT_URL = instrument["paymentInstrumentDetails"]["redirectUrl"]
print(f"Instrument created: {INSTRUMENT_ID}")
print(f"Fund the wallet at: {REDIRECT_URL}")
- AWS CLI
-
aws bedrock-agentcore create-payment-instrument \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--payment-connector-id "$PAYMENT_CONNECTOR_ID" \
--user-id "test-user-123" \
--payment-instrument-type "EMBEDDED_CRYPTO_WALLET" \
--payment-instrument-details '{
"embeddedCryptoWallet": {
"network": "ETHEREUM",
"linkedAccounts": [{"email": {"emailAddress": "your-email@example.com"}}]
}
}' \
--client-token "$(uuidgen)" \
--region us-west-2
レスポンスredirectUrlから paymentInstrumentIdと を保存します。
- AWS SDK
-
import uuid
dp_client = boto3.client("bedrock-agentcore", region_name="us-west-2",
endpoint_url="https://bedrock-agentcore.us-west-2.amazonaws.com")
instrument = dp_client.create_payment_instrument(
userId="test-user-123",
paymentManagerArn=PAYMENT_MANAGER_ARN,
paymentConnectorId=PAYMENT_CONNECTOR_ID,
paymentInstrumentType="EMBEDDED_CRYPTO_WALLET",
paymentInstrumentDetails={
"embeddedCryptoWallet": {
"network": "ETHEREUM",
"linkedAccounts": [{"email": {"emailAddress": "your-email@example.com"}}]
}
},
clientToken=str(uuid.uuid4()),
)
INSTRUMENT_ID = instrument["paymentInstrumentId"]
REDIRECT_URL = instrument["paymentInstrumentDetails"]["redirectUrl"]
print(f"Instrument created: {INSTRUMENT_ID}")
print(f"Fund the wallet at: {REDIRECT_URL}")
完全なリクエストとレスポンスのスキーマについては、 API リファレンスのCreatePaymentInstrument」を参照してください。
ウォレットに資金を提供し、アクセス許可を付与する
エージェントが取引する前に、エンドユーザーはウォレットに資金を提供し、署名権限を付与する必要があります。ブラウザで上記のレスポンスredirectUrlから を開きます。ウォレットハブから、ユーザーは次のことができます。
テスト環境の場合は、ウォレットに testnet USDC を注入します。
資金調達後、 になるまで計測ステータスをポーリングしますACTIVE。
例
- AgentCore SDK
-
instrument = manager.get_payment_instrument(
user_id="test-user-123",
payment_instrument_id=INSTRUMENT_ID
)
print(f"Status: {instrument['status']}")
- AWS CLI
-
aws bedrock-agentcore get-payment-instrument \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--payment-instrument-id "$INSTRUMENT_ID" \
--region us-west-2
- AWS SDK
-
while True:
inst_status = dp_client.get_payment_instrument(
paymentManagerArn=PAYMENT_MANAGER_ARN,
paymentInstrumentId=INSTRUMENT_ID
)
if inst_status["status"] == "ACTIVE":
print("Instrument is active and funded.")
break
print(f"Instrument status: {inst_status['status']}... waiting for funding")
time.sleep(10)
プロバイダー別の資金フローの詳細については、「Funding the wallet」を参照してください。
ステップ 5: 支払いセッションを作成する
支払いセッションは、オプションの支出制限がある時間制限付きコンテキストです。セッションの有効期限が切れるか、予算が枯渇した場合、エージェントはそのセッション内でそれ以上の支払いを行うことはできません。
例
- AgentCore CLI
-
CLI を使用する場合、セッションを手動で作成する必要はありません。--auto-session に渡すagentcore invokeと、 CLI は支払いマネージャーで設定したデフォルトの使用制限でセッションを作成または再利用します。
agentcore invoke \
--prompt "your prompt here" \
--payment-instrument-id <INSTRUMENT_ID> \
--auto-session \
--payment-user-id test-user-123
SDK で作成した特定のセッションを使用するには、 --payment-session-id の代わりに を渡します--auto-session。
- AgentCore SDK
-
from bedrock_agentcore.payments import PaymentManager
manager = PaymentManager(
payment_manager_arn=PAYMENT_MANAGER_ARN,
region_name="us-west-2"
)
session = manager.create_payment_session(
user_id="test-user-123",
limits={"maxSpendAmount": {"value": "5.00", "currency": "USD"}},
expiry_time_in_minutes=60
)
SESSION_ID = session["paymentSessionId"]
print(f"Session created: {SESSION_ID} (expires in 60 minutes, $5.00 limit)")
- AWS CLI
-
aws bedrock-agentcore create-payment-session \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--user-id "test-user-123" \
--expiry-time-in-minutes 60 \
--limits '{"maxSpendAmount": {"value": "5.00", "currency": "USD"}}' \
--client-token "$(uuidgen)" \
--region us-west-2
- AWS SDK
-
session = dp_client.create_payment_session(
userId="test-user-123",
paymentManagerArn=PAYMENT_MANAGER_ARN,
expiryTimeInMinutes=60,
limits={"maxSpendAmount": {"value": "5.00", "currency": "USD"}},
clientToken=str(uuid.uuid4()),
)
SESSION_ID = session["paymentSessionId"]
print(f"Session created: {SESSION_ID} (expires in 60 minutes, $5.00 limit)")
完全なリクエストとレスポンスのスキーマについては、 API リファレンスのCreatePaymentSession」を参照してください。
ステップ 6: Strands エージェントで支払いを処理する
すべてのリソースを配置したら、x402 支払いを自動的に処理する Strands エージェントを作成します。エージェントが有料エンドポイントを呼び出して HTTP 402 レスポンスを受信すると、支払いプラグインはトランザクションに署名し、リクエストを再試行します。
例
- AgentCore CLI
-
支払いコンテキストを使用してデプロイされたエージェントを呼び出します。CLI は実行時に支払い手段とセッションをエージェントに渡し、エージェントの x402 インターセプターは自動的に支払いを処理します。
agentcore invoke \
--prompt "Access the premium endpoint at https://example-x402-merchant.com/paid-api" \
--payment-instrument-id <INSTRUMENT_ID> \
--auto-session \
--payment-user-id test-user-123
自動作成の代わりに明示的なセッションを渡すには:
agentcore invoke \
--prompt "Access the premium endpoint at https://example-x402-merchant.com/paid-api" \
--payment-instrument-id <INSTRUMENT_ID> \
--payment-session-id <SESSION_ID> \
--payment-user-id test-user-123
- AgentCore SDK
-
クラスを使用してPaymentManager、HTTP 402 レスポンスを受け取ったときに支払いヘッダーを生成します。
import uuid
from bedrock_agentcore.payments import PaymentManager
manager = PaymentManager(
payment_manager_arn=PAYMENT_MANAGER_ARN,
region_name="us-west-2"
)
# When you receive a 402 response, generate payment proof
payment_required_request = {
"statusCode": 402,
"headers": payment_required["headers"],
"body": payment_required["body"],
}
payment_proof_headers = manager.generate_payment_header(
user_id="test-user-123",
payment_instrument_id=INSTRUMENT_ID,
payment_session_id=SESSION_ID,
payment_required_request=payment_required_request,
client_token=str(uuid.uuid4()),
)
payment_proof_headers には、支払い証明ヘッダーが含まれています。有料エンドポイントへのリクエストを再試行する場合は、このヘッダーを含めます。
- AWS CLI
-
x402 ペイロードを使用してprocess-payment直接 を呼び出します (自分で支払いオーケストレーションを処理する場合に使用されます)。
aws bedrock-agentcore process-payment \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--payment-session-id "$SESSION_ID" \
--payment-instrument-id "$INSTRUMENT_ID" \
--payment-type "CRYPTO_X402" \
--payment-input '{
"cryptoX402": {
"version": "2",
"payload": {
"scheme": "exact",
"network": "eip155:84532",
"amount": "100000",
"asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
"payTo": "0xMERCHANT_ADDRESS",
"maxTimeoutSeconds": 300,
"extra": {"name": "USDC", "version": "2"}
}
}
}' \
--client-token "$(uuidgen)" \
--region us-west-2
完全なリクエストとレスポンスのスキーマについては、 API リファレンスのProcessPayment」を参照してください。
- AWS SDK
-
from strands import Agent
from strands_tools import http_request
from bedrock_agentcore.payments.integrations.config import AgentCorePaymentsPluginConfig
from bedrock_agentcore.payments.integrations.strands.plugin import AgentCorePaymentsPlugin
config = AgentCorePaymentsPluginConfig(
payment_manager_arn=PAYMENT_MANAGER_ARN,
user_id="test-user-123",
payment_instrument_id=INSTRUMENT_ID,
payment_session_id=SESSION_ID,
region="us-west-2",
)
plugin = AgentCorePaymentsPlugin(config=config)
agent = Agent(
system_prompt="You are a helpful assistant that can access paid APIs.",
tools=[http_request],
plugins=[plugin],
)
# The agent handles 402 responses automatically
response = agent("Access the premium endpoint at https://example-x402-merchant.com/paid-api")
print(response)
基盤となる API コールの完全なリクエストとレスポンスのスキーマについては、 API リファレンスのProcessPayment」を参照してください。
支払いを確認する
エージェントが支払いを処理したら、セッションをチェックしてトランザクションが記録されたことを確認します。
例
- AgentCore SDK
-
session = manager.get_payment_session(
user_id="test-user-123",
payment_session_id=SESSION_ID
)
print(f"Status: {session['status']}, Remaining: {session['remainingAmount']}")
計測バランスを確認することもできます。
balance = manager.get_payment_instrument_balance(
user_id="test-user-123",
payment_instrument_id=INSTRUMENT_ID
)
print(f"Remaining balance: {balance['amount']} {balance['currency']}")
- AWS CLI
-
aws bedrock-agentcore get-payment-session \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--payment-session-id "$SESSION_ID" \
--region us-west-2
aws bedrock-agentcore get-payment-instrument-balance \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--payment-instrument-id "$INSTRUMENT_ID" \
--region us-west-2
- AWS SDK
-
session_status = dp_client.get_payment_session(
paymentManagerArn=PAYMENT_MANAGER_ARN,
paymentSessionId=SESSION_ID
)
print(f"Session status: {session_status['status']}")
print(f"Amount spent: {session_status.get('spentAmount', '0.00')} USD")
計測バランスを確認することもできます。
balance = dp_client.get_payment_instrument_balance(
paymentManagerArn=PAYMENT_MANAGER_ARN,
paymentInstrumentId=INSTRUMENT_ID
)
print(f"Remaining balance: {balance['amount']} {balance['currency']}")
トラブルシューティング
スキルベースと手動の両方の設定パスには、次の問題が適用されます。
| 問題 |
ソリューション |
|
Payment Manager が CREATING でスタックする
|
最大 2 分待ちます。CREATE_FAILED に移動する場合は、サービスロールの ARN とアクセス許可が正しいことを確認します。
|
|
PaymentInstrument not active」
|
エンドユーザーは、エージェントが取引する前に、ウォレットに資金を提供し、リダイレクト URL を介して署名アクセス許可を付与する必要があります。
|
|
「セッションの有効期限切れまたは予算超過」
|
有効期限が長いか、使用制限がより高い新しい支払いセッションを作成します。
|
|
CredentialProvider not found」
|
認証情報プロバイダーの ARN がステップ 2 で作成したものと一致していることを確認します。リージョンがすべての呼び出しで一貫していることを確認します。
|
|
ProcessPayment が FAILED を返す
|
ウォレットに取引金額とガス料金に十分な USDC 残高があることを確認します。
|
クリーンアップ
このチュートリアルで作成したリソースを削除します。
例
- AgentCore CLI
-
agentcore remove payment-connector --manager my-payment-manager --name my-coinbase-connector --yes
agentcore remove payment-manager --name my-payment-manager --yes
agentcore deploy
remove コマンドはローカル設定を更新します。フォローアップにより、アカウントの支払いインフラストラクチャがdeploy破棄されます。
- AgentCore SDK
-
from bedrock_agentcore.payments.client import PaymentClient
payment_client = PaymentClient(region_name="us-west-2")
payment_client.delete_payment_manager(
payment_manager_id="<paymentManagerId>"
)
print("Payment Manager deleted.")
- AWS CLI
-
aws bedrock-agentcore delete-payment-instrument \
--payment-manager-arn "$PAYMENT_MANAGER_ARN" \
--payment-instrument-id "$INSTRUMENT_ID" \
--region us-west-2
aws bedrock-agentcore-control delete-payment-connector \
--payment-manager-id "$PAYMENT_MANAGER_ID" \
--payment-connector-id "$PAYMENT_CONNECTOR_ID" \
--region us-west-2
aws bedrock-agentcore-control delete-payment-manager \
--payment-manager-id "$PAYMENT_MANAGER_ID" \
--region us-west-2
- AWS SDK
-
# Delete payment instrument
dp_client.delete_payment_instrument(
paymentManagerArn=PAYMENT_MANAGER_ARN,
paymentInstrumentId=INSTRUMENT_ID
)
# Delete payment connector
client.delete_payment_connector(
paymentManagerArn=PAYMENT_MANAGER_ARN,
paymentConnectorId=PAYMENT_CONNECTOR_ID
)
# Delete payment manager
client.delete_payment_manager(
paymentManagerArn=PAYMENT_MANAGER_ARN
)
print("All payment resources deleted.")
構築したもの
このチュートリアルでは、以下を作成しました。
-
PaymentCredentialProvider — AgentCore Identity に保存されている支払いプロバイダー認証情報
-
PaymentManager — 支払いオペレーションを調整する最上位のリソース
-
PaymentConnector — マネージャーと外部支払いプロバイダーの統合
-
PaymentInstrument — エンドユーザーが資金を提供し、承認した埋め込み暗号ウォレット
-
PaymentSession — 時間制限付き、予算制限付きの支払いコンテキスト
-
ストランドエージェント — x402 支払いを自動的に処理する AI エージェント
次の手順