Azure Container Apps REST APIとは?2026年更新の変更点と移行時の注意点

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-012025-10-02-preview
認証Microsoft Entra IDのBearerトークン、Azure RBACBearerトークン、セッション識別子の管理
主な利用者管理者、SRE、プラットフォームエンジニア、CI/CDAIアプリ開発者、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/containerApps2026-01-01変更ログでは、ContainerAppPropertiesPatchingConfigurationLoggerSettingRuntimeDotnetRuntimeJavaAgentRuntimeJavaAgentLoggingが削除されています。また、ConfigurationrevisionTransitionThresholdtargetLabelContainerInitContainerimageTypeIngresstargetPortHttpSchemeServiceBindclientTypecustomizedKeysなども削除対象として示されています。(Microsoft Learn)

確認対象削除・変更された主な項目実務での対応
リビジョン関連revisionTransitionThresholdtargetLabel既存のBicep、ARM、AzAPI、独自JSON生成処理に含まれていないか確認する
コンテナー定義imageTypeコンテナーイメージ種別を独自プロパティとして送っていないか確認する
IngresstargetPortHttpSchemeポート、プロトコル、ヘルスプローブ設定を別プロパティで管理しているか確認する
ランタイム設定RuntimeDotnetRuntimeJavaAgentなどJava/.NET関連のプレビュー設定を安定版APIにそのまま送らない
サービスバインドclientTypecustomizedKeysサービス連携設定を再確認し、不要なキーを削除する

API移行でよくある失敗は、「前のプレビューAPIで通っていたJSONをapi-versionだけ変えて送る」ことです。Azure REST APIはapi-versionごとに受け付けるプロパティが変わるため、バージョン番号だけを置き換えるのではなく、リクエストボディを新しいスキーマに合わせて再生成する必要があります。

JobsではextendedLocationrunningStateの扱いを確認する

Container Apps Jobsの2026-01-01変更ログでは、ExtendedLocationの削除、ContainerInitContainerimageType削除、JobPropertiesrunningState削除が示されています。ジョブの作成・更新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 AcceptedLocationRetry-Afterヘッダーを返す場合があります。非同期処理を前提に、完了確認や再試行の実装を入れておくべきです。(Microsoft Learn)

Managed Environmentsでは監視・暗号化・ネットワーク系プロパティに注意

Microsoft.App/managedEnvironments2026-01-01変更ログでは、AppInsightsConfigurationDataDogConfigurationOpenTelemetryConfigurationDiskEncryptionConfigurationLogsConfigurationMetricsConfigurationなどの削除が示されています。また、ManagedEnvironmentPropertiesからavailabilityZonesprivateLinkDefaultDomainopenTelemetryConfigurationなどが削除されたことも記載されています。(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 AzAPItype = "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.traffictemplate.containerssecretsのような構造化された項目は、期待と異なる更新になると本番リビジョンや接続情報に影響します。

認証と権限で確認すべきこと

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 poolAI生成コード、ユーザー投稿スクリプト、安全な一時実行利用できるランタイムやAPI面は組み込み環境に依存する
Custom container session pool独自ライブラリ、専用バイナリ、社内ランタイムを含む処理コンテナーイメージ、ポート、プローブ、環境変数、レジストリ認証の管理が必要

データプレーンAPIでは、Code ExecutionのExecuteGetはコードインタープリターセッションプールでのみサポートされます。また、セッションの一覧取得や取得・削除はカスタムコンテナーセッションプールではサポートされない操作があります。ファイル操作もコードインタープリターセッションプール向けの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実行できる
ステージング検証GETPUTPATCHPOST、非同期操作を検証するデプロイ・更新・ロールバックが通る
監視確認operation-idLocationRetry-After、プロビジョニング状態を記録する失敗時に追跡できる
本番反映リビジョンやジョブの影響範囲を限定して展開する切り戻し手順を含めて完了する

ここで重要なのは、APIの更新を「コード変更」ではなく「運用変更」として扱うことです。たとえば、PATCHの1リクエストでIngressやトラフィック配分を変える処理は、本番アクセスに直結します。CI/CDで自動化する場合でも、ステージング環境での差分確認、承認、ロールバック条件を明確にしてから本番へ反映するべきです。

REST API実装でよくあるミス

Azure Container Apps REST APIを実装する際は、次のミスが特に起きやすいです。

  • api-versionを固定せず、環境やコードによって違うバージョンを呼んでいる
  • プレビューAPIのプロパティを安定版APIへそのまま送っている
  • PUTPATCHの違いを理解せず、意図しない構成上書きをしている
  • 202 Acceptedを成功完了とみなし、実際の操作完了を確認していない
  • 動的セッションのAPIで通常のContainer Appを更新しようとしている
  • セッション識別子を推測可能な値にしている
  • egressを有効にしたまま、信頼できないコードを実行している
  • コンテナーイメージにlatestタグを使い、セッションプールへ更新が反映されない
  • レスポンスヘッダーのoperation-idOperation-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よりも自己責任の範囲が広くなります。特にPATCHPUTのリクエストボディを手書きで組み立てている場合、型安全性が低く、プロパティ名の 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で使っていたプロパティを削除し、ステージング環境でGETPUTPATCH、ジョブ起動、セッションプール作成を検証してから本番へ展開するのが安全です。

動的セッションを使う場合は、利便性だけでなくセキュリティも同時に設計してください。セッション識別子、egress、シークレット、イメージタグ、同時実行数を管理できて初めて、AI/Copilot系ワークロードでも安全にAzure Container Apps REST APIを活用できます。

この記事を書いた人

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

コメント

コメントする

目次