Udostępnij przez


Korzystanie z pul sesji w usłudze Azure Container Apps

Baseny sesji zapewniają czasy alokacji sesji w podsekundach dla nowych pul sesji i są odpowiedzialne za zarządzanie oraz cykl życia każdej sesji.

Konfiguracja

Zachowanie pul sesji można kontrolować przy użyciu następujących parametrów dostępnych dla az containerapp sessionpool create.

Przeznaczenie Majątek Description
Ustawianie maksymalnej liczby sesji max-sessions Maksymalna liczba współbieżnych sesji dozwolonych w puli. Żądania, które pojawiają się po osiągnięciu maksymalnego limitu, skutkują zwróceniem 404 błędu serwera, wskazującego, że nie będą przydzielane więcej sesji do puli.
Czas trwania oczekiwania cooldown-period Liczba sekund bezczynności sesji przed zakończeniem sesji. Okres bezczynności jest resetowany za każdym razem, gdy interfejs API sesji jest wywoływany. Wartość musi zawierać się między 300 i 3600.
Docelowa ilość sesji ready-sessions Docelowa liczba sesji, które mają być gotowe w puli.

Utwórz pulę

Proces tworzenia puli różni się nieco w zależności od tego, czy tworzysz pulę interpreterów kodu, czy niestandardową pulę kontenerów.

Pula interpreterów kodu

Aby utworzyć pulę sesji interpretera kodu przy użyciu interfejsu wiersza polecenia platformy Azure, upewnij się, że masz najnowsze wersje interfejsu wiersza polecenia platformy Azure i rozszerzenie Azure Container Apps za pomocą następujących poleceń:

# Upgrade the Azure CLI
az upgrade

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

Użyj polecenia , az containerapps sessionpool create aby utworzyć pulę. Poniższy przykład tworzy pulę sesji interpretera kodu języka Python o nazwie my-session-pool. Upewnij się, że zastąpiłeś <RESOURCE_GROUP> nazwą grupy zasobów, zanim uruchomisz polecenie.

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

Podczas tworzenia puli sesji można zdefiniować następujące ustawienia:

Setting Description
--container-type Typ interpretera kodu do użycia. Obsługiwane wartości to PythonLTS, NodeLTSi Shell.
--max-sessions Maksymalna liczba przydzielonych sesji dozwolonych współbieżnie. Wartość maksymalna to 600.
--cooldown-period Liczba dozwolonych sekund bezczynności przed zakończeniem. Okres bezczynności jest resetowany za każdym razem, gdy interfejs API sesji jest wywoływany. Dozwolony zakres to między 300 i 3600.
--network-status Określa, czy wychodzący ruch sieciowy jest dozwolony z sesji. Prawidłowe wartości to EgressDisabled (wartość domyślna) i EgressEnabled.

Ważne

Jeśli włączysz ruch wychodzący, kod uruchomiony w sesji będzie mógł uzyskać dostęp do Internetu. Należy zachować ostrożność, gdy kod jest niezaufany, ponieważ może służyć do wykonywania złośliwych działań, takich jak ataki typu "odmowa usługi".

Pobierz punkt końcowy interfejsu API zarządzania

Aby używać sesji interpretera kodu z integracją platformy LLM lub bezpośrednio wywołując punkty końcowe interfejsu API zarządzania, potrzebny jest punkt końcowy interfejsu API zarządzania puli.

Punkt końcowy ma format https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.

Aby uzyskać punkt końcowy interfejsu API zarządzania dla puli sesji, użyj polecenia az containerapps sessionpool show. Przed uruchomieniem polecenia pamiętaj, aby zastąpić ciąg <RESOURCE_GROUP> swoją nazwą grupy zasobów.

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

Niestandardowa pula kontenerów

Aby utworzyć niestandardową pulę sesji kontenera, należy podać obraz kontenera oraz ustawienia konfiguracji puli.

Każda sesja jest wywoływana lub komunikowana przy użyciu żądań HTTP. Kontener niestandardowy musi uwidocznić serwer HTTP na porcie określonym w celu odpowiadania na te żądania.

Aby utworzyć niestandardową pulę sesji kontenera przy użyciu interfejsu wiersza polecenia platformy Azure, upewnij się, że masz najnowsze wersje interfejsu wiersza polecenia platformy Azure i rozszerzenie Azure Container Apps za pomocą następujących poleceń:

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

Niestandardowe pule sesji kontenerów wymagają środowiska usługi Azure Container Apps z włączoną obsługą profilu obciążenia. Jeśli nie masz środowiska, użyj az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles polecenia , aby go utworzyć.

Użyj polecenia az containerapp sessionpool create, aby utworzyć niestandardową pulę sesji kontenera.

Poniższy przykład tworzy pulę sesji o nazwie my-session-pool z niestandardowym obrazem myregistry.azurecr.io/my-container-image:1.0 kontenera.

Przed wysłaniem żądania zastąp symbole zastępcze między <> nawiasami odpowiednimi wartościami dla puli sesji i identyfikatorem sesji.

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>

