Azure AI FoundryのHosted Agentデプロイとは?2026年5月更新の変更点と確認ポイント

Azure AI Foundryで独自コードのAIエージェントを運用したい場合、今回確認すべきポイントは明確です。Deploy a hosted agent - Microsoft Foundry は、コンテナー化したエージェントコードを Foundry Agent Service にデプロイし、Python SDKまたはREST APIからバージョン作成・状態確認・呼び出しまで管理するための公式手順です。

結論として、管理者は RBAC、エージェントID、Azure Container Registry、ネットワーク制約、監視、コスト管理 を先に確認する必要があります。開発者は linux/amd64イメージ、Responses/Invocationsプロトコル、環境変数、バージョン管理、active 状態確認 を押さえてから展開するのが安全です。本記事は、2026年5月9日時点で確認した公式情報をもとに整理しています。なお、対象のMicrosoft Learnページ上では最終更新日が2026-05-08と表示されています。(Microsoft Learn)

目次

Azure AI FoundryのHosted Agentデプロイで何が変わるのか

Azure AI FoundryのHosted Agentは、プロンプトだけで定義するエージェントではなく、開発者が書いたコードをコンテナーとして実行する方式です。エージェントコードをAzure Container Registryへプッシュし、Foundry Agent Serviceにエージェントバージョンとして登録すると、プラットフォーム側がインフラのプロビジョニング、専用のMicrosoft EntraエージェントID、専用エンドポイントを用意します。(Microsoft Learn)

これにより、開発者はAzure Container Appsや独自Webサーバーを細かく組み立てるよりも、エージェントのロジックに集中しやすくなります。一方で、デプロイ前に確認すべき設定は増えます。特にACRの到達性、プロジェクトのマネージドID、エージェントIDへのロール割り当て、プロトコル選択を誤ると、デプロイは成功しても実行時にモデルやツールへアクセスできない可能性があります。

観点これまで意識しがちな作業Hosted Agentで重要になる作業
実行環境Webアプリ、Container Apps、Functionsなどを個別に設計Foundry Agent Serviceにコンテナーを登録
認証アプリ側のマネージドIDやシークレットを個別管理専用のEntraエージェントIDとRBACを確認
デプロイアプリケーション単位のリリース管理エージェントバージョン単位で管理
呼び出し自前のAPIエンドポイントFoundryの専用エンドポイント
監視アプリ側でApplication Insightsを構成プラットフォーム注入の接続情報とトレースを活用
注意点インフラ構成の自由度が高いACR、プロトコル、ネットワーク制約を守る必要がある

デプロイの基本フローは「Build → Version → Active → Invoke」

公式手順で示されているHosted Agentのライフサイクルは、次の4段階です。

手順内容実務での確認ポイント
Build and pushエージェントコードをコンテナー化し、ACRへプッシュlinux/amd64でビルドし、:latestではなく一意のタグを使う
Create an agent versionイメージをFoundry Agent Serviceに登録CPU、メモリ、プロトコル、環境変数を正しく指定
Poll for statusバージョンがactiveになるまで待つfailed時はerror.codeerror.messageを確認
Invoke専用エンドポイントへリクエストResponsesまたはInvocationsのエンドポイントを使い分ける

初回デプロイや検証目的であれば、Azure Developer CLI(azd)やVS Code拡張機能を使うルートが最短です。これらはビルド、プッシュ、バージョン管理、基本的なRBAC構成を自動化します。一方、自社のCI/CDや管理システムから直接デプロイを制御したい場合は、Python SDKまたはREST APIを使うのが適しています。(Microsoft Learn)

管理者が最初に確認すべき設定

Hosted Agentの展開で失敗しやすいのは、コードそのものよりも権限とネットワークです。特にAzure AI Foundryでは、Azure Resource Managerの権限とFoundryデータプレーンの権限が分かれるため、「Ownerだから全部できる」「Contributorだからエージェントも作れる」と考えると詰まりやすくなります。

確認項目必要な内容失敗しやすいポイント
エージェント作成者の権限プロジェクトスコープでAzure AI Project Managerが推奨Azure AI Userだけでは、エージェントIDへAzure AI Userを割り当てる権限が不足する場合がある
ACRへのプッシュデプロイ担当者にContainer Registry Repository WriterまたはAcrPushCI/CDのサービスプリンシパルに権限を付け忘れる
ACRからのプルFoundryプロジェクトのマネージドIDにContainer Registry Repository ReaderまたはAcrPullエージェントIDではなく、プロジェクトのマネージドIDに付与する点を間違える
エージェント実行時のアクセスプラットフォーム作成のエージェントIDにAzure AI Userモデルやツールを呼べず、実行時エラーになる
外部サービス利用Storage、Azure AI Search、Key Vaultなどに必要な追加権限コア設定だけで下流リソースも使えると誤解する
ACRのネットワークACRはパブリックエンドポイントで到達可能にする必要があるPrivate Endpointのみ、Public Network Access無効のACRは現在サポート外

