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 秒未満のスタートアップ: サンドボックスは、ほぼ瞬時に可用性を確保するために、事前に管理されたプールからプロビジョニングされます。
強力な分離: 各サンドボックスは、信頼されていないコードの実行に対して安全な独自のセキュリティで保護された境界で実行されます。
ゼロにスケーリング: サンドボックスがアイドル状態のときに何も支払いません。
スケールアウト: サービスは、オンデマンドで数百の同時サンドボックスにバーストします。
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 コンテナー イメージです。 パブリック イメージを使用することも、独自のコンテナー レジストリからプライベート イメージを作成することもできます。
ディスク イメージは、次の場所からビルドできます。
- パブリック イメージ: すべてのサンドボックス グループで使用できる事前構築済みイメージ。
- コンテナー レジストリ イメージ: オプションの認証を使用してパブリック レジストリまたはプライベート レジストリからプルします。
- Dockerfiles: Dockerfile を使用してカスタム イメージをビルドします。
Snapshots
スナップショットは、メモリやディスクを含む、実行中のサンドボックスの完全な状態をキャプチャします。 スナップショットを使用して次の手順を実行します。
- 中断と再開: サンドボックスを一時停止し、後ですべてのプロセスとデータをそのまま使用して復元します。
- 環境の複製: 正常な状態から新しいサンドボックスを作成します。
- ベースラインの共有: 構成済みの環境をチーム全体に分散します。
Volumes
Microsoftはボリュームを管理し、サンドボックスにマウントできる永続的なストレージを提供します。 次の 2 種類のボリュームを使用できます。
| ボリュームの種類 | Description |
|---|---|
| Azure BLOB | サンドボックス間でデータを共有する (アップロードとダウンロード、永続的な成果物)。 一度に複数のサンドボックスにマウントできます。 |
| データ ディスク | データベース、ビルド キャッシュ、および大規模なワーキング セットの高パフォーマンス ボリューム。 一度に 1 つのサンドボックスにのみマウントできます。 |
ライフサイクルの状態
サンドボックスは次の状態になります。
| 状態 | Description |
|---|---|
| Running | 実行中 |
| 停止中 | メモリとディスクを含むすべての状態を保持したまま自動的に中断 |
| 待機中 | システムによって一時停止され、必要に応じて自動的に再開可能 |
| 停止済み | ユーザーによる停止 |
| 再開します | 中断状態またはアイドル状態からの復帰 |
| 作成 | プロビジョニングの進行中 |
| 停車 | シャットダウン中 |
| 削除中 | 解体中 |
サンドボックスごとに自動ライフサイクル ポリシーを構成できます。
自動中断: 構成可能なタイムアウト後にアイドル 状態のサンドボックスを中断します。 メモリ モード (フル スナップショット) またはディスク モード (ディスクのみ保持) のいずれかを選択します。
自動削除: 指定した日数後にサンドボックスを自動的に削除します。
Architecture
サンドボックスでは、次の 2 プレーン アーキテクチャが使用されます。
| 平面 | エンドポイント | Operations |
|---|---|---|
| ARM コントロールプレーン | management.azure.com |
サンドボックス グループを作成、更新、削除、および一覧表示します。 VNet 接続を管理します。 |
| ADC データ プレーン | management.azuredevcompute.io |
サンドボックス、ディスク イメージ、スナップショット、ファイル、ボリューム、シークレット、ポート、エグレス ポリシーを管理します。 |
ARM コントロール プレーンを使用してサンドボックス グループを作成および管理します。 個々のサンドボックスとそのリソースに対するすべての操作は、特定のサンドボックス グループにスコープが設定された ADC データ プレーンを通過します。
リソース層
各サンドボックスには、CPU、メモリ、ディスクの割り当てをチェックするリソース層が割り当てられます。
| レベル | CPU | メモリ | Disk |
|---|---|---|---|
| XS | 0.25 コア | 0.5 GB | 20 GB |
| S | 0.5 コア | 1 GB | 20 GB |
| M (既定値) | 1 コア | 2 GB | 20 GB |
| L | 2 コア | 4 GB | 40 GB |
考慮事項
サンドボックスを使用する場合は、次の点を考慮してください。
Entra ID必須: サンドボックスにアクセスできるのはMicrosoft Entra IDアカウントのみです。 個人の Microsoft アカウントはサポートされていません。
プレビュー機能の可用性: イメージ プル用のカスタム VNet 統合やマネージド ID など、一部の機能では、プレビュー期間中に機能フラグが必要です。
ネットワーク制御: ドメインベースの許可または拒否規則や CIDR ベースのネットワーク 規則など、サンドボックスからの送信トラフィックを制御するエグレス ポリシーを構成できます。
サンドボックスと動的セッション
サンドボックスと 動的セッション はどちらも Container Apps で分離されたコンピューティング環境を提供しますが、さまざまなニーズに対応します。
| 動的セッション | サンドボックス | |
|---|---|---|
| アクセス パターン | セッション プール管理エンドポイントを介した HTTP 要求ルーティング | 個々のサンドボックスに対する SDK と CLI の直接制御 |
| 状態 | エフェメラル、クールダウン後に破壊される | ステートフル (一時停止、再開、スナップショット対応) |
| 開発者コントロール | プールが割り当てとライフサイクルを管理する | サンドボックスのライフサイクル、ファイル、ポート、ポリシーを管理する |
| イメージ モデル | コード インタープリター (組み込み) またはカスタム コンテナー | ディスク イメージ (OCI)、スナップショット、コンテンツ パッケージ |
| 永続的ストレージ | 該当なし | ボリューム (Azure BLOB、データ ディスク) |
| ネットワーク | 基本的な分離 | エグレス ポリシー、VNet 統合、ポート管理 |
| SDK | プール エンドポイントを介した REST API | 近日公開予定: 専用 SDK (C#、Python) |
インフラストラクチャを抽象化するマネージド実行エクスペリエンスが必要な場合は、動的セッションを選択します。 状態の永続化を使用して分離されたコンピューティングをプログラミング可能に制御する必要がある場合は、サンドボックスを選択します。