Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sitzungspools bieten Zuweisungszeiten von Bruchteilen einer Sekunde und verwalten den Lebenszyklus jeder Sitzung.
Allgemeine Konzepte für beide Pools
Der Prozess zum Erstellen eines Pools unterscheidet sich geringfügig davon, ob Sie einen Codedolmetschersitzungspool oder einen benutzerdefinierten Containerpool erstellen. Die folgenden Konzepte gelten für beide.
Um Sitzungspools mit der Azure CLI zu erstellen, stellen Sie sicher, dass Sie über die neuesten Versionen der Azure CLI und die Azure Container Apps-Erweiterung verfügen:
# Upgrade the Azure CLI
az upgrade
# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y
Allgemeine Sitzungspoolbefehle umfassen:
az containerapp sessionpool createaz containerapp sessionpool showaz containerapp sessionpool listaz containerapp sessionpool updateaz containerapp sessionpool delete
Verwenden Sie --help mit einem Befehl, um verfügbare Argumente und unterstützte Werte anzuzeigen.
Verwenden Sie den az containerapp sessionpool show Befehl, um den Status eines Sitzungspools zu überprüfen:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Wenn Sie einen Pool erstellen oder aktualisieren, können Sie eine maximale Anzahl gleichzeitiger Sitzungen, einen Leerlaufzeitraum und festlegen, ob ausgehender Netzwerkdatenverkehr für Sitzungen zulässig ist.
Von Bedeutung
Wenn Sie ausgehenden Datenverkehr zulassen, kann Code, der in der Sitzung ausgeführt wird, auf das Internet zugreifen. Seien Sie vorsichtig, wenn der Code nicht vertrauenswürdig ist, da er zum Ausführen bösartiger Aktivitäten wie Denial-of-Service-Angriffe verwendet werden kann.
Von Bedeutung
Wenn die Sitzung verwendet wird, um nicht vertrauenswürdigen Code auszuführen, schließen Sie keine Informationen oder Daten ein, auf die der nicht vertrauenswürdige Code zugreifen soll. Gehen Sie davon aus, dass der Code bösartig ist und vollzugriff auf den Container hat, einschließlich der Umgebungsvariablen, geheimen Schlüssel und Dateien.
Konfigurieren eines Pools
Verwenden Sie az containerapp sessionpool create --help, um die neuesten CLI-Argumente für die Konfiguration des Sitzungspools anzuzeigen. Dieser Abschnitt konzentriert sich auf erweiterte Konfigurationsoptionen, die für API-Versionen gelten.
Sitzungslebenszykluskonfiguration
Wenn Sie einen Sitzungspool erstellen oder aktualisieren, können Sie konfigurieren, wie Sitzungen durch Festlegen properties.dynamicPoolConfiguration.lifecycleConfigurationbeendet werden. Wählen Sie ab API-Version 2025-01-01einen von zwei Lebenszyklustypen aus.
Die vollständige API-Spezifikation finden Sie in der SessionPools-API-Spezifikation.
Zeitgesteuert (Standard)
Während des Timed Lebenszyklus wird eine Sitzung nach einem Zeitraum der Inaktivität gelöscht. Jede Anforderung, die an eine Sitzung gesendet wird, setzt den Cooldown-Timer zurück und verlängert die Zeit bis zum Ende der Lebensdauer der Sitzung um cooldownPeriodInSeconds.
Hinweis
Timed wird für alle Sitzungspooltypen unterstützt und funktioniert genauso wie executionType: Timed in früheren API-Versionen.
{
"dynamicPoolConfiguration": {
"lifecycleConfiguration": {
"cooldownPeriodInSeconds": 600,
"lifecycleType": "Timed"
}
}
}
| Eigentum | Description |
|---|---|
cooldownPeriodInSeconds |
Die Sitzung wird gelöscht, wenn keine Anforderungen für diese Dauer vorhanden sind. |
maxAlivePeriodInSeconds |
Wird für den Timed Lebenszyklus nicht unterstützt. |
Verwaltungsendpunkt
Von Bedeutung
Der Sitzungsbezeichner ist vertrauliche Informationen, die einen sicheren Prozess erfordern, während Sie seinen Wert erstellen und verwalten. Um diesen Wert zu schützen, muss Ihre Anwendung sicherstellen, dass jeder Benutzer oder Mandant nur Zugriff auf seine eigenen Sitzungen hat.
Wenn sie den Zugriff auf Sitzungen nicht sichern, kann es zu Missbrauch oder unbefugtem Zugriff auf daten führen, die in den Sitzungen Ihrer Benutzer gespeichert sind. Weitere Informationen finden Sie unter Sitzungsbezeichner
Alle Anforderungen an den Poolverwaltungsendpunkt müssen einen Authorization Header mit einem Bearertoken enthalten. Informationen zum Authentifizieren mit der Poolverwaltungs-API finden Sie unter "Authentifizierung".
Jede API-Anforderung muss auch den Abfragezeichenfolgenparameter identifier mit der Sitzungs-ID enthalten. Mit dieser eindeutigen Sitzungs-ID kann Ihre Anwendung mit bestimmten Sitzungen interagieren. Weitere Informationen zu Sitzungsbezeichnern finden Sie unter Sitzungs-IDs.
Zwischenspeichern von Bildern
Wenn ein Sitzungspool erstellt oder aktualisiert wird, zwischenspeichert Azure Container Apps das Container-Image im Pool. Mit dieser Zwischenspeicherung können Sie den Prozess des Erstellens neuer Sitzungen beschleunigen.
Alle Änderungen am Bild werden in den Sitzungen nicht automatisch wiedergegeben. Um das Image zu aktualisieren, aktualisieren Sie den Sitzungspool mit einem neuen Imagetag. Verwenden Sie für jede Bildaktualisierung ein eindeutiges Tag, um sicherzustellen, dass das neue Bild abgerufen wird.
Code-Interpreter-Sitzungspool
Verwenden Sie den az containerapps sessionpool create Befehl, um den Pool zu erstellen. Im folgenden Beispiel wird ein Python-Codedolmetscher-Sitzungspool mit dem Namen erstellt my-session-pool. Stellen Sie sicher, dass Sie <RESOURCE_GROUP> durch den Namen Ihrer Ressourcengruppe ersetzen, bevor Sie den Befehl ausführen.
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
Sie können beim Erstellen eines Sitzungspools die folgenden Einstellungen definieren:
| Setting | Description |
|---|---|
--container-type |
Der Typ des zu verwendenden Codedolmetschers. Unterstützte Werte: PythonLTS, NodeLTS, Shell und CustomContainer. |
--max-sessions |
Die maximale Anzahl der zugewiesenen Sitzungen, die gleichzeitig zulässig sind. Der Maximalwert ist 600. |
--cooldown-period |
Die Anzahl der zulässigen Leerlauf-Sekunden vor der Beendigung. Der Leerlaufzeitraum wird jedes Mal zurückgesetzt, wenn die API der Sitzung aufgerufen wird. Der zulässige Bereich liegt zwischen 300 und 3600. |
--network-status |
Gibt an, ob ausgehender Netzwerkdatenverkehr aus der Sitzung zulässig ist. Gültige Werte sind EgressDisabled (Standard) und EgressEnabled. |
Codedolmetscherverwaltungsendpunkt
Um Sitzungen mit Code-Interpreter mit LLM-Framework-Integrationen zu nutzen oder direkt die Verwaltungs-API-Endpunkte aufzurufen, benötigen Sie den Verwaltungs-API-Endpunkt des Pools.
Der Endpunkt befindet sich im Format https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.
Informationen zum Abrufen des Verwaltungs-API-Endpunkts für einen Sitzungspool finden Sie im allgemeinen Abschnitt oben für einen Beispielbefehl.
Die folgenden Endpunkte stehen für die Verwaltung von Sitzungen in einem Pool zur Verfügung:
| Endpunktpfad | Methode | Description |
|---|---|---|
code/execute |
POST |
Ausführen von Code in einer Sitzung. |
files/upload |
POST |
Hochladen einer Datei in eine Sitzung. |
files/content/{filename} |
GET |
Laden Sie eine Datei aus einer Sitzung herunter. |
files |
GET |
Die Dateien in einer Sitzung auflisten. |
Sie erstellen die vollständige URL für jeden Endpunkt, indem Sie den Verwaltungs-API-Endpunkt des Pools mit dem Endpunktpfad verketten. Die Abfragezeichenfolge muss einen identifier Parameter enthalten, der den Sitzungsbezeichner und einen api-version Parameter mit dem Wert 2024-02-02-previewenthält. API-Versionen können sich ändern. Bestätigen Sie daher immer die neueste Version in den REST-API-Dokumenten, bevor Sie sie in der Produktion verwenden.
Beispiel: {sessionManagementEndpoint}/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>
Informationen zu REST-API-Verweisen finden Sie unter Container-Apps-Datenebenen-APIs und der Übersicht über Datenebenenvorgänge für Container-Apps.
Benutzerdefinierter Container-Sitzungspool
Um einen benutzerdefinierten Containersitzungspool zu erstellen, müssen Sie ein Containerimage und Konfigurationseinstellungen für den Pool bereitstellen.
Sie rufen jede Sitzung mithilfe von HTTP-Anfragen auf oder kommunizieren mit ihnen. Der benutzerdefinierte Container muss einen HTTP-Server auf einem Port verfügbar machen, den Sie angeben, um auf diese Anforderungen zu reagieren.
Die folgenden Funktionen gelten nur für benutzerdefinierte Containersitzungspools.
Benutzerdefinierter Containerverwaltungsendpunkt
Rufen Sie für benutzerdefinierte Containersitzungspools den Verwaltungsendpunkt aus dem Azure-Portal oder der Azure CLI-Ausgabe ab. Der Endpunkt wird als poolManagementEndpoint zurückgegeben.
Der Endpunkt befindet sich im Format https://<SESSION_POOL_NAME>.<ENVIRONMENT_ID>.<REGION>.azurecontainerapps.io.
BeiVerlassenDesContainers
Während des OnContainerExit Lebenszyklus bleibt eine Sitzung aktiv, bis der Container eigenständig beendet wird oder der maximale Lebendigkeitszeitraum erreicht ist.
{
"dynamicPoolConfiguration": {
"lifecycleConfiguration": {
"maxAlivePeriodInSeconds": 6000,
"lifecycleType": "OnContainerExit"
}
}
}
| Eigentum | Description |
|---|---|
maxAlivePeriodInSeconds |
Maximale Zeit, bis die Sitzung aktiv bleiben kann, bevor sie gelöscht wird. |
cooldownPeriodInSeconds |
Wird für den OnContainerExit Lebenszyklus nicht unterstützt. |
Containersonden
Containersonden ermöglichen es Ihnen, Gesundheitsprüfungen für Sitzungscontainer zu definieren, sodass der Pool fehlerhafte Sitzungen erkennen und ersetzen kann, um das readySessionInstances Ziel gesund zu halten.
Sitzungspools unterstützen Liveness und Startup-Probes. Weitere Informationen zum Probeverhalten finden Sie unter Health Probes in Azure Container Apps.
Geben Sie beim Erstellen oder Aktualisieren eines Sitzungspools Abfragen in properties.customContainerTemplate.containers an. Informationen zum vollständigen Anforderungstextschema finden Sie in der Referenz "SessionPools Create" oder "Update API". Das folgende Beispiel zeigt eine partielle Konfiguration mit Probedefinitionen:
{
"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
}
}
}
Benutzerdefinierte Containersitzungspools erfordern eine Workloadprofile-fähige Azure-Container-Apps-Umgebung. Wenn Sie nicht über eine Umgebung verfügen, verwenden Sie den az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> Befehl zum Erstellen einer Umgebung.
Verwenden Sie den Befehl az containerapp sessionpool create, um einen benutzerdefinierten Containersitzungspool zu erstellen.
Im folgenden Beispiel wird ein Sitzungspool namens my-session-pool mit einem benutzerdefinierten Containerimage myregistry.azurecr.io/my-container-image:1.0 erstellt.
Ersetzen Sie vor dem Senden der Anforderung die Platzhalter zwischen den <> Klammern durch die entsprechenden Werte für Den Sitzungspool und den Sitzungsbezeichner.
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>
Mit diesem Befehl wird ein Sitzungspool mit den folgenden Einstellungen erstellt:
| Parameter | Wert | Description |
|---|---|---|
--name |
my-session-pool |
Der Name des Sitzungspools. |
--resource-group |
my-resource-group |
Die Ressourcengruppe, die den Sitzungspool enthält. |
--environment |
my-environment |
Der Name oder die Ressourcen-ID der Umgebung der Container-App. |
--container-type |
CustomContainer |
Der Containertyp des Sitzungspools. Für benutzerdefinierte Containersitzungen muss der Typ CustomContainer sein. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
Das Container-Image, das für den Sitzungspool verwendet werden soll. |
--registry-server |
myregistry.azurecr.io |
Der Hostname des Containerregistrierungsservers. |
--registry-username |
my-username |
Der Benutzername, der sich bei der Containerregistrierung anmeldet. |
--registry-password |
my-password |
Das Kennwort für die Anmeldung bei der Containerregistrierung. |
--cpu |
0.25 |
Die erforderliche CPU in Kernen. |
--memory |
0.5Gi |
Der erforderliche Arbeitsspeicher. |
--target-port |
80 |
Der Sitzungsport, der für eingehenden Datenverkehr verwendet wird. |
--cooldown-period |
300 |
Die Anzahl der Sekunden, die eine Sitzung im Leerlauf sein kann, bevor die Sitzung beendet wird. Der Leerlaufzeitraum wird jedes Mal zurückgesetzt, wenn die API der Sitzung aufgerufen wird. Der Wert muss zwischen 300 und 3600. |
--network-status |
EgressDisabled |
Gibt an, ob ausgehender Netzwerkdatenverkehr aus der Sitzung zulässig ist. Gültige Werte sind EgressDisabled (Standard) und EgressEnabled. |
--max-sessions |
10 |
Die maximale Anzahl von Sitzungen, die gleichzeitig zugewiesen werden können. |
--ready-sessions |
5 |
Die Zielanzahl der Sitzungen, die immer im Sitzungspool bereit sind. Erhöhen Sie diese Anzahl, wenn Sitzungen schneller zugewiesen werden, als der Pool aufgefüllt wird. |
--env-vars |
"key1=value1" "key2=value2" |
Die Umgebungsvariablen, die im Container festgelegt werden sollen. |
--location |
"Supported Location" |
Der Speicherort des Sitzungspools. |
Verwenden Sie den az containerapp sessionpool update Befehl, um den Sitzungspool zu aktualisieren.