Microsoftの権限リファレンスでは、Hosted Agentの開発にはユーザー、Foundryプロジェクト、エージェントそれぞれに異なる権限が関係すると説明されています。また、Azure AI DeveloperロールはHosted Agentシナリオでは不十分とされているため、既存のAI開発者向けロールをそのまま流用する前に見直しが必要です。(Microsoft Learn)

開発者が押さえるべきコンテナー要件

Hosted Agentのコンテナーは、通常のWebアプリ用コンテナーと同じ感覚で作ると失敗することがあります。特に重要なのは、アーキテクチャ、ポート、プロトコルライブラリ、環境変数です。

linux/amd64イメージでビルドする

ホスティングプラットフォームでは、x86_64、つまりlinux/amd64のコンテナーイメージが必要です。Apple Silicon搭載MacなどARMベースのマシンでビルドする場合は、次のようにプラットフォームを明示します。(Microsoft Learn)

docker build --platform linux/amd64 -t myagent:v1 .

実務では、CI/CD側でも同じ指定を入れておくべきです。ローカルでは動くのにFoundry上で起動しない場合、ARMイメージを誤ってプッシュしているケースがあります。

:latestではなく一意のタグを使う

再現可能なデプロイにするには、myagent:v1myagent:20260509-001、GitコミットSHAなど、一意のイメージタグを使います。公式手順でも、:latestではなく一意のタグの利用が推奨されています。(Microsoft Learn)

latestを使うと、どのコードがどのエージェントバージョンで動いているか追跡しづらくなります。障害発生時の切り戻しや監査にも不向きです。

ローカルでは8088番ポートで検証する

Hosted Agentのコンテナーはローカルでは8088番ポートでトラフィックを処理します。本番環境ではFoundryゲートウェイがルーティングするため、コンテナー側でパブリックポートを公開する必要はありません。(Microsoft Learn)

ローカル検証では、Responsesプロトコルなら/responses、Invocationsプロトコルなら/invocationsを叩きます。デプロイ前にここで入出力、ストリーミング、エラー処理を確認しておくと、クラウド側の切り分けが楽になります。

ResponsesとInvocationsは用途で選ぶ

Hosted Agentでは、Foundryゲートウェイと通信するためにプロトコルライブラリを使います。主な選択肢は、ResponsesプロトコルとInvocationsプロトコルです。1つのコンテナーで両方を公開することもできます。(Microsoft Learn)

プロトコル向いている用途特徴
Responses会話型チャットボット、ストリーミング、マルチターン会話OpenAI互換の/responsesコントラクトを使える。会話履歴、ストリーミング、バックグラウンド実行をプラットフォームに任せやすい
InvocationsWebhook、非会話処理、独自JSON、長時間の非同期処理/invocationsで任意のJSONを受け取れる。スキーマ、状態管理、ポーリングなどを自分で設計しやすい

迷った場合はResponsesから始めるのが現実的です。会話型UI、ストリーミング、履歴管理を使う多くのエージェントではResponsesが扱いやすいからです。一方、GitHub、Jira、社内システムのWebhookを受ける処理や、分類・抽出・バッチ処理のような非チャット用途ではInvocationsが合います。

Python SDKでデプロイする場合の要点

Python SDKを使う場合は、Azure AI Projects SDK 2.1.0以降が必要です。コードから直接エージェントバージョンを作成し、プロビジョニング状態を確認し、activeになってから呼び出します。(Microsoft Learn)

最小構成の考え方は次のとおりです。

from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import HostedAgentDefinition, ProtocolVersionRecord, AgentProtocol
from azure.identity import DefaultAzureCredential

PROJECT_ENDPOINT = "https://resource_name.services.ai.azure.com/api/projects/project_name"

credential = DefaultAzureCredential()

project = AIProjectClient(
    endpoint=PROJECT_ENDPOINT,
    credential=credential,
    allow_preview=True,
)

agent = project.agents.create_version(
    agent_name="my-agent",
    definition=HostedAgentDefinition(
        container_protocol_versions=[
            ProtocolVersionRecord(
                protocol=AgentProtocol.RESPONSES,
                version="1.0.0"
            )
        ],
        cpu="1",
        memory="2Gi",
        image="myregistry.azurecr.io/myagent:v1",
        environment_variables={
            "MODEL_DEPLOYMENT_NAME": "gpt-5-mini"
        }
    )
)

