私が特に必要としたカバレッジはこれでした。
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 スペシャリストとして動作します。
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.