To polecenie tworzy pulę sesji z następującymi ustawieniami:

Parameter Wartość Description
--name my-session-pool Nazwa puli sesji.
--resource-group my-resource-group Grupa zasobów zawierająca pulę sesji.
--environment my-environment Nazwa lub identyfikator zasobu środowiska aplikacji kontenera.
--container-type CustomContainer Typ kontenera puli sesyjnej. Musi być CustomContainer dla niestandardowych sesji kontenera.
--image myregistry.azurecr.io/my-container-image:1.0 Obraz kontenera do wykorzystania dla puli sesji.
--registry-server myregistry.azurecr.io Nazwa hosta serwera rejestru kontenerów.
--registry-username my-username Nazwa użytkownika do zalogowania się do rejestru kontenerów.
--registry-password my-password Hasło do logowania się do rejestru kontenerów.
--cpu 0.25 Wymagana liczba rdzeni CPU.
--memory 0.5Gi Wymagana pamięć.
--target-port 80 Port sesji używany do ruchu przychodzącego.
--cooldown-period 300 Liczba sekund bezczynności sesji przed zakończeniem sesji. Okres bezczynności jest resetowany za każdym razem, gdy interfejs API sesji jest wywoływany. Wartość musi zawierać się między 300 i 3600.
--network-status EgressDisabled Określa, czy wychodzący ruch sieciowy jest dozwolony z sesji. Prawidłowe wartości to EgressDisabled (wartość domyślna) i EgressEnabled.
--max-sessions 10 Maksymalna liczba sesji, które można przydzielić w tym samym czasie.
--ready-sessions 5 Docelowa liczba sesji, które są gotowe w puli sesji przez cały czas. Zwiększ tę liczbę, jeśli sesje są przydzielane szybciej niż pula jest uzupełniana.
--env-vars "key1=value1" "key2=value2" Zmienne środowiskowe do ustawienia w kontenerze.
--location "Supported Location" Lokalizacja puli sesji.

Aby sprawdzić stan puli sesji, użyj polecenia az containerapp sessionpool show.

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

Aby zaktualizować pulę sesji, użyj polecenia az containerapp sessionpool update.

Ważne

Jeśli sesja jest używana do uruchamiania niezaufanego kodu, nie dołączaj informacji ani danych, do których nie chcesz uzyskiwać dostępu za pomocą niezaufanego kodu. Załóżmy, że kod jest złośliwy i ma pełny dostęp do kontenera, w tym jego zmiennych środowiskowych, wpisów tajnych i plików.

Punkt końcowy zarządzania

Ważne

Identyfikator sesji jest poufną informacją, która wymaga bezpiecznego procesu podczas tworzenia i zarządzania jego wartością. Aby chronić tę wartość, aplikacja musi zapewnić, że każdy użytkownik lub dzierżawca ma dostęp tylko do swoich własnych sesji.

Brak bezpiecznego dostępu do sesji może spowodować nieprawidłowe użycie lub nieautoryzowany dostęp do danych przechowywanych w sesjach użytkowników. Aby uzyskać więcej informacji, zobacz Identyfikatory sesji

Dostępne są następujące punkty końcowe do zarządzania sesjami w ramach puli:

Ścieżka punktu końcowego Metoda Description
code/execute POST Wykonywanie kodu w sesji.
files/upload POST Przekaż plik do sesji.
files/content/{filename} GET Pobierz plik z sesji.
files GET Wyświetl listę plików w sesji.

Pełny adres URL dla każdego punktu końcowego można utworzyć, łącząc punkt końcowy interfejsu API zarządzania pulą ze ścieżką punktu końcowego. Ciąg zapytania musi zawierać identifier parametr zawierający identyfikator sesji i api-version parametr z wartością 2024-02-02-preview.

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

Aby pobrać punkt końcowy zarządzania puli sesji, użyj polecenia az containerapp sessionpool show.

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

Wszystkie żądania do punktu końcowego zarządzania pulą Authorization muszą zawierać nagłówek z tokenem typu bearer. Aby dowiedzieć się, jak uwierzytelniać się za pomocą interfejsu API zarządzania pulą, zobacz Uwierzytelnianie.

Każde żądanie API musi również zawierać parametr identifier ciągu zapytania z identyfikatorem sesji. Ten unikatowy identyfikator sesji umożliwia aplikacji interakcję z określonymi sesjami. Aby dowiedzieć się więcej na temat identyfikatorów sesji, zobacz Identyfikatory sesji.

Buforowanie obrazów

Po utworzeniu lub zaktualizowaniu puli sesji usługa Azure Container Apps buforuje obraz kontenera w puli. Cache'owanie pomaga zwiększyć szybkość procesu tworzenia nowych sesji.

Wszelkie zmiany obrazu nie są automatycznie odzwierciedlane w sesjach. Aby zaktualizować obraz, zaktualizuj pulę sesji za pomocą nowej etykiety obrazu. Użyj unikatowego tagu dla każdej aktualizacji obrazu, aby upewnić się, że nowy obraz jest ściągany.