ここで重要なのは、create_versionが単なるメタデータ登録ではなく、エージェントのプロビジョニングを開始する操作であることです。別途「起動」コマンドを実行するのではなく、バージョン作成後にcreatingからactiveへ遷移するのを待ちます。(Microsoft Learn)

REST APIでデプロイする場合の要点

REST APIは、HTTPベースの独自ツールやCI/CDに組み込みたい場合に向いています。エージェント作成時にdefinition.kindhostedにし、イメージ、CPU、メモリ、プロトコル、環境変数を指定します。エージェント作成時にはバージョン1も作られ、プロビジョニングが始まります。(Microsoft Learn)

curl -X POST "$BASE_URL/agents?api-version=v1" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "my-agent",
    "definition": {
      "kind": "hosted",
      "image": "myacr.azurecr.io/my-agent:v1",
      "cpu": "1",
      "memory": "2Gi",
      "container_protocol_versions": [
        {"protocol": "responses", "version": "1.0.0"}
      ],
      "environment_variables": {
        "MODEL_DEPLOYMENT_NAME": "gpt-5-mini"
      }
    }
  }'

REST APIでInvocationsを呼ぶ場合は、専用エンドポイントに対してリクエストします。公式例ではFoundry-Features: HostedAgents=V1Previewヘッダーが使われています。プレビュー機能を扱うため、APIバージョンや必要ヘッダーは本番導入前に必ず最新の公式情報で確認してください。(Microsoft Learn)

環境変数は「自動注入」と「自分で定義」を分ける

Hosted Agentでは、プラットフォームが実行時に一部の環境変数を自動注入します。代表的なものは、Foundryプロジェクトのエンドポイント、プロジェクトARM ID、エージェント名、バージョン、セッションID、Application Insights接続文字列です。FOUNDRY_*プレフィックスはプラットフォーム用に予約されています。(Microsoft Learn)

種類扱い方
プラットフォーム注入FOUNDRY_PROJECT_ENDPOINTFOUNDRY_AGENT_NAMEAPPLICATIONINSIGHTS_CONNECTION_STRINGagent.yamlやSDKのenvironment_variablesで再宣言しない
アプリ側で定義MODEL_DEPLOYMENT_NAME、MCPエンドポイント、業務用設定値agent.yamlまたはSDK/RESTの環境変数として指定
シークレット系APIキー、接続文字列など平文で埋め込まず、必要に応じてKey VaultやIDベース認証を検討

よくあるミスは、FOUNDRY_*系の値を自分で上書きしようとすることです。Foundryが注入する値とアプリ固有の設定値を分けて管理すると、環境差分のトラブルを減らせます。

移行・展開時に注意すべきポイント

Hosted Agentはプレビュー段階の機能です。既存のAzure Container Appsベースの構成や、旧バージョンのazd ai agent拡張を使っている場合は、新しいバックエンド向けの手順と混同しないようにしてください。クイックスタートでは、新しいバックエンドのHosted Agentsにはazd ai agent 0.1.27-preview以降が必要で、Azure Container Appsを使うレガシー体験では0.1.25-previewを使うよう案内されています。(Microsoft Learn)

状況確認すべきこと
既存のContainer Appsベース構成がある新バックエンドへ移すのか、既存構成を維持するのかを決める
azdやVS Codeで初回構築する拡張機能のバージョン、権限、作成されるリソースを確認する
Python SDK/RESTで自動化するSDKバージョン、APIバージョン、プレビュー指定、ステータスポーリングをCI/CDに組み込む
社内ネットワーク制約が厳しいACRがパブリックエンドポイントで到達可能である必要がある点を事前にレビューする
本番運用に入れるプレビュー機能であること、リージョン、クォータ、SLA要件を確認する

特にセキュリティ部門との調整では、「ACRを完全にプライベート化できるか」が論点になりやすいです。現時点では、Hosted Agentのコンテナーイメージを保持するACRはパブリックエンドポイント経由で到達可能である必要があります。プライベートエンドポイントかつパブリックネットワークアクセス無効のACRはサポートされていません。(Microsoft Learn)

ネットワークとリージョンの確認は後回しにしない

Hosted Agentは、ネットワーク分離されたFoundryリソース内でのデプロイや、送信トラフィックに顧客提供のAzure Virtual Networkを使う構成をサポートします。ただし、ACRのパブリック到達性の制約は別問題です。また、ホストされたエージェントでネットワークインジェクションを使う場合、Foundryアカウント作成時に仮想ネットワーク構成を含める必要があり、作成後に既存アカウントへ追加することはサポートされていません。(Microsoft Learn)

