Delen via


Sessiegroepen gebruiken in Azure Container Apps

Sessiepools bieden toewijzingstijden van minder dan een seconde voor nieuwe pools en zijn verantwoordelijk voor het beheer en de levenscyclus van elke sessie.

Configuratie

U kunt het gedrag van sessiegroepen beheren met behulp van de volgende parameters die beschikbaar zijn voor az containerapp sessionpool create.

Purpose Vastgoed Description
Maximum aantal sessies instellen max-sessions Het maximum aantal gelijktijdige sessies dat is toegestaan in een groep. Aanvragen die binnenkomen nadat aan de maximale limiet is voldaan, worden een 404 serverfout geretourneerd die aangeeft dat er geen sessies meer aan de pool worden toegewezen.
Wachttijd cooldown-period Het aantal seconden dat een sessie inactief kan zijn voordat de sessie wordt beëindigd. De niet-actieve periode wordt opnieuw ingesteld telkens wanneer de API van de sessie wordt aangeroepen. De waarde moet tussen 300 en 3600.
Aantal doelsessies ready-sessions Het doelaantal sessies dat klaar moet worden gehouden in een pool.

Een pool maken

Het proces voor het maken van een pool verschilt enigszins, afhankelijk van of u een code-interpretergroep of een aangepaste containergroep maakt.

Code-interpretergroep

Als u een sessiegroep voor code-interpreters wilt maken met behulp van de Azure CLI, moet u ervoor zorgen dat u de nieuwste versies van de Azure CLI en de Azure Container Apps-extensie hebt met de volgende opdrachten:

# Upgrade the Azure CLI
az upgrade

# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y

Gebruik de az containerapps sessionpool create opdracht om de pool te maken. In het volgende voorbeeld wordt een python-code-interpretersessiegroep gemaakt met de naam my-session-pool. Zorg ervoor dat je <RESOURCE_GROUP> vervangt door de naam van een resourcegroep voordat je de opdracht uitvoert.

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

U kunt de volgende instellingen definiëren wanneer u een sessiegroep maakt:

Configuratie Description
--container-type Het type code-interpreter dat moet worden gebruikt. Ondersteunde waarden zijn onder andere PythonLTS, NodeLTSen Shell.
--max-sessions Het maximum aantal toegewezen sessies dat gelijktijdig is toegestaan. De maximumwaarde is 600.
--cooldown-period Het aantal toegestane seconden voor inactiviteit vóór beëindiging. De niet-actieve periode wordt opnieuw ingesteld telkens wanneer de API van de sessie wordt aangeroepen. Het toegestane bereik ligt tussen 300 en 3600.
--network-status Hiermee wordt aangegeven of uitgaand netwerkverkeer vanaf de sessie is toegestaan. Geldige waarden zijn EgressDisabled (standaard) en EgressEnabled.

Belangrijk

Als u uitgaande verbindingen inschakelt, heeft code die in de sessie wordt uitgevoerd toegang tot internet. Wees voorzichtig wanneer de code niet wordt vertrouwd omdat deze kan worden gebruikt voor het uitvoeren van schadelijke activiteiten, zoals Denial of Service-aanvallen.

Het eindpunt van de beheer-API ophalen

Als u code-interpretersessies wilt gebruiken met LLM-frameworkintegraties of door de beheer-API-eindpunten rechtstreeks aan te roepen, hebt u het beheer-API-eindpunt van de pool nodig.

Het eindpunt heeft de indeling https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

Gebruik de az containerapps sessionpool show opdracht om het beheer-API-eindpunt voor een sessiegroep op te halen. Zorg ervoor dat u <RESOURCE_GROUP> vervangt door de naam van uw resourcegroep voordat u het commando uitvoert.

az containerapp sessionpool show \
    --name my-session-pool \
    --resource-group <RESOURCE_GROUP> \
    --query 'properties.poolManagementEndpoint' -o tsv

Aangepaste containergroep

Om een aangepaste containersessiepool te maken, moet u een containerimage en de poolconfiguratie-instellingen opgeven.

U roept elke sessie aan of communiceert met behulp van HTTP-aanvragen. De aangepaste container moet een HTTP-server beschikbaar maken op een poort die u opgeeft om op deze aanvragen te reageren.

Als u een aangepaste containersessiegroep wilt maken met behulp van de Azure CLI, moet u ervoor zorgen dat u de nieuwste versies van de Azure CLI en de Azure Container Apps-extensie hebt met de volgende opdrachten:

az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y

Voor aangepaste containersessiegroepen is een Azure Container Apps-omgeving met een workloadprofiel vereist. Als u geen omgeving hebt, gebruikt u de az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles opdracht om er een te maken.

Gebruik de az containerapp sessionpool create opdracht om een aangepaste containersessiegroep te maken.

In het volgende voorbeeld wordt een sessiepool met de naam my-session-pool gemaakt met een aangepaste containerimage myregistry.azurecr.io/my-container-image:1.0.

Voordat u de aanvraag verzendt, vervangt u de tijdelijke aanduidingen tussen de <> haken door de juiste waarden voor uw sessiegroep en sessie-id.

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>

Met deze opdracht maakt u een sessiegroep met de volgende instellingen:

Kenmerk Waarde Description
--name my-session-pool De naam van de sessiegroep.
--resource-group my-resource-group De resourcegroep die de sessiepool bevat.
--environment my-environment De naam of resource-id van de omgeving van de containerapp.
--container-type CustomContainer Het containertype van de sessiepool. Moet CustomContainer zijn voor aangepaste containersessies.
--image myregistry.azurecr.io/my-container-image:1.0 De containerimage die moet worden gebruikt voor de session pool.
--registry-server myregistry.azurecr.io De hostnaam van de containerregisterserver.
--registry-username my-username De gebruikersnaam om u aan te melden bij het containerregister.
--registry-password my-password Het wachtwoord om u aan te melden bij het containerregister.
--cpu 0.25 Het vereiste aantal CPU-kernen.
--memory 0.5Gi Het vereiste geheugen.
--target-port 80 De sessiepoort die wordt gebruikt voor inkomend verkeer.
--cooldown-period 300 Het aantal seconden dat een sessie inactief kan zijn voordat de sessie wordt beëindigd. De niet-actieve periode wordt opnieuw ingesteld telkens wanneer de API van de sessie wordt aangeroepen. De waarde moet tussen 300 en 3600.
--network-status EgressDisabled Hiermee wordt aangegeven of uitgaand netwerkverkeer vanaf de sessie is toegestaan. Geldige waarden zijn EgressDisabled (standaard) en EgressEnabled.
--max-sessions 10 Het maximum aantal sessies dat tegelijkertijd kan worden toegewezen.
--ready-sessions 5 Het doelaantal sessies die altijd beschikbaar zijn in de sessiepool. Verhoog dit aantal als sessies sneller worden toegewezen dan de pool wordt aangevuld.
--env-vars "key1=value1" "key2=value2" De omgevingsvariabelen die moeten worden ingesteld in de container.
--location "Supported Location" De locatie van de sessiegroep.

Gebruik de az containerapp sessionpool show opdracht om de status van de sessiegroep te controleren:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Gebruik het az containerapp sessionpool update commando om de sessiecluster bij te werken.

Belangrijk

Als de sessie wordt gebruikt om niet-vertrouwde code uit te voeren, neemt u geen informatie of gegevens op die u niet wilt dat de niet-vertrouwde code toegang heeft. Stel dat de code schadelijk is en volledige toegang heeft tot de container, inclusief de omgevingsvariabelen, geheimen en bestanden.

Beheereindpunt

Belangrijk

De sessie-id is gevoelige informatie die een veilig proces vereist tijdens het maken en beheren van de waarde. Om deze waarde te beveiligen, moet uw toepassing ervoor zorgen dat elke gebruiker of tenant alleen toegang heeft tot hun eigen sessies.

Als u de toegang tot sessies niet kunt beveiligen, kan dit leiden tot misbruik of onbevoegde toegang tot gegevens die zijn opgeslagen in de sessies van uw gebruikers. Zie Sessie-id's voor meer informatie

De volgende eindpunten zijn beschikbaar voor het beheren van sessies in een pool:

Pad naar eindpunt Methode Description
code/execute POST Voer code uit in een sessie.
files/upload POST Upload een bestand naar een sessie.
files/content/{filename} GET Een bestand downloaden van een sessie.
files GET De bestanden in een sessie weergeven.

U bouwt de volledige URL voor elk eindpunt door het beheer-API-eindpunt van de pool samen te voegen met het eindpuntpad. De queryreeks moet een identifier parameter bevatten die de sessie-id bevat en een api-version parameter met de waarde 2024-02-02-preview.

Bijvoorbeeld: https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>

Gebruik de az containerapp sessionpool show opdracht om het beheereindpunt van de sessiegroep op te halen:

az containerapp sessionpool show \
    --name <SESSION_POOL_NAME> \
    --resource-group <RESOURCE_GROUP> \
    --query "properties.poolManagementEndpoint" \
    --output tsv

Alle aanvragen voor het eindpunt voor poolbeheer moeten een Authorization header met een Bearer-token bevatten. Zie Verificatie voor meer informatie over verificatie met de poolbeheer-API.

Elke API-aanvraag moet ook de queryreeksparameter identifier met de sessie-id bevatten. Met deze unieke sessie-id kan uw toepassing communiceren met specifieke sessies. Zie Sessie-id's voor meer informatie over sessie-id's.

Afbeeldingscache

Wanneer een sessiepool wordt gemaakt of bijgewerkt, cachet Azure Container Apps de containerafbeeldingen in de pool. Deze caching helpt het proces van het maken van nieuwe sessies te versnellen.

Eventuele wijzigingen in de afbeelding worden niet automatisch doorgevoerd in de sessies. Werk de afbeelding bij door de sessiegroep bij te werken met een nieuwe afbeeldingstag. Gebruik een unieke tag voor elke afbeeldingupdate om ervoor te zorgen dat de nieuwe afbeelding wordt geüpload.