Använda sessionspooler i Azure Container Apps

Sessionspooler ger undersekunder sessionsallokeringstider för nya pooler och ansvarar för hantering och livscykel för varje session.

Konfiguration

Du kan styra beteendet för sessionspooler med hjälp av följande parametrar som är tillgängliga för az containerapp sessionpool create.

Avsikt Fastighet Description
Ange maximalt antal sessioner max-sessions Maximalt antal samtidiga sessioner som tillåts i en pool. Begäranden som kommer in efter att maxgränsen har uppfyllts returneras ett 404 serverfel som anger att inga fler sessioner allokeras till poolen.
Väntetid cooldown-period Antalet sekunder som en session kan vara inaktiv innan sessionen avslutas. Inaktivitetsperioden återställs varje gång sessionens API anropas. Värdet måste vara mellan 300 och 3600.
Antal målsessioner ready-sessions Målantalet sessioner som ska hållas redo i en pool.

Skapa en pool

Processen för att skapa en pool skiljer sig något beroende på om du skapar en kodtolkarpool eller en anpassad containerpool.

Kodtolkarpool

Om du vill skapa en kodtolksessionspool med hjälp av Azure CLI kontrollerar du att du har de senaste versionerna av Azure CLI och Azure Container Apps-tillägget med följande kommandon:

# Upgrade the Azure CLI
az upgrade

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

az containerapps sessionpool create Använd kommandot för att skapa poolen. I följande exempel skapas en Python-kodtolkarsessionspool med namnet my-session-pool. Ersätt <RESOURCE_GROUP> med resursgruppens namn innan du kör kommandot.

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

Du kan definiera följande inställningar när du skapar en sessionspool:

Inställning Description
--container-type Vilken typ av kodtolkare som ska användas. Värden som stöds är PythonLTS, NodeLTSoch Shell.
--max-sessions Det maximala antalet tilldelade sessioner som tillåts samtidigt. Det maximala värdet är 600.
--cooldown-period Antalet tillåtna inaktiva sekunder före avslutning. Inaktivitetsperioden återställs varje gång sessionens API anropas. Det tillåtna intervallet är mellan 300 och 3600.
--network-status Anger om utgående nätverkstrafik tillåts från sessionen. Giltiga värden är EgressDisabled (standard) och EgressEnabled.

Viktigt!

Om du aktiverar utgående trafik kan kod som körs i sessionen komma åt Internet. Var försiktig när koden inte är betrodd eftersom den kan användas för att utföra skadliga aktiviteter, till exempel överbelastningsattacker.

Hämta hanterings-API-slutpunkten

Om du vill använda kodtolkarsessioner med LLM-ramverksintegreringar eller genom att anropa hanterings-API-slutpunkterna direkt behöver du poolens API-slutpunkt för hantering.

Slutpunkten är i formatet https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

För att hämta hanterings-API-slutpunkten för en sessionspool, använd kommandot az containerapps sessionpool show. Ersätt <RESOURCE_GROUP> med resursgruppens namn innan du kör kommandot.

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

Anpassad containerpool

Om du vill skapa en anpassad containersessionspool måste du ange konfigurationsinställningar för containeravbildningar och pooler.

Du anropar eller kommunicerar med varje session med hjälp av HTTP-begäranden. Den anpassade containern måste exponera en HTTP-server på en port som du anger för att svara på dessa begäranden.

Om du vill skapa en anpassad containersessionspool med hjälp av Azure CLI kontrollerar du att du har de senaste versionerna av Azure CLI och Azure Container Apps-tillägget med följande kommandon:

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

Anpassade containersessionspooler kräver en arbetsbelastningsprofilaktiverad Azure Container Apps-miljö. Om du inte har en miljö använder du az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles kommandot för att skapa en.

az containerapp sessionpool create Använd kommandot för att skapa en anpassad containersessionspool.

I följande exempel skapas en sessionspool med namnet my-session-pool med en anpassad containeravbildning myregistry.azurecr.io/my-container-image:1.0.

Innan du skickar begäran ersätter du platshållarna mellan <> hakparenteserna med lämpliga värden för sessionspoolen och sessionsidentifieraren.

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>

Det här kommandot skapar en sessionspool med följande inställningar:

