Azure Container Apps REST APIで最初に押さえるべき答えは、通常のContainer Apps管理はResource Manager REST API、AIエージェントやコード実行向けの動的セッションはデータプレーンAPIで扱うという点です。2026年時点の公式リファレンスでは、コンテナーアプリ本体やジョブ、環境、セッションプールなどの管理操作は主にapi-version=2026-01-01で整理され、動的セッションの実行・ファイル操作・セッション管理は2025-10-02-previewのデータプレーンAPIとして分かれています。(Microsoft Learn)
つまり、Azure Container Apps REST APIの更新で管理者や開発者が確認すべきことは、「どのAPIを呼ぶか」だけではありません。既存のIaCテンプレート、CI/CD、APIラッパー、認証設定、ジョブ実行、動的セッションのネットワーク制御まで見直す必要があります。特にプレビューAPIから安定版APIへ移行する場合、以前使えていたプロパティが2026-01-01では削除されているケースがあるため、リクエストボディをそのまま流用しないことが重要です。(Microsoft Learn)
Azure Container Apps REST APIで管理できること
Azure Container Appsは、Kubernetesのオーケストレーションやサーバー管理を意識せずに、コンテナー化されたアプリケーションを実行するためのサーバーレス型サービスです。REST APIを使うと、Azure portalやAzure CLIを介さず、HTTPリクエストでContainer Appsの作成、更新、削除、ジョブ起動、認証設定、セッションプール管理などを自動化できます。(Microsoft Learn)
実務では、次のような場面でAzure Container Apps REST APIが役立ちます。
- 社内のデプロイ基盤からContainer Appsを自動作成する
- CI/CDパイプラインでコンテナーイメージ更新後にリビジョンを展開する
- ジョブを外部システムからオンデマンド実行する
- テナントごとにセッションプールを作成・更新する
- ポータル操作を禁止し、API経由の変更履歴に統一する
- AIエージェントやCopilot系アプリで、安全なコード実行環境を動的に割り当てる
注意したいのは、Azure Container Apps REST APIという名前だけを見ると1種類のAPIに見えますが、実際には管理用APIと実行時APIで役割が異なることです。この切り分けを誤ると、「コンテナーアプリを更新したいのにデータプレーンAPIを見ている」「動的セッションを操作したいのにResource Manager APIだけを実装している」といった混乱が起きます。
コントロールプレーンAPIとデータプレーンAPIの違い
Azure Container Apps REST APIでは、まずコントロールプレーンとデータプレーンを分けて考えます。Microsoft Learnの公式ページでも、コントロールプレーンはAzure Container Apps Resource Manager REST API、データプレーンはAzure Container Apps dynamic sessions REST APIとして案内されています。(Microsoft Learn)
| 観点 | コントロールプレーンAPI | データプレーンAPI |
|---|---|---|
| 主な用途 | リソースの作成、更新、削除、取得、開始、停止 | 動的セッションでのコード実行、ファイル操作、セッション管理 |
| 対象 | Container Apps、Jobs、Managed Environments、Certificates、Session Poolsなど | Azure Container Apps dynamic sessions |
| 代表的なエンドポイント | https://management.azure.com/... | セッションプールの管理エンドポイント |
| 代表的なAPIバージョン | 2026-01-01 | 2025-10-02-preview |
| 認証 | Microsoft Entra IDのBearerトークン、Azure RBAC | Bearerトークン、セッション識別子の管理 |
| 主な利用者 | 管理者、SRE、プラットフォームエンジニア、CI/CD | AIアプリ開発者、SaaS開発者、コード実行基盤の開発者 |
通常のコンテナーアプリを作成・更新する場合は、コントロールプレーンAPIを使います。たとえば既存のContainer Appを取得するAPIは、GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/containerApps/{containerAppName}?api-version=2026-01-01という形式です。 (Microsoft Learn)
一方、データプレーンAPIは動的セッション専用です。コードインタープリターセッションではコード実行や実行結果取得、ファイルのアップロード・取得・削除などが用意されていますが、これは一般的なContainer Appsの作成・更新APIではありません。(Microsoft Learn)
2026年版で確認すべき主な変更点
2026年時点でAzure Container Apps REST APIを確認する場合、まず2026-01-01を基準に既存のAPI呼び出しやテンプレートを見直すのが現実的です。ただし、変更ログは「デプロイ時に利用できるプロパティ」を対象にしているため、実行中サービスの機能がすべて削除されたという意味ではありません。特にプレビューAPIで追加されていたプロパティが、安定版APIのスキーマでは外れているケースに注意してください。(Microsoft Learn)
Container Apps本体ではプレビュー由来のプロパティ削除に注意
Microsoft.App/containerAppsの2026-01-01変更ログでは、ContainerAppPropertiesPatchingConfiguration、LoggerSetting、RuntimeDotnet、RuntimeJavaAgent、RuntimeJavaAgentLoggingが削除されています。また、ConfigurationのrevisionTransitionThresholdやtargetLabel、ContainerとInitContainerのimageType、IngressのtargetPortHttpScheme、ServiceBindのclientTypeとcustomizedKeysなども削除対象として示されています。(Microsoft Learn)
| 確認対象 | 削除・変更された主な項目 | 実務での対応 |
|---|---|---|
| リビジョン関連 | revisionTransitionThreshold、targetLabel | 既存のBicep、ARM、AzAPI、独自JSON生成処理に含まれていないか確認する |
| コンテナー定義 | imageType | コンテナーイメージ種別を独自プロパティとして送っていないか確認する |
| Ingress | targetPortHttpScheme | ポート、プロトコル、ヘルスプローブ設定を別プロパティで管理しているか確認する |
| ランタイム設定 | RuntimeDotnet、RuntimeJavaAgentなど | Java/.NET関連のプレビュー設定を安定版APIにそのまま送らない |
| サービスバインド | clientType、customizedKeys | サービス連携設定を再確認し、不要なキーを削除する |
API移行でよくある失敗は、「前のプレビューAPIで通っていたJSONをapi-versionだけ変えて送る」ことです。Azure REST APIはapi-versionごとに受け付けるプロパティが変わるため、バージョン番号だけを置き換えるのではなく、リクエストボディを新しいスキーマに合わせて再生成する必要があります。
JobsではextendedLocationやrunningStateの扱いを確認する
Container Apps Jobsの2026-01-01変更ログでは、ExtendedLocationの削除、ContainerとInitContainerのimageType削除、JobPropertiesのrunningState削除が示されています。ジョブの作成・更新API自体はPUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/jobs/{jobName}?api-version=2026-01-01という形式で提供されています。 (Microsoft Learn)
ジョブをREST APIで運用している場合は、次の3点を確認してください。
- ジョブ作成用JSONに
extendedLocationを含めていないか - コンテナー定義に
imageTypeを含めていないか - 実行状態の取得を
runningState前提で実装していないか
特に、外部スケジューラーや社内ワークフロー基盤からContainer Apps Jobsを起動している環境では、ジョブ開始後のレスポンス処理も確認が必要です。Jobs Start APIは200 OKに加えて、操作が受け付けられたことを示す202 AcceptedとLocation、Retry-Afterヘッダーを返す場合があります。非同期処理を前提に、完了確認や再試行の実装を入れておくべきです。(Microsoft Learn)
Managed Environmentsでは監視・暗号化・ネットワーク系プロパティに注意
Microsoft.App/managedEnvironmentsの2026-01-01変更ログでは、AppInsightsConfiguration、DataDogConfiguration、OpenTelemetryConfiguration、DiskEncryptionConfiguration、LogsConfiguration、MetricsConfigurationなどの削除が示されています。また、ManagedEnvironmentPropertiesからavailabilityZones、privateLinkDefaultDomain、openTelemetryConfigurationなどが削除されたことも記載されています。(Microsoft Learn)
これは、監視やネットワーク機能そのものを使えないという意味ではなく、少なくとも2026-01-01のデプロイスキーマにおいて、該当プロパティをそのまま指定できない可能性があるという意味で捉えるのが安全です。環境作成テンプレートに監視、OpenTelemetry、DataDog、Private Link、Availability Zones、FIPS関連の設定を含めている場合は、該当APIバージョンの正式なリファレンスでプロパティの置き場所を確認してください。
管理者と開発者への影響範囲
Azure Container Apps REST APIの更新で影響を受けやすいのは、単にREST APIを直接呼んでいるアプリだけではありません。Bicep、ARMテンプレート、Terraform AzAPI、独自のデプロイツール、CI/CD、監視基盤まで影響します。
| 利用パターン | 影響しやすいポイント | 確認すべきこと |
|---|---|---|
| 直接REST APIを呼ぶ社内ツール | api-version、リクエストボディ、非同期レスポンス | APIバージョンを固定し、受け付けられるプロパティだけを送る |
| Bicep / ARMテンプレート | スキーマ変更、削除プロパティ | change logとテンプレート差分を照合する |
| Terraform AzAPI | type = "Microsoft.App/...@2026-01-01"の定義 | preview版のプロパティを流用していないか確認する |
| CI/CD | デプロイ失敗、リビジョン切替失敗 | ステージング環境でPUT/PATCHを検証する |
| 監視・運用 | プロビジョニング状態、ログ、レスポンスヘッダー | operation-idや非同期操作の追跡を標準化する |
| AI/Copilot系アプリ | 動的セッション、ネットワーク、テナント分離 | セッション識別子、egress、シークレット露出を確認する |
独自のAPIラッパーを作っているチームでは、レスポンスの型定義も見直してください。REST APIでは、プロパティの追加よりも削除や移動のほうが障害に直結しやすく、JSONデシリアライズ時のエラー、null参照、監視項目の欠落が起こりやすくなります。
REST API呼び出し時に必ず確認する基本設定
Azure REST APIでは、リクエストURI、HTTPメソッド、ヘッダー、必要に応じたリクエストボディ、レスポンスのステータスコードとボディを組み合わせて操作します。Azure Resource Manager系APIではhttps://management.azure.com/を使い、api-versionクエリパラメーターが必要です。認証にはMicrosoft Entra IDで取得したBearerトークンをAuthorizationヘッダーに入れます。(Microsoft Learn)
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/containerApps/{containerAppName}?api-version=2026-01-01
Authorization: Bearer <access-token>
Content-Type: application/json
Container Appsの更新では、既存リソースの作成・更新にPUT、一部更新にPATCHが使われます。Container Apps Update APIは、JSON Merge Patchでコンテナーアプリのプロパティを更新するAPIとして提供されています。(Microsoft Learn)
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.App/containerApps/{containerAppName}?api-version=2026-01-01
Authorization: Bearer <access-token>
Content-Type: application/json
PATCHを使うときは、「指定していないプロパティが保持されるか」「nullを送った場合に削除扱いになるか」「配列が差分更新ではなく置換になるか」を事前にテストしてください。特にconfiguration.ingress.traffic、template.containers、secretsのような構造化された項目は、期待と異なる更新になると本番リビジョンや接続情報に影響します。
認証と権限で確認すべきこと
Azure Container Apps REST APIの管理操作では、Microsoft Entra IDのトークンとAzure RBACが前提になります。Azure REST APIリファレンスでは、クライアントアプリをMicrosoft Entra IDに登録し、Azure Resource Manager APIへのアクセス許可とRBACを構成する流れが説明されています。(Microsoft Learn)
管理者は、次の観点で権限を棚卸ししてください。
| 確認項目 | 判断基準 |
|---|---|
| 実行主体 | 人のユーザーではなく、CI/CD用のサービスプリンシパルまたはマネージドIDに寄せる |
| 権限範囲 | サブスクリプション全体ではなく、対象リソースグループや最小範囲に絞る |
| ロール | Contributorを安易に付けず、必要操作に応じて最小権限を検討する |
| シークレット | クライアントシークレットの直書きを避け、Key VaultやマネージドIDを使う |
| 監査 | 誰が、どのAPIで、どのリソースを変更したか追跡できるようにする |
Container AppsやSession Poolsのリファレンスでも、マネージドIDは他のAzureサービスとやり取りする際にコード内のシークレットや資格情報を持たずに済む仕組みとして説明されています。コンテナーレジストリへの認証でも、可能な場合はユーザー名・パスワードよりマネージドIDを優先する設計にすると、漏えい時の影響を抑えやすくなります。(Microsoft Learn)
動的セッションAPIはAI/Copilot系ワークロードで特に重要
Azure Container Apps dynamic sessionsは、セキュアに分離されたサンドボックス環境へすばやくアクセスするための仕組みです。公式ドキュメントでは、LLMが生成したスクリプトの実行、安全なカスタムコード実行、インタラクティブな開発、短時間のカスタム計算などがユースケースとして示されています。(Microsoft Learn)
動的セッションには、大きく分けて次の2種類があります。
| セッションプール種別 | 向いている用途 | 注意点 |
|---|---|---|
| Code interpreter session pool | AI生成コード、ユーザー投稿スクリプト、安全な一時実行 | 利用できるランタイムやAPI面は組み込み環境に依存する |
| Custom container session pool | 独自ライブラリ、専用バイナリ、社内ランタイムを含む処理 | コンテナーイメージ、ポート、プローブ、環境変数、レジストリ認証の管理が必要 |
データプレーンAPIでは、Code ExecutionのExecuteとGetはコードインタープリターセッションプールでのみサポートされます。また、セッションの一覧取得や取得・削除はカスタムコンテナーセッションプールではサポートされない操作があります。ファイル操作もコードインタープリターセッションプール向けのAPIとして整理されています。(Microsoft Learn)
AIエージェントやCopilot風の機能で「ユーザーの指示からコードを生成し、実行結果を返す」ような設計をする場合、アプリ本体のコンテナー内で直接コードを実行するのは危険です。動的セッションを使うことで、処理を短命な分離環境に逃がせます。ただし、サンドボックスだから安全と決めつけず、ネットワーク、シークレット、ファイル、セッション識別子を明確に制御する必要があります。
セッションプール運用で失敗しやすい設定
セッションプールでは、最大同時セッション数、アイドル時のクールダウン期間、アウトバウンド通信の可否を設定できます。公式ドキュメントでは、egressを有効にするとセッション内のコードがインターネットへアクセスできるため、信頼できないコードでは悪用リスクに注意するよう警告されています。また、信頼できないコードにアクセスされたくない情報を環境変数、シークレット、ファイルとして含めないよう明記されています。(Microsoft Learn)
| 設定 | 推奨される考え方 |
|---|---|
max-sessions | 想定同時実行数より少し余裕を持たせる。ただしコストと濫用リスクも見る |
cooldown-period | 短すぎると毎回初期化が増え、長すぎると不要なリソースを保持する |
network-status | 信頼できないコードでは原則EgressDisabledから検討する |
| セッション識別子 | ユーザーIDや連番をそのまま使わず、推測困難でテナント分離された値にする |
| コンテナーイメージ | latestタグを避け、更新ごとに一意のタグを使う |
| ready sessions | 初回レスポンス速度を重視する場合は事前ウォーム数を増やす |
特に見落とされやすいのがイメージキャッシュです。セッションプール作成・更新時にコンテナーイメージがキャッシュされるため、同じタグのままイメージだけを差し替えても、セッションへ自動反映されない場合があります。公式ドキュメントでは、新しいイメージを確実に取得させるために、更新ごとに一意のイメージタグを使うことが推奨されています。(Microsoft Learn)
移行前に行うべきチェックリスト
Azure Container Apps REST APIを2026-01-01へ移行する、または既存の自動化を見直す場合は、次の順序で進めると失敗を減らせます。
| 手順 | 作業内容 | 完了条件 |
|---|---|---|
| 現状把握 | REST API、Bicep、ARM、Terraform、SDK、CLIスクリプトで使っているAPIバージョンを洗い出す | api-versionと対象リソース一覧が分かる |
| 差分確認 | change logで削除・追加プロパティを確認する | 削除対象プロパティの利用有無が分かる |
| JSON修正 | 不要・非対応のプロパティを削除し、必須項目を補う | スキーマに合うリクエストボディになる |
| 権限確認 | 実行主体のEntra ID、RBAC、マネージドIDを確認する | 最小権限でAPI実行できる |
| ステージング検証 | GET、PUT、PATCH、POST、非同期操作を検証する | デプロイ・更新・ロールバックが通る |
| 監視確認 | operation-id、Location、Retry-After、プロビジョニング状態を記録する | 失敗時に追跡できる |
| 本番反映 | リビジョンやジョブの影響範囲を限定して展開する | 切り戻し手順を含めて完了する |
ここで重要なのは、APIの更新を「コード変更」ではなく「運用変更」として扱うことです。たとえば、PATCHの1リクエストでIngressやトラフィック配分を変える処理は、本番アクセスに直結します。CI/CDで自動化する場合でも、ステージング環境での差分確認、承認、ロールバック条件を明確にしてから本番へ反映するべきです。
REST API実装でよくあるミス
Azure Container Apps REST APIを実装する際は、次のミスが特に起きやすいです。
api-versionを固定せず、環境やコードによって違うバージョンを呼んでいる- プレビューAPIのプロパティを安定版APIへそのまま送っている
PUTとPATCHの違いを理解せず、意図しない構成上書きをしている202 Acceptedを成功完了とみなし、実際の操作完了を確認していない- 動的セッションのAPIで通常のContainer Appを更新しようとしている
- セッション識別子を推測可能な値にしている
- egressを有効にしたまま、信頼できないコードを実行している
- コンテナーイメージに
latestタグを使い、セッションプールへ更新が反映されない - レスポンスヘッダーの
operation-idやOperation-Locationをログに残していない
動的セッションの共通ヘッダーには、認証用のAuthorization、POST時のContent-Type: application/json、任意のoperation-idがあり、レスポンスヘッダーにはOperation-Locationや実行時間、セッションIDに関する情報が含まれます。障害解析や性能調査を考えると、これらのヘッダーをアプリケーションログや監視基盤へ残す設計が有効です。(Microsoft Learn)
管理者が優先して確認すべき設定
管理者は、まず「誰が、どの権限で、どのAPIバージョンを使って、どのリソースを変更できるか」を可視化してください。Azure Container Apps REST APIは便利ですが、誤った権限設計のまま自動化すると、削除、停止、Ingress変更、シークレット参照、ジョブ大量実行などの影響が大きくなります。
優先順位は次の通りです。
| 優先度 | 確認項目 | 理由 |
|---|---|---|
| 高 | API実行主体とRBAC | 過剰権限は本番障害や不正操作の影響を拡大する |
| 高 | api-versionの固定 | バージョン差分による予期しない失敗を防ぐ |
| 高 | リクエストボディのスキーマ | 削除済みプロパティによるデプロイ失敗を防ぐ |
| 高 | 非同期操作の追跡 | 202 Accepted後の失敗を見逃さない |
| 中 | セッションプールのegress | 信頼できないコードの外部通信を制御する |
| 中 | イメージタグ運用 | 意図しない旧イメージ利用を避ける |
| 中 | ログ・メトリック・監査 | 障害時に原因を追えるようにする |
特に本番環境では、REST APIを呼ぶサービスプリンシパルやマネージドIDを用途別に分けるのが安全です。たとえば「読み取り専用の監視用ID」「デプロイ用ID」「ジョブ起動用ID」「セッションプール管理用ID」を分離すれば、万一どれかが漏えい・誤用されても影響範囲を抑えられます。
開発者が実装時に見るべきポイント
開発者は、REST APIのサンプルをコピーする前に、対象操作が「管理操作」なのか「動的セッション操作」なのかを決めてください。そのうえで、次の観点をコードレビュー項目に入れると安全です。
| コードレビュー項目 | 確認内容 |
|---|---|
| APIバージョン | 2026-01-01など、意図したバージョンを明示しているか |
| エンドポイント | management.azure.comとセッションプール管理エンドポイントを混同していないか |
| 認証 | トークン取得、期限切れ、再試行を実装しているか |
| エラー処理 | 4xx、5xx、非同期失敗、タイムアウトを分けて扱っているか |
| リクエスト生成 | nullや空配列で意図しない削除・上書きが起きないか |
| ログ | サブスクリプションIDやシークレット値を不用意に出していないか |
| テスト | GET、PUT、PATCH、POST、削除系をステージングで検証しているか |
REST APIは柔軟ですが、SDKやCLIよりも自己責任の範囲が広くなります。特にPATCHやPUTのリクエストボディを手書きで組み立てている場合、型安全性が低く、プロパティ名の typo や古いスキーマの混入に気づきにくくなります。実装では、可能であればJSON Schema相当の検証、型定義、ゴールデンファイルテストを用意しておくと安心です。
まとめ:まずはAPIバージョンとリクエストボディを棚卸しする
Azure Container Apps REST APIの更新で最も重要なのは、コントロールプレーンAPIとデータプレーンAPIを分け、対象操作に合ったAPIバージョンとスキーマを使うことです。通常のContainer Apps、Jobs、Managed Environments、Session Poolsの管理はResource Manager REST APIで行い、AIエージェントやコード実行に関わる動的セッションはデータプレーンAPIで扱います。(Microsoft Learn)
次に取るべき行動は明確です。既存のREST API呼び出し、Bicep、ARM、Terraform AzAPI、CI/CDスクリプトからapi-versionとリクエストボディを洗い出し、2026-01-01のchange logと照合してください。プレビューAPIで使っていたプロパティを削除し、ステージング環境でGET、PUT、PATCH、ジョブ起動、セッションプール作成を検証してから本番へ展開するのが安全です。
動的セッションを使う場合は、利便性だけでなくセキュリティも同時に設計してください。セッション識別子、egress、シークレット、イメージタグ、同時実行数を管理できて初めて、AI/Copilot系ワークロードでも安全にAzure Container Apps REST APIを活用できます。

コメント