Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Outre l’interpréteur de code intégré fourni par les sessions dynamiques Azure Container Apps, vous pouvez également utiliser des conteneurs personnalisés pour définir vos propres bacs à sable de session.
Note
Cet article s’applique uniquement aux pools de sessions de conteneur personnalisées. Sauf indication contraire, les fonctionnalités décrites ici ne sont pas disponibles pour les pools de sessions d’interpréteur de code.
Utilisations pour les sessions de conteneur personnalisées
Les conteneurs personnalisés vous permettent de créer des solutions adaptées à vos besoins. Ils vous permettent d’exécuter du code ou des applications dans des environnements rapides et éphémères. Ils offrent des espaces sécurisés et isolés avec Hyper-V. Ils peuvent également être configurés avec une isolation réseau facultative. Voici quelques exemples :
Interpréteurs de code : utilisez si vous exécutez du code non approuvé dans des bacs à sable sécurisés par un langage non pris en charge dans l’interpréteur intégré, ou si vous avez besoin d’un contrôle total sur l’environnement de l’interpréteur de code.
Exécution isolée : utilisez si vous exécutez des applications dans des scénarios hostiles et multilocataires dans lesquels chaque locataire ou utilisateur possède son propre environnement bac à sable (sandbox). Ces environnements sont isolés les uns des autres et de l’application hôte. Voici quelques exemples d’applications qui exécutent du code fourni par l’utilisateur, du code qui accorde à l’utilisateur final l’accès à un interpréteur de commandes cloud, des agents d’IA et des environnements de développement.
Utilisation de sessions de conteneur personnalisées
Pour utiliser des sessions de conteneur personnalisées, créez un pool de sessions avec une image conteneur personnalisée. Azure Container Apps démarre automatiquement les conteneurs dans leurs propres bacs à sable Hyper-V à l’aide de l’image fournie. Une fois le conteneur démarré, il devient disponible pour le pool de sessions.
Lorsque votre application demande une session, une instance est allouée instantanément à partir du pool. La session reste active jusqu’à ce qu’elle entre dans un état inactif, qui est ensuite automatiquement arrêté et détruit.
Sondes de conteneur pour les pools de sessions
Utilisez des sondes de conteneur pour configurer des vérifications d’intégrité pour les pools de sessions de conteneur personnalisées et gérer des instances de session saines.
Note
Les sondes de conteneur requièrent une version d'API 2025-02-02-preview ou ultérieure.
Les sondes de conteneur vous permettent de définir des contrôles d’intégrité pour les conteneurs de session, similaires aux sondes d’intégrité dans Azure Container Apps. Lorsqu’il est configuré, le pool de sessions surveille chaque instance de session et supprime les instances non saines.
Pool de sessions :
- Garantit que les instances de session prêtes sont saines selon les sondes.
- Supprime automatiquement les instances de session non saines.
- Augmente l’échelle pour maintenir le nombre
readySessionInstancesconfiguré de sessions saines
Les pools de sessions prennent en charge les types de sondes Liveness et Startup. Pour plus d’informations sur le fonctionnement des sondes, consultez Sondes d’intégrité dans Azure Container Apps.
Paramétrage
Lorsque vous créez ou mettez à jour un pool de sessions, spécifiez des sondes dans la properties.customContainerTemplate.containers section de votre charge utile de requête.
Pour obtenir la spécification complète de l’API, consultez l’API SessionPools.
Exemple
{
"properties": {
"customContainerTemplate": {
"containers": [
{
"name": "my-session-container",
"image": "myregistry.azurecr.io/my-session-image:latest",
"probes": [
{
"type": "Liveness",
"httpGet": {
"path": "/health",
"port": 8080
},
"periodSeconds": 10,
"failureThreshold": 3
},
{
"type": "Startup",
"httpGet": {
"path": "/ready",
"port": 8080
},
"periodSeconds": 5,
"failureThreshold": 30
}
]
}
]
},
"dynamicPoolConfiguration": {
"readySessionInstances": 5
}
}
}
Résolution des problèmes
Si votre pool de sessions ne conserve pas le nombre attendu d’éléments sains readySessionInstances, tenez compte des correctifs suivants :
- Vérifiez les journaux de conteneur. Passez en revue les journaux de conteneur de session pour identifier les problèmes liés aux points de terminaison de sonde ou au démarrage du conteneur. Consultez Afficher les journaux des pools de sessions de conteneurs personnalisés.
- Vérifiez la configuration de la sonde. Vérifiez que les chemins d’accès, les ports et les seuils de sonde sont configurés correctement pour votre application.
- Passez en revue l’intégrité du conteneur. Recherchez les problèmes à l’intérieur de votre conteneur qui empêchent les points de terminaison de sonde de répondre correctement.
Arrêter une session
Utilisez l’API Arrêter la session pour arrêter une session dans un pool de sessions de conteneur personnalisé.
Les pools de sessions prennent en charge la gestion automatique des sessions via lifecycleConfiguration, qui gère le cycle de vie de session en fonction de votre configuration. Toutefois, il existe des scénarios où vous pouvez avoir besoin d’un contrôle supplémentaire.
Après avoir alloué une session, vous pouvez appeler cette API pour l’arrêter manuellement à tout moment. Cette approche est utile quand :
- Vous devez nettoyer les ressources avant qu’une session n’atteigne sa durée de vie maximale.
- Votre pool de sessions atteint sa limite maximale de sessions simultanées et vous devez libérer de la capacité pour les nouvelles sessions.
- Une session termine son travail et vous souhaitez libérer immédiatement les ressources.
Référence d’API
Requête
POST <POOL_MANAGEMENT_ENDPOINT>/.management/stopSession?api-version=2025-02-02-preview&identifier=<SESSION_ID>
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
api-version |
ficelle | Oui | Version de l’API à utiliser (par exemple). 2025-02-02-preview |
identifier |
ficelle | Oui | Identifiant unique de la session à arrêter. |
Exemples
Requête
POST https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io/.management/stopSession?api-version=2025-02-02-preview&identifier=testSessionIdentifier
Réponse
HTTP/1.1 200 OK
Content-Type: text/plain
Session testSessionIdentifier in session pool testSessionPool stopped.
Récupérer les informations de session
Vous pouvez interroger votre pool de sessions pour vérifier l’état de la session, obtenir les détails de l’expiration et répertorier toutes les sessions actives. Cette fonctionnalité est utile pour surveiller l’intégrité de session, le suivi de l’utilisation des ressources et l’implémentation de flux de travail de nettoyage personnalisés.
Obtenir une seule session
Pour récupérer des détails sur une session spécifique, utilisez le getSession point de terminaison :
POST <POOL_MANAGEMENT_ENDPOINT>/.management/getSession?identifier=<SESSION_ID>&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
Le getSession point de terminaison retourne les métadonnées de session, notamment l’identificateur de session, l’heure d’expiration actuelle et l’horodatage de création.
Schéma de réponse SessionView
| Champ | Type | Obligatoire | Description |
|---|---|---|---|
identifier |
ficelle | Oui | Identificateur de session que vous avez fourni |
etag |
ficelle | Oui | Identifiant de version opaque associé à la session. Vous pouvez utiliser cet identificateur pour la détection des modifications. |
expiresAt |
DateHeure | Oui | Horodatage UTC lorsque la session sera arrêtée |
createdAt |
DateHeure | Non | Horodatage de création de session |
lastAccessedAt |
DateHeure | Non | Horodatage de la dernière requête à cette session |
Exemple de demande et de réponse
curl -X POST "https://my-pool.env-id.westus2.azurecontainerapps.io/.management/getSession?identifier=user-123&api-version=2025-02-02-preview" \
-H "Authorization: Bearer $TOKEN"
Réponse réussie (HTTP 200) :
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
Répertorier toutes les sessions d’un pool
Pour récupérer la liste de toutes les sessions de votre pool de sessions, utilisez le listSessions point de terminaison :
POST <POOL_MANAGEMENT_ENDPOINT>/.management/listSessions?skip=0&api-version=2025-02-02-preview
Authorization: Bearer <TOKEN>
Pagination
Le point de terminaison de type liste prend en charge une pagination par saut. Par défaut, chaque page retourne jusqu’à 300 sessions. Utilisez le skip paramètre de requête pour parcourir les résultats.
| Paramètre | Description |
|---|---|
skip |
Nombre de sessions à ignorer depuis le début (valeur par défaut : 0) |
nextLink |
URL complète pour la page suivante des résultats (incluse dans la réponse lorsque d’autres résultats existent) |
Schéma de réponse ApiCollectionEnvelope
| Champ | Type | Description |
|---|---|---|
value |
SessionView[] | Tableau d’objets de session |
count |
entier | Nombre de sessions dans la page en cours |
nextLink |
ficelle | URL de la page suivante (null si aucun résultat supplémentaire) |
Exemple de boucle de pagination
POOL_URL="https://my-pool.env-id.westus2.azurecontainerapps.io"
next_url="$POOL_URL/.management/listSessions?skip=0&api-version=2025-02-02-preview"
while [ -n "$next_url" ]; do
response=$(curl -s -X POST "$next_url" \
-H "Authorization: Bearer $TOKEN")
echo "$response" | jq '.value[] | {identifier, expiresAt}'
next_url=$(echo "$response" | jq -r '.nextLink // empty')
done
Exemple de réponse (HTTP 200) :
{
"value": [
{
"identifier": "user-123",
"etag": "a1b2c3d4",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
},
{
"identifier": "user-456",
"etag": "e5f6a7b8",
"expiresAt": "2026-04-30T14:30:00Z",
"createdAt": "2026-04-30T13:30:00Z",
"lastAccessedAt": "2026-04-30T14:29:00Z"
}
],
"count": 2,
"nextLink": "https://my-pool.env-id.westus2.azurecontainerapps.io/.management/listSessions?skip=300"
}
Journalisation
Les pools de sessions de conteneur personnalisés s’intègrent à Azure Monitor et Log Analytics. Les journaux d’application ne sont capturés que si votre conteneur écrit la sortie vers stdout ou stderr. Assurez-vous donc que votre application émet des journaux dans la console.
Prerequisites
- Un environnement Azure Container Apps avec un pool de sessions de conteneur personnalisé
- Un espace de travail Log Analytics ou en créer un lors de l’installation
Configuration de la journalisation
Activer la journalisation Azure Monitor
- Dans le portail Azure, accédez à votre environnement Container Apps.
- Sous Surveillance, sélectionnez Options de journalisation.
- Configurez la destination des journaux sur Azure Monitor.
Configurer les paramètres de diagnostic
- Dans votre environnement Container Apps, sous Surveillance, sélectionnez Paramètres de diagnostic.
- Sélectionnez + Ajouter le paramètre de diagnostic.
- Indiquez un nom pour votre paramètre de diagnostic.
- Sous Journaux, sélectionnez les catégories de journaux associées à la session que vous souhaitez capturer.
- Sous Détails de la destination, sélectionnez Envoyer à l’espace de travail Log Analytics.
- Choisissez votre espace de travail Log Analytics ou créez-en un.
- Cliquez sur Enregistrer.
Tableaux Log Analytics
| Catégorie de journal | Table Log Analytics | Description |
|---|---|---|
| Logs d'application | AppEnvSessionConsoleLogs |
Sortie standard (stdout) et erreur standard (stderr) émise par l’application conteneurisée. |
| Journaux de plateforme |
AppEnvSessionLifecycleLogs, AppEnvSessionPoolEvents |
Événements générés par la plateforme liés à l’allocation, au cycle de vie et à l’état opérationnel du pool de sessions. |
Si les journaux d’activité sont envoyés directement à Log Analytics, les tables utilisent le suffixe _CL, par exemple AppEnvSessionConsoleLogs_CL. Lorsque les journaux d’activité sont routés via les paramètres de diagnostic Azure Monitor, les noms de tables n’incluent pas le suffixe _CL.
Afficher les journaux de session
Une fois les paramètres de diagnostic configurés, les journaux sont envoyés à votre espace de travail Log Analytics.
Journaux de requêtes dans Log Analytics
- Dans le portail Azure, accédez à votre espace de travail Log Analytics.
- Dans le menu de gauche, sélectionnez Journaux.
- Si la requête est en mode Simple, sélectionnez le mode KQL.
- Utilisez kusto Query Language (KQL) pour interroger les journaux de session.
Exemples de requêtes
Afficher les journaux récents de la console des sessions :
AppEnvSessionConsoleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
| take 100
Afficher les événements de cycle de vie de session :
AppEnvSessionLifecycleLogs
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
Afficher les événements du pool de sessions :
AppEnvSessionPoolEvents
| where TimeGenerated > ago(1h)
| order by TimeGenerated desc
Metrics
Azure Container Apps émet des métriques Azure Monitor pour les pools de sessions de conteneur personnalisées. Utilisez ces métriques pour suivre la capacité et l’activité du pool au fil du temps.
Métriques prises en charge
Pour obtenir la liste complète, consultez Métriques prises en charge - Microsoft.App/sessionpools - Azure Monitor.
| Unité de mesure | Nom dans l’API REST | Unité | Aggregation | Dimensions | Fragments de temps | Exportation DS |
|---|---|---|---|---|---|---|
|
Nombre de sessions en cours d’exécution Nombre de pods de session en cours d’exécution dans le pool de sessions |
PoolExecutingPodCount |
Nombre | Total (Somme), Moyenne, Maximum, Minimum | poolName |
PT1M | Oui |
|
Création du nombre de sessions Nombre de pods de session en cours de création dans le pool de sessions |
PoolPendingPodCount |
Nombre | Total (Somme), Moyenne, Maximum, Minimum | poolName |
PT1M | Oui |
|
Nombre de sessions prêtes Nombre de pods de session prêts dans le pool de sessions |
PoolReadyPodCount |
Nombre | Total (Somme), Moyenne, Maximum, Minimum | poolName |
PT1M | Oui |
Afficher les métriques de session
Vous pouvez utiliser des métriques d’environnement Azure Monitor ou Container Apps pour afficher les métriques basées sur les sessions.
Métriques d'Azure Monitor
- Ouvrez la page Métriques Azure Monitor.
- Utilisez Scope pour sélectionner votre pool de sessions de conteneur personnalisé.
- Choisissez une métrique et une agrégation à afficher.
Métriques d’environnement Container Apps
- Dans le portail Azure, ouvrez votre environnement Container Apps.
- Sous Surveillance, sélectionnez Métriques.
- Utilisez Scope pour sélectionner votre pool de sessions de conteneur personnalisé.
- Choisissez une métrique et une agrégation à afficher.