Freigeben über


Verwenden von Sitzungspools in Azure-Container-Apps

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 create
  • az containerapp sessionpool show
  • az containerapp sessionpool list
  • az containerapp sessionpool update
  • az 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.