私が特に必要としたカバレッジはこれでした。

Microsoft Foundry (master)
    ├── MCP ──> live exchange-rate baseline
    └── A2A ──> Amazon Bedrock AgentCore (remote specialist)

Enter fullscreen mode Exit fullscreen mode

2026年7月30日、その方向性がエンドツーエンドで動作しました。

これが重要だったのは、すでに逆のトポロジー(AgentCore がコーディネーター、Foundry がリモート)でテスト済みだったためです。片方向だけのクロスクラウド主張は説得力が弱いためです。この実行により、Foundry がリクエストを所有し、ローカルの MCP ベースラインを実行し、AgentCore A2A エージェントを呼び出し、決定論的検証を適用できることが証明されました。

コードとサニタイズされた証拠は xbill9/foundry-bedrock-a2a-currency にあります。

実際に合格した内容

入力は 100 USD → EUR でした。Foundry ホストのコーディネーターを、Responses エンドポイント経由で 3 つのベンチマークモードすべてで呼び出しました。

Mode Path Observed result Adapter time
mcp_only Foundry → local MCP 87.13800 EUR 359 ms
a2a_only Foundry → A2A → AgentCore 87.138 EUR 25,105 ms
verified both paths concurrently exact agreement 28,163 ms

verified モードの結果は次のとおりでした。

{
  "relative_difference": "0",
  "agreed": true,
  "failures": {}
}

Enter fullscreen mode Exit fullscreen mode

これは 1 回のスモークケースであり、レイテンシ分布ではなく、完成したベンチマークマトリックスでもありません。有用な結論はより狭いものです:Foundry マスターのクラウド境界が、認証、ディスカバリ、呼び出し、決定論的比較を含めて動作することです。

リポジトリは 66 の決定論的テストもパスしており、外部依存関係のない 1 つのオプショナル統合テストはスキップされています。

モデルは計算を行わない

通貨変換は相互運用性を容易に偽造できます。すべての見積もりには金額、レート、換算金額、観測時刻、ソース、アダプターレイテンシが含まれます。金額とレートには Python の Decimal を使用します。

合意をチェックするのはコーディネーターであり、LLM ではありません。

difference = abs(primary.converted_amount - verifier.converted_amount)
relative_difference = difference / abs(primary.converted_amount)
agreed = relative_difference <= Decimal("0.005")

Enter fullscreen mode Exit fullscreen mode

モデルは意図を処理し、1 つのツール呼び出しを選択します。フレームワーク非依存のコードが算術、並行性、タイムアウトポリシー、障害報告を担当します。

フリップを耐えた境界

安定したアプリケーションは 2 つのインターフェースに依存します。

  • MCP 対応の ExchangeRateTool;
  • A2A 対応の RemoteCurrencyAgent.

Microsoft Agent Framework と Foundry ホスティングはこれらのインターフェースの外側に位置します。Strands と AgentCore は反対側で外側に位置します。クラウドを入れ替えても、ドメインサービスを書き直す必要はありませんでした。

これは 2 つの SDK を 1 つのプロセスに入れることよりも価値があります。各クラウドは独立してデプロイ可能で、ベンチマークは MCP-only、A2A-only、verified 実行を依然として比較できます。

認証が本当のクロスクラウド問題だった

AgentCore のデフォルトランタイム認可は IAM/SigV4 です。これは AWS 呼び出し元には適切ですが、Foundry ホストのコンテナは自動的に AWS 認証情報を持ちません。

このテストでは、AgentCore にカスタム JWT オーソライザーを構成し、Cognito の machine-to-machine クライアントを使用しました。

Foundry container
    ├── client_credentials ──> Cognito token endpoint
    └── Bearer JWT ──────────> AgentCore A2A runtime

Enter fullscreen mode Exit fullscreen mode

コーディネーターの A2A アダプターは現在 OAuth クライアント認証情報をサポートし、期限切れ直前までトークンをキャッシュし、他のピアプロファイル用に静的ベアラーを保持します。AgentCore オーソライザーは発行者、クライアント、必要な currencybench/invoke スコープを検証します。

トークンはドメインレイヤーに関与しません。

グリーンランまでに壊れたもの

成功した図はほとんどの作業を隠しています。これらは観測された障害であり、仮説的なリスクではありません。

1. AgentCore の A2A サーバーとクライアントで SDK 世代が異なっていた

