Azure Container Apps サンドボックスの概要 (プレビュー)

Azure Container Appsサンドボックスは、一時停止機能と再開機能が組み込まれた高速で安全な一時的なコンピューティング環境を提供します。 サンドボックスは、Container Apps の最上位のリソースの種類 (Microsoft.App/SandboxGroups) であり、アプリ、ジョブ、動的セッションと共に使用されます。

Important

サンドボックスを管理および作成するには、Azure ロール Container Apps SandboxGroup データ所有者が必要です。 サンドボックスを作成および管理するすべてのユーザーにこのロールを割り当てます。

プレビュー中に作成されたサンドボックスは、将来のリリースと互換性がない可能性があり、再作成が必要になる場合があります。

Python SDK および Azure Container Apps CLI コマンドの API サーフェスは、プレビュー中に変更される可能性があります。

サンドボックス環境の作成と管理

サンドボックスの作成と管理は、Sandboxes ポータルまたはプログラムでAzure Container Apps CLI または SDK を使用して行うことができます。

Container Apps サンドボックスの主な特性

  • 2 秒未満のスタートアップ: サンドボックスは、ほぼ瞬時に可用性を確保するために、事前に管理されたプールからプロビジョニングされます。

  • 強力な分離: 各サンドボックスは、信頼されていないコードの実行に対して安全な独自のセキュリティで保護された境界で実行されます。

  • ゼロまでスケールする:サンドボックスを停止してもCPUやメモリのコストは一切かかりません。

  • スケールアウト:サービスはオンデマンドで数千の同時サンドボックスに急成長します。

  • OCIコンテナイメージのサポート:付属のパブリックイメージを使用するか、自身のコンテナイメージをサンドボックスルートファイルシステムとして持ち込んでください。

  • 中断と再開: メモリとディスクを含む完全な状態のスナップショットを作成し、後で 2 秒未満の復元時間で再開します。

  • ライフサイクル制御:状態スナップショット、永続保存、ネットワークポリシー(出口・入口の両方)を含むサンドボックスライフサイクル全体を管理できます。

サンドボックスを使用する場合

明示的なライフサイクル制御、永続状態、SDKによるプログラム可能なアクセスを持つ隔離された計算環境が必要な場合はサンドボックスを使いましょう。

Scenario サンドボックスを使用しますか? なぜでしょうか
状態の保持を使用した AI コードの実行 はい タスク間で中断し、完全なコンテキストをそのまま使用して再開する
開発環境 はい セッション間で状態を保持するオンデマンドで中断可能な環境
エージェント ワークフロー はい AI エージェントに、タスクの境界を越えて永続的で分離されたワークスペースを提供する
対話型ユーザー セッション はい 各ユーザーは、独自の分離されたコンピューティング環境を取得します
マルチテナント コンピューティングをセキュリティで保護する はい 複数テナントの信頼できないワークロードを実行するための強力な分離
バースト型ワークロード はい ゼロから数千のサンドボックスをオンデマンドにスケールできます
CI/CD パイプライン はい 未使用時にはゼロまでスケールする一時的なビルド/テスト環境

適切な Container Apps コンピューティング オプションを選択する

次の表を使用して、ワークロードに合った Container Apps コンピューティングの種類を選択します。

コンピューティングの種類 最適な用途 ライフサイクル 状態
アプリ 実行時間の長いサービス、API、Web アプリ 継続的 ステートレス (外部状態ストア)
仕事 実行から完了までのタスク、バッチ処理 開始→実行→完了 ステートレス
動的セッション マネージド コードの実行、LLM で生成されたスクリプト セッション プールによる管理される エフェメラル
サンド ボックス ライフサイクル制御によるプログラミング可能な分離コンピューティング 管理操作: 作成、一時停止、再開、削除 ステートフル (スナップショット、ボリューム)

主な概念

Prerequisites

サンドボックスを作成または管理するには、Azure ロールの割り当て Container Apps SandboxGroup データ所有者が必要です。 このロールがないと、サンドボックス操作を実行することはできません。 Azure ポータルで、またはAzure CLIを使用して、目的のスコープ (Azure サブスクリプションまたはリソース グループAzure) でこのロールを割り当てます。

次のコマンドを実行する前に、 <> で囲まれたプレースホルダーを独自の値に置き換えます。

az role assignment create \
  --assignee "<USER_EMAIL_OR_OBJECT_ID>" \
  --role "Container Apps SandboxGroup Data Owner" \
  --scope "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>"

サンドボックスグループ

サンドボックス グループは、サンドボックスの最上位の管理境界です。 これは、リソース グループとリージョンに作成する Azure Resource Manager (ARM) リソースです。 すべてのサンドボックス、ディスク イメージ、スナップショット、ボリューム、シークレットは、サンドボックス グループにスコープが設定されます。

サンドボックス グループを使用して、アプリケーション、チーム、または環境別にサンドボックスを整理します。

サンドボックス

サンドボックスは、サンドボックス グループ内の個別の分離されたコンピューティング インスタンスです。 各サンドボックスは、ディスク イメージまたはスナップショットから実行され、独自の CPU、メモリ、ディスク、およびネットワーク境界を持ちます。

サンドボックスを操作するには、コマンドの実行、ファイルの管理、ポートの公開、ライフサイクルの状態の制御を行います。

ディスク イメージ

