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.
Les pools de sessions fournissent des temps d'allocation de session inférieurs à une seconde et gèrent le cycle de vie de chaque session.
Concepts courants pour les deux pools
Le processus de création d’un pool est légèrement différent selon que vous créez un pool de sessions d’interpréteur de code ou un pool de conteneurs personnalisé. Les concepts suivants s’appliquent aux deux.
Pour créer des pools de sessions à l’aide d’Azure CLI, vérifiez que vous disposez des dernières versions d’Azure CLI et de l’extension Azure Container Apps :
# Upgrade the Azure CLI
az upgrade
# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y
Les commandes courantes du pool de sessions sont les suivantes :
az containerapp sessionpool createaz containerapp sessionpool showaz containerapp sessionpool listaz containerapp sessionpool updateaz containerapp sessionpool delete
Utilisez-la --help avec n’importe quelle commande pour afficher les arguments disponibles et les valeurs prises en charge.
Pour vérifier l’état d’un pool de sessions, utilisez la az containerapp sessionpool show commande :
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Lorsque vous créez ou mettez à jour un pool, vous pouvez définir un nombre maximal de sessions simultanées, une période de refroidissement inactive et déterminer si le trafic réseau sortant est autorisé pour les sessions.
Important
Si vous activez la sortie, le code en cours d’exécution dans la session peut accéder à Internet. Soyez prudent lorsque le code n’est pas approuvé, car il peut être utilisé pour effectuer des activités malveillantes telles que des attaques par déni de service.
Important
Si la session est utilisée pour exécuter du code non approuvé, n’incluez pas d’informations ou de données auxquelles vous ne souhaitez pas que le code non approuvé accède. Supposons que le code est malveillant et dispose d’un accès complet au conteneur, y compris ses variables d’environnement, secrets et fichiers.
Configurer un pool
Permet az containerapp sessionpool create --help d’afficher les derniers arguments CLI pour la configuration du pool de sessions. Cette section se concentre sur les options de configuration avancées qui s’appliquent à toutes les versions d’API.
Configuration du cycle de vie de session
Lorsque vous créez ou mettez à jour un pool de sessions, vous pouvez configurer la façon dont les sessions sont arrêtées en définissant properties.dynamicPoolConfiguration.lifecycleConfiguration. À compter de la version 2025-01-01de l’API, choisissez l’un des deux types de cycle de vie.
Pour obtenir la spécification complète de l’API, consultez la spécification de l’API SessionPools.
Timed (valeur par défaut)
Avec le Timed cycle de vie, une session est supprimée après une période d’inactivité. Toute demande envoyée à une session réinitialise le minuteur de refroidissement, en étendant le délai de vie cooldownPeriodInSecondsde la session.
Note
Timed est pris en charge pour tous les types de pool de sessions et fonctionne de la même façon que executionType: Timed dans les versions antérieures de l’API.
{
"dynamicPoolConfiguration": {
"lifecycleConfiguration": {
"cooldownPeriodInSeconds": 600,
"lifecycleType": "Timed"
}
}
}
| Propriété | Descriptif |
|---|---|
cooldownPeriodInSeconds |
La session est supprimée lorsqu’il n’y a aucune demande pour cette durée. |
maxAlivePeriodInSeconds |
Non pris en charge pour le Timed cycle de vie. |
Point de terminaison de gestion
Important
L’identificateur de session est des informations sensibles qui nécessitent un processus sécurisé lorsque vous créez et gérez sa valeur. Pour protéger cette valeur, votre application doit s’assurer que chaque utilisateur ou locataire a uniquement accès à ses propres sessions.
L’échec de la sécurisation de l’accès aux sessions peut entraîner une mauvaise utilisation ou un accès non autorisé aux données stockées dans les sessions de vos utilisateurs. Pour plus d’informations, consultez identificateurs de session
Toutes les demandes adressées au point de terminaison de gestion du pool doivent inclure un en-tête Authorization avec un jeton du porteur. Pour savoir comment s’authentifier auprès de l’API de gestion de pool, consultez Authentification.
Chaque requête d’API doit également inclure le paramètre identifier de chaîne de requête avec l’ID de session. Cet ID de session unique permet à votre application d’interagir avec des sessions spécifiques. Pour en savoir plus sur les identificateurs de session, consultez Identificateurs de session.
Mise en cache d’images
Lorsqu’un pool de sessions est créé ou mis à jour, Azure Container Apps met en cache l’image conteneur dans le pool. Cette mise en cache permet d’accélérer le processus de création de sessions.
Les modifications apportées à l’image ne sont pas automatiquement reflétées dans les sessions. Pour mettre à jour l’image, mettez à jour le pool de sessions avec une nouvelle balise d’image. Utilisez une balise unique pour chaque mise à jour d’image pour vous assurer que la nouvelle image est extraite.
Pool de sessions d’interpréteur de code
Utilisez la az containerapps sessionpool create commande pour créer le pool. L’exemple suivant crée un pool de sessions d’interpréteur de code Python nommé my-session-pool. Veillez à remplacer <RESOURCE_GROUP> par le nom de votre groupe de ressources avant d’exécuter la commande.
az containerapp sessionpool create \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--location westus2 \
--container-type PythonLTS \
--max-sessions 100 \
--cooldown-period 300 \
--network-status EgressDisabled
Vous pouvez définir les paramètres suivants lorsque vous créez un pool de sessions :
| Réglage | Descriptif |
|---|---|
--container-type |
Type d’interpréteur de code à utiliser. Les valeurs PythonLTS, NodeLTS, Shell et CustomContainer sont prises en charge. |
--max-sessions |
Nombre maximal de sessions allouées autorisées simultanément. La valeur maximale est 600. |
--cooldown-period |
Nombre de secondes inactives autorisées avant l’arrêt. La période d’inactivité est réinitialisée chaque fois que l’API de la session est appelée. La plage autorisée est comprise entre 300 et 3600. |
--network-status |
Spécifie si le trafic réseau sortant est autorisé à partir de la session. Les valeurs valides sont EgressDisabled (par défaut) et EgressEnabled. |
Point de terminaison de gestion de l’interpréteur de code
Pour utiliser des sessions d’interpréteur de code avec des intégrations de framework LLM ou en appelant directement les points de terminaison d’API de gestion, vous avez besoin du point de terminaison de l’API de gestion du pool.
Le point de terminaison est au format https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.
Pour récupérer le point de terminaison de l’API de gestion pour un pool de sessions, consultez la section commune ci-dessus pour obtenir un exemple de commande.
Les points de terminaison suivants sont disponibles pour la gestion des sessions dans un pool :
| Chemin d’accès au point de terminaison | Méthode | Descriptif |
|---|---|---|
code/execute |
POST |
Exécuter du code dans une session. |
files/upload |
POST |
Charger un fichier dans une session. |
files/content/{filename} |
GET |
Téléchargez un fichier à partir d’une session. |
files |
GET |
Répertoriez les fichiers d’une session. |
Vous générez l’URL complète de chaque point de terminaison en concaténant le point de terminaison de l’API de gestion du pool avec le chemin du point de terminaison. La chaîne de requête doit inclure un identifier paramètre contenant l’identificateur de session et un api-version paramètre avec la valeur 2024-02-02-preview. Les versions d’API peuvent changer. Vérifiez donc toujours la dernière version dans la documentation de l’API REST avant de l’utiliser en production.
Par exemple : {sessionManagementEndpoint}/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>
Pour obtenir des références d’API REST, consultez les API de plan de données Container Apps et la vue d’ensemble des opérations de plan de données Container Apps.
Pool de sessions de conteneur personnalisé
Pour créer un pool de sessions de conteneur personnalisé, vous devez fournir des paramètres de configuration d’image de conteneur et de pool.
Vous appelez ou communiquez avec chaque session à l’aide de requêtes HTTP. Le conteneur personnalisé doit exposer un serveur HTTP sur un port que vous spécifiez pour répondre à ces requêtes.
Les fonctionnalités suivantes s’appliquent uniquement aux pools de sessions de conteneur personnalisées.
Point de terminaison de gestion de conteneurs personnalisé
Pour les pools de sessions de conteneur personnalisées, obtenez le point de terminaison de gestion à partir du portail Azure ou de la sortie Azure CLI. Le point de terminaison est retourné en tant que poolManagementEndpoint.
Le point de terminaison est au format https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.
OnContainerExit
Avec le OnContainerExit cycle de vie, une session reste active jusqu’à ce que le conteneur quitte lui-même ou que la période active maximale soit atteinte.
{
"dynamicPoolConfiguration": {
"lifecycleConfiguration": {
"maxAlivePeriodInSeconds": 6000,
"lifecycleType": "OnContainerExit"
}
}
}
| Propriété | Descriptif |
|---|---|
maxAlivePeriodInSeconds |
Durée maximale pendant laquelle la session peut rester active avant d’être supprimée. |
cooldownPeriodInSeconds |
Non pris en charge pour le cycle de vie de OnContainerExit. |
Sondes de conteneur
Les sondes de conteneur vous permettent de définir des contrôles d’intégrité pour les conteneurs de session afin que le pool puisse détecter les sessions non saines et les remplacer pour conserver la readySessionInstances cible saine.
Les pools de sessions prennent en charge les sondes Liveness et Startup . Pour plus d’informations sur le comportement des sondes, consultez Sondes de vérification dans Azure Container Apps.
Lors de la création ou de la mise à jour d’un pool de sessions, spécifiez des sondes dans properties.customContainerTemplate.containers. Pour obtenir le schéma complet du corps de la requête, consultez la référence de l’API Create or Update SessionPools. L’exemple suivant montre une configuration partielle avec des définitions de sonde :
{
"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
}
}
}
Les pools de sessions de conteneur personnalisés nécessitent un environnement Azure Container Apps prenant en charge les profils de charge de travail. Si vous n’avez pas d’environnement, utilisez la az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> commande pour en créer un.
Utilisez la az containerapp sessionpool create commande pour créer un pool de sessions de conteneur personnalisé.
L’exemple suivant crée un pool de sessions nommé my-session-pool avec une image myregistry.azurecr.io/my-container-image:1.0conteneur personnalisée.
Avant d’envoyer la requête, remplacez les balises dans les crochets <> par les valeurs correctes correspondant à votre pool de sessions et à l’identificateur de session.
az containerapp sessionpool create \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--environment <ENVIRONMENT> \
--registry-server myregistry.azurecr.io \
--registry-username <USER_NAME> \
--registry-password <PASSWORD> \
--container-type CustomContainer \
--image myregistry.azurecr.io/my-container-image:1.0 \
--cpu 0.25 --memory 0.5Gi \
--target-port 80 \
--cooldown-period 300 \
--network-status EgressDisabled \
--max-sessions 10 \
--ready-sessions 5 \
--env-vars "key1=value1" "key2=value2" \
--location <LOCATION>
Cette commande crée un pool de sessions avec les paramètres suivants :
| Paramètre | Valeur | Descriptif |
|---|---|---|
--name |
my-session-pool |
Nom du pool de sessions. |
--resource-group |
my-resource-group |
Groupe de ressources qui contient le pool de sessions. |
--environment |
my-environment |
Nom ou ID de ressource de l’environnement de l’application conteneur. |
--container-type |
CustomContainer |
Type de conteneur du pool de sessions. Doit être CustomContainer pour les sessions de conteneur personnalisées. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
Image conteneur à utiliser pour le pool de sessions. |
--registry-server |
myregistry.azurecr.io |
Nom d’hôte du serveur de registre de conteneurs. |
--registry-username |
my-username |
Nom d'utilisateur pour se connecter au registre de conteneurs. |
--registry-password |
my-password |
Le mot de passe pour se connecter au registre de conteneurs. |
--cpu |
0.25 |
Nombre de cœurs requis pour le processeur. |
--memory |
0.5Gi |
Mémoire requise. |
--target-port |
80 |
Port de session utilisé pour le trafic d’entrée. |
--cooldown-period |
300 |
Nombre de secondes pendant lesquelles une session peut être inactive avant la fin de la session. La période d’inactivité est réinitialisée chaque fois que l’API de la session est appelée. La valeur doit être comprise entre 300 et 3600. |
--network-status |
EgressDisabled |
Spécifie si le trafic réseau sortant est autorisé à partir de la session. Les valeurs valides sont EgressDisabled (par défaut) et EgressEnabled. |
--max-sessions |
10 |
Nombre maximal de sessions qui peuvent être allouées en même temps. |
--ready-sessions |
5 |
Nombre cible de sessions disponibles en permanence dans le pool de sessions. Augmentez ce nombre si les sessions sont allouées plus rapidement que le pool ne l'est réapprovisionné. |
--env-vars |
"key1=value1" "key2=value2" |
Variables d’environnement à définir dans le conteneur. |
--location |
"Supported Location" |
Emplacement du pool de sessions. |
Pour mettre à jour le pool de sessions, utilisez la az containerapp sessionpool update commande.