コーディネータークライアントは A2A 1.x を使用します。AgentCore の A2A エクストラは現在、デプロイされたサーバーバンドルで 0.3 ラインを必要とします。両方を同じバンドルにインストールすると、満たせない依存関係グラフが生じました。

修正はアーキテクチャ的でした:AgentCore アプリケーションバンドルを互換性のある A2A SDK に固定し、Foundry 側のクライアントを分離して保持しました。Python パッケージがバージョンを共有していなくても、ネットワークプロトコルは相互運用できました。

2. IAM 認可がクラウド境界を越えなかった

直接の AWS CLI 呼び出しは動作しましたが、Foundry コンテナは AWS リクエストに署名できませんでした。ランタイムをカスタム JWT 認可に切り替え、OAuth アダプターを追加することで、AWS 認証情報を埋め込むことなくリモートを呼び出し可能にしました。

3. デフォルトの 10 秒タイムアウトは誤った自信だった

最初のホスト a2a_only 呼び出しはクリーンに失敗しました。

{
  "failures": {
    "a2a": "timeout: adapter timed out"
  },
  "elapsed_ms": 10010
}

Enter fullscreen mode Exit fullscreen mode

直接のリモート呼び出しはすでに約 25 秒かかっていました。アダプターは動作していましたが、ベンチマークポリシーはコールドクロスクラウドパスには厳しすぎました。ホストのタイムアウトは現在 60 秒です。次の A2A-only 呼び出しは 25.1 秒で完了しました。

4. Foundry のソースビルドがイメージを見つけられなかった

hosted-agent のリモートビルドは繰り返し ImageError: Container image not found で終了しました。Azure Container Registry の事前ビルド済み、ダイジェスト固定イメージに切り替えました。

次の障害はより正確でした:レジストリ認証です。3 つのアイデンティティが見えました—Foundry アカウント、プロジェクト、agent ごとのランタイムアイデンティティです。イメージプルは プロジェクトマネージドアイデンティティ を使用します。他の 2 つに AcrPull を付与しても役に立ちませんでした。

次の手順でデプロイがアクティブになりました。

  • ACR 認証を ARM として有効化;
  • プロジェクトアイデンティティにリポジトリリーダー/プルアクセスを付与;
  • 同じダイジェスト固定イメージを再デプロイ。

5. Azure リソース状態と RBAC の両方に記憶があった

ソフト削除された Foundry アカウントがパージされるまで再作成をブロックしました。プロジェクトのロール割り当ても伝播に時間がかかりました。これらはデプロイプレーンの事実であり、A2A がランタイムで動作するかどうかとは異なります。

スモーク結果

verified モードで、Foundry は両方のアダプターを開始しました。MCP レッグはレート 0.87138 を返し、AgentCore スペシャリストはレート 0.87138 を返しました。決定論的コードは相対差をゼロと計算し、見積もりに合意マークを付けました。

MCP 結果には stale-observation 警告も含まれていました。コーディネーターはそれを保持し、モデルが滑らかにするのを防ぎました。

ホストの応答はエンドツーエンドで約 45 秒かかり、測定されたアダプター作業は 28.2 秒でした。このギャップにはモデルとホスト応答のオーバーヘッドが含まれます。1 回の観測では、どちらの数値もベンチマークと呼ぶのは無責任です。

これが証明すること—証明しないこと

観測されたこと:

  • Foundry がマスターコーディネーターをホストした。
  • Foundry の MCP-only パスが完了した。
  • Foundry が OAuth トークンを取得し、A2A で AgentCore を呼び出した。
  • AgentCore が構造化された通貨見積もりを返した。
  • verified モードが両方のパスを実行し、正確な合意を報告した。
  • 3 モードスモークがタイムアウト修正後にアダプター障害なしで完了した。

まだ確立されていないこと:

  • ウォームおよびコールドレイテンシ分布;
  • スロットリングまたはトークン期限切れ時の動作;
  • 完全な多通貨マトリックス;
  • 本番シークレットローテーションと可用性制御;
  • いずれかのフレームワークまたはクラウドの優位性。

この区別がプロジェクトのポイントです。結果はカバレッジであり、勝利のラップではありません:Microsoft Foundry がメインクラウドとして動作し、Amazon Bedrock AgentCore が認証済みリモート A2A スペシャリストとして動作します。