ディスク イメージは、サンドボックス ルート ファイルシステムとして使用するために変換された OCI コンテナー イメージです。 パブリック イメージを使用することも、独自のコンテナー レジストリからプライベート イメージを作成することもできます。

ディスク イメージは、次の場所からビルドできます。

  • パブリック イメージ: すべてのサンドボックス グループで使用できる事前構築済みイメージ。
  • コンテナー レジストリ イメージ: オプションの認証を使用してパブリック レジストリまたはプライベート レジストリからプルします。

Snapshots

スナップショットは、メモリやディスクを含む、実行中のサンドボックスの完全な状態をキャプチャします。 スナップショットを使用して次の手順を実行します。

  • 中断と再開: サンドボックスを一時停止し、後ですべてのプロセスとデータをそのまま使用して復元します。
  • 環境の複製: 正常な状態から新しいサンドボックスを作成します。
  • ベースラインの共有: 構成済みの環境をチーム全体に分散します。

Volumes

Microsoftはボリュームを管理し、サンドボックスにマウントできる永続的なストレージを提供します。 次の 2 種類のボリュームを使用できます。

ボリュームの種類 Description
Azure BLOB 複数のサンドボックス(アップロード・ダウンロード、永続的なアーティファクト)でデータを共有しましょう。 一度に複数のサンドボックスにマウントできます。
データ ディスク データベース、ビルド キャッシュ、および大規模なワーキング セットの高パフォーマンス ボリューム。 一度に 1 つのサンドボックスにのみマウントできます。

ライフサイクルの状態

サンドボックスは次の状態になります。

状態 Description
Running アクティブ実行、CPUとメモリの使用
停止済み ユーザー、API、またはライフサイクルポリシーによって停止

サンドボックスが停止されると、操作はサスペンドモードに基づいてスナップショットを取得し保持します(後述の節参照)。

各サンドボックスごとにライフサイクルポリシーを設定できます:

  • オートサスペンド:設定可能なタイムアウト後にアイドルサンドボックスを一時停止します。 サンドボックスは、入力(着信)トラフィックがなく、コード実行(実行API経由)、インタラクティブシェルセッションがなく、ファイル操作もない状態にアイドルとなります。
  • サスペンドモード:メモリモード(フルスナップショット - ディスク+メモリ)またはディスクモード(ディスクのみ保持)のどちらかを選択できます。
  • 自動削除:サンドボックスが停止されてから一定日数経過後に自動的に削除されます。

Architecture

サンドボックスでは、次の 2 プレーン アーキテクチャが使用されます。

平面 エンドポイント Operations
ARM コントロールプレーン management.azure.com サンドボックス グループを作成、更新、削除、および一覧表示します。 VNet 接続を管理します。
ADC データ プレーン management.azuredevcompute.io サンドボックス、ディスク イメージ、スナップショット、ファイル、ボリューム、シークレット、ポート、エグレス ポリシーを管理します。

ARM コントロール プレーンを使用してサンドボックス グループを作成および管理します。 個々のサンドボックスとそのリソースに対するすべての操作は、特定のサンドボックス グループにスコープが設定された ADC データ プレーンを通過します。

リソース層

各サンドボックスには、CPU、メモリ、ディスクの割り当てをチェックするリソース層が割り当てられます。

レベル CPU メモリ Disk
XS 0.25 コア 0.5 GB 20GB
S 0.5 コア 1 GB 20GB
M (既定値) 1 コア 2 GB 20GB
L 2 コア 4GB 40 GB
XL 4 コア 8GB 80GB

考慮事項

サンドボックスを使用する場合は、次の点を考慮してください。

  • Entra ID必須: サンドボックスにアクセスできるのはMicrosoft Entra IDアカウントのみです。 個人の Microsoft アカウントはサポートされていません。
  • ネットワーク制御:サンドボックスからのアウトバウンドトラフィックを制御するためのエグレスポリシーを設定できます。ドメインベースの許可または拒否ルール、CIDRベースのネットワークルール、VNet統合などが含まれます。

サンドボックスと動的セッション

サンドボックスと 動的セッション はどちらも Container Apps で分離されたコンピューティング環境を提供しますが、さまざまなニーズに対応します。

動的セッション サンドボックス
アクセス パターン セッション プール管理エンドポイントを介した HTTP 要求ルーティング 個々のサンドボックスに対する SDK と CLI の直接制御
状態 エフェメラル、クールダウン後に破壊される ステートフル (一時停止、再開、スナップショット対応)
開発者コントロール プールが割り当てとライフサイクルを管理する サンドボックスのライフサイクル、ファイル、ポート、ポリシーを管理する
イメージ モデル コード インタープリター (組み込み) またはカスタム コンテナー ディスク イメージ (OCI)、スナップショット、コンテンツ パッケージ
永続的ストレージ 該当なし ボリューム (Azure BLOB、データ ディスク)
ネットワーク 基本的な分離 エグレス ポリシー、VNet 統合、ポート管理
SDK プール エンドポイントを介した REST API 近日公開予定: 専用 SDK (C#、Python)

インフラストラクチャを抽象化するマネージド実行エクスペリエンスが必要な場合は、動的セッションを選択します。 状態の永続化を使用して分離されたコンピューティングをプログラミング可能に制御する必要がある場合は、サンドボックスを選択します。