リージョンも重要です。公式ドキュメントではHosted Agentはプレビュー段階とされ、利用可能リージョンの一覧には東日本も含まれています。ただし、この一覧は更新される前提のため、本番設計では対象リージョン、モデル可用性、社内データ所在要件をあわせて確認してください。(Microsoft Learn)

監視とコスト管理で見るべきところ

Hosted AgentはApplication Insightsとの連携を前提にしやすい構成です。プラットフォームはApplication Insights接続文字列を環境変数として注入し、プロトコルライブラリを使うエージェントはOpenTelemetryトレースを出力できます。トラブルシューティングでは、エージェントのログ、プロビジョニング状態、リクエスト単位のトレースを合わせて確認します。(Microsoft Learn)

コスト面では、アイドル状態の扱いを理解しておく必要があります。公式手順では、エージェントコンピューティングは非アクティブ状態が15分続くとプロビジョニング解除され、要求を処理していない場合はコンピューティングコストが発生しないと説明されています。一方で、モデル利用、ACR、Log Analytics、Application Insightsなど周辺リソースのコストは別途発生し得ます。(Microsoft Learn)

よくある失敗と対処法

デプロイで詰まった場合は、まずバージョンオブジェクトのstatuserror.codeerror.messageを確認します。公式手順では、代表的なプロビジョニングエラーと対処が示されています。(Microsoft Learn)

エラー・症状主な原因対処
image_pull_failedイメージURI誤り、ACRプル権限不足イメージ名・タグを確認し、プロジェクトのマネージドIDにContainer Registry Repository Readerを付与
InvalidAcrPullCredentialsマネージドIDまたはレジストリRBACの問題ACR側のロール割り当てとスコープを確認
UnauthorizedAcrPull認証または権限不足正しいIDに正しいACR権限を付与
AcrImageNotFoundイメージ名・タグが存在しないACRに対象タグがプッシュ済みか確認
RegistryNotFoundレジストリ名、DNS、ネットワーク到達性の問題ACRの存在、ログインサーバー名、パブリック到達性を確認
呼び出し前に失敗するバージョンがまだactiveでないcreating中は呼び出さず、ポーリングでactiveを待つ
モデルやツールにアクセスできないエージェントIDや下流リソースの権限不足Azure AI UserやStorage/Search/Key Vault側のデータプレーン権限を確認
ローカルでは動くがクラウドで起動しないARMイメージ、プロトコル不一致、環境変数不足linux/amd64container_protocol_versions、自動注入変数の扱いを確認

管理者・開発者が今すぐやるべきチェックリスト

Azure AI FoundryでHosted Agentを試す前に、次の順で確認すると手戻りを減らせます。

優先度チェック項目担当
Hosted Agentを使うリージョンとプレビュー利用可否を確認する管理者
Foundryプロジェクト、モデルデプロイ、ACR、Application Insightsの構成を整理する管理者・DevOps
エージェント作成者、CI/CD、プロジェクトのマネージドID、エージェントIDのRBACを設計する管理者
ACRがHosted Agentから到達可能か確認する管理者・ネットワーク担当
linux/amd64、一意のイメージタグ、ローカル8088番ポートでの検証をCI/CDに入れる開発者
ResponsesとInvocationsのどちらを使うか決める開発者
FOUNDRY_*自動注入変数とアプリ独自環境変数を分ける開発者
バージョン作成後のactiveポーリングとfailed時のログ取得を自動化するDevOps
Application InsightsとOpenTelemetryトレースの確認方法を決めるDevOps
検証後の削除手順とコスト監視を用意する管理者

まずは小さなHosted Agentで検証する

今回のDeploy a hosted agent - Microsoft Foundry更新で重要なのは、Azure AI Foundry上で独自コードのエージェントをマネージドに実行できる一方、デプロイは「コンテナーを置けば終わり」ではないという点です。ACR、RBAC、エージェントID、プロトコル、環境変数、バージョン状態の確認まで含めて設計する必要があります。

最初の一歩としては、非本番のFoundryプロジェクトでResponsesプロトコルの小さなエージェントを作り、linux/amd64でビルドし、ACRへ一意タグでプッシュし、Python SDKまたはREST APIでバージョン作成からactive確認、呼び出しまでを通すのがよいでしょう。そのうえで、社内CI/CD、監視、権限、ネットワーク要件に合わせて本番展開の設計へ進めるのが安全です。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次