Parameter Värde Description
--name my-session-pool Namnet på sessionspoolen.
--resource-group my-resource-group Resursgruppen som innehåller sessionspoolen.
--environment my-environment Namnet eller resurs-ID:t för containerappens miljö.
--container-type CustomContainer Containertypen för sessionspoolen. Måste vara CustomContainer för anpassade containersessioner.
--image myregistry.azurecr.io/my-container-image:1.0 Containeravbildningen som ska användas för sessionspoolen.
--registry-server myregistry.azurecr.io Värdnamnet för containerregisterservern.
--registry-username my-username Användarnamnet för att logga in i containerregistret.
--registry-password my-password Lösenordet för att logga in i containerregistret.
--cpu 0.25 Antalet kärnor som krävs för processorn.
--memory 0.5Gi Det minne som krävs.
--target-port 80 Sessionsporten som används för inkommande trafik.
--cooldown-period 300 Antalet sekunder som en session kan vara inaktiv innan sessionen avslutas. Inaktivitetsperioden återställs varje gång sessionens API anropas. Värdet måste vara mellan 300 och 3600.
--network-status EgressDisabled Anger om utgående nätverkstrafik tillåts från sessionen. Giltiga värden är EgressDisabled (standard) och EgressEnabled.
--max-sessions 10 Det maximala antalet sessioner som kan allokeras samtidigt.
--ready-sessions 5 Målantalet sessioner som är klara i sessionspoolen hela tiden. Öka det här antalet om sessioner allokeras snabbare än poolen fylls på.
--env-vars "key1=value1" "key2=value2" Miljövariablerna som ska anges i containern.
--location "Supported Location" Platsen för sessionspoolen.

Om du vill kontrollera sessionspoolens status använder du az containerapp sessionpool show kommandot:

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

Om du vill uppdatera sessionspoolen använder du az containerapp sessionpool update kommandot .

Viktigt!

Om sessionen används för att köra kod som inte är betrodd ska du inte inkludera information eller data som du inte vill att den ej betrodda koden ska komma åt. Anta att koden är skadlig och har fullständig åtkomst till containern, inklusive dess miljövariabler, hemligheter och filer.

Hanteringsslutpunkt

Viktigt!

Sessionsidentifieraren är känslig information som kräver en säker process när du skapar och hanterar dess värde. För att skydda det här värdet måste programmet se till att varje användare eller klient endast har åtkomst till sina egna sessioner.

Om du inte kan skydda åtkomsten till sessioner kan det leda till missbruk eller obehörig åtkomst till data som lagras i användarnas sessioner. Mer information finns i Sessionsidentifierare

Följande slutpunkter är tillgängliga för att hantera sessioner i en pool:

Slutpunkt sökväg Metod Description
code/execute POST Köra kod i en session.
files/upload POST Ladda upp en fil till en session.
files/content/{filename} GET Ladda ned en fil från en session.
files GET Visa en lista över filerna i en session.

Du skapar den fullständiga URL:en för varje slutpunkt genom att sammanfoga poolens API-slutpunkt för hantering med slutpunktssökvägen. Frågesträngen måste innehålla en identifier parameter som innehåller sessionsidentifieraren och en api-version parameter med värdet 2024-02-02-preview.

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

Om du vill hämta sessionspoolens hanteringsslutpunkt använder du az containerapp sessionpool show kommandot:

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

Alla begäranden till slutpunkten för poolhantering måste innehålla en Authorization rubrik med en bearer-token. Information om hur du autentiserar med API:et för poolhantering finns i Autentisering.

Varje API-begäran måste också innehålla frågesträngsparametern identifier med sessions-ID:t. Med det här unika sessions-ID:t kan ditt program interagera med specifika sessioner. Mer information om sessionsidentifierare finns i Sessionsidentifierare.

Cachelagring av bilder

När en sessionspool skapas eller uppdateras cachelagrar Azure Container Apps containeravbildningen i poolen. Den här cachelagringen hjälper till att påskynda processen med att skapa nya sessioner.

Ändringar i avbildningen återspeglas inte automatiskt i sessionerna. Uppdatera avbildningen genom att uppdatera sessionspoolen med en ny avbildningstagg. Använd en unik tagg för varje bilduppdatering för att säkerställa att den nya avbildningen hämtas.