Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os pools de sessão fornecem tempos de alocação de sessão inferiores a um segundo para novos pools e são responsáveis pelo gerenciamento e ciclo de vida de cada sessão.
Configuração
Você pode controlar o comportamento dos pools de sessão usando os seguintes parâmetros disponíveis para az containerapp sessionpool create.
| Propósito | Propriedade | Description |
|---|---|---|
| Definir o número máximo de sessões | max-sessions |
O número máximo de sessões simultâneas permitidas em um pool. As solicitações que chegam depois que o limite máximo é atendido são retornadas, um 404 erro de servidor indicando que não há mais sessões sendo alocadas para o pool. |
| Duração da espera | cooldown-period |
O número de segundos que uma sessão pode ficar ociosa antes de a sessão ser encerrada. O período ocioso é redefinido sempre que a API da sessão é chamada. O valor deve estar entre 300 e 3600. |
| Quantidade de sessão de destino | ready-sessions |
O número de sessões de destino a serem mantidas prontas em um pool. |
Criar um pool
O processo de criação de um pool é ligeiramente diferente dependendo se você está criando um pool de interpretador de código ou um pool de contêineres personalizado.
Pool de interpretador de código
Para criar um pool de sessão de interpretador de código usando a CLI do Azure, verifique se você tem as versões mais recentes da CLI do Azure e a extensão aplicativos de contêiner do Azure com os seguintes comandos:
# Upgrade the Azure CLI
az upgrade
# Install or upgrade the Azure Container Apps extension
az extension add --name containerapp --upgrade --allow-preview true -y
Use o az containerapps sessionpool create comando para criar o pool. O exemplo a seguir cria um pool de sessão de interpretador de código do Python chamado my-session-pool. Substitua <RESOURCE_GROUP> pelo nome do seu grupo de recursos antes de executar o comando.
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
Você pode definir as seguintes configurações ao criar um pool de sessões:
| Configurações | Description |
|---|---|
--container-type |
O tipo de interpretador de código a ser usado. Os valores com suporte incluem PythonLTS, NodeLTSe Shell. |
--max-sessions |
O número máximo de sessões alocadas permitidas simultaneamente. O valor máximo é 600. |
--cooldown-period |
O número de segundos ociosos permitidos antes do encerramento. O período ocioso é redefinido sempre que a API da sessão é chamada. O intervalo permitido é entre 300 e 3600. |
--network-status |
Designa se o tráfego de rede de saída é permitido na sessão. Os valores válidos são EgressDisabled (padrão) e EgressEnabled. |
Importante
Se você habilitar a saída, o código em execução na sessão poderá acessar a Internet. Tenha cuidado quando o código não for confiável, pois ele pode ser usado para executar atividades mal-intencionadas, como ataques de negação de serviço.
Obter o endpoint da API de gerenciamento
Para usar sessões de interpretador de código com integrações da estrutura LLM ou chamando diretamente os pontos de extremidade da API de gerenciamento, você precisa do ponto de extremidade da API de gerenciamento do pool.
O ponto de extremidade está no formato https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>.
Para recuperar o endpoint da API de gerenciamento para um pool de sessão, use o comando az containerapps sessionpool show. Certifique-se de substituir <RESOURCE_GROUP> pelo nome do seu grupo de recursos antes de executar o comando.
az containerapp sessionpool show \
--name my-session-pool \
--resource-group <RESOURCE_GROUP> \
--query 'properties.poolManagementEndpoint' -o tsv
Pool de contêineres personalizado
Para criar um pool de sessões de contêiner personalizado, você precisa fornecer uma imagem de contêiner e configurações do pool.
Você invoca ou se comunica com cada sessão usando solicitações HTTP. O contêiner personalizado deve expor um servidor HTTP em uma porta especificada para responder a essas solicitações.
Para criar um pool de sessão de contêiner personalizado usando a CLI do Azure, verifique se você tem as versões mais recentes da CLI do Azure e da extensão aplicativos de contêiner do Azure com os seguintes comandos:
az upgrade
az extension add --name containerapp --upgrade --allow-preview true -y
Os pools de sessões de contêiner personalizados exigem um ambiente de Aplicativos de Contêiner do Azure com perfil de carga de trabalho habilitado. Se você não tiver um ambiente, use o az containerapp env create -n <ENVIRONMENT_NAME> -g <RESOURCE_GROUP> --location <LOCATION> --enable-workload-profiles comando para criar um.
Use o az containerapp sessionpool create comando para criar um pool de sessão de contêiner personalizado.
O exemplo a seguir cria um pool de sessão nomeado my-session-pool com uma imagem myregistry.azurecr.io/my-container-image:1.0de contêiner personalizada.
Antes de enviar a solicitação, substitua os espaços reservados entre os colchetes <> pelos valores apropriados do pool de sessão e do identificador de sessão.
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>
Esse comando cria um pool de sessões com as seguintes configurações:
| Parâmetro | Value | Description |
|---|---|---|
--name |
my-session-pool |
O nome do pool de sessões. |
--resource-group |
my-resource-group |
O grupo de recursos que contém o pool de sessões. |
--environment |
my-environment |
O nome ou o identificador do recurso do ambiente do aplicativo de contêiner. |
--container-type |
CustomContainer |
O tipo de contêiner do pool de sessão. Deve ser CustomContainer para sessões de contêiner personalizadas. |
--image |
myregistry.azurecr.io/my-container-image:1.0 |
A imagem de contêiner a ser usada para o pool de sessão. |
--registry-server |
myregistry.azurecr.io |
O nome do host do servidor de registro de contêineres. |
--registry-username |
my-username |
O nome de usuário para fazer login no registro de contêiner. |
--registry-password |
my-password |
A senha para fazer logon no registro de contêiner. |
--cpu |
0.25 |
A CPU necessária em núcleos. |
--memory |
0.5Gi |
A memória necessária. |
--target-port |
80 |
A porta de sessão usada para o tráfego de entrada. |
--cooldown-period |
300 |
O número de segundos que uma sessão pode ficar ociosa antes de a sessão ser encerrada. O período ocioso é redefinido sempre que a API da sessão é chamada. O valor deve estar entre 300 e 3600. |
--network-status |
EgressDisabled |
Designa se o tráfego de rede de saída é permitido na sessão. Os valores válidos são EgressDisabled (padrão) e EgressEnabled. |
--max-sessions |
10 |
O número máximo de sessões que podem ser alocadas ao mesmo tempo. |
--ready-sessions |
5 |
O número de sessões de destino que estão prontas no pool de sessão o tempo todo. Aumente esse número se as sessões forem alocadas mais rapidamente do que o pool é reabastecido. |
--env-vars |
"key1=value1" "key2=value2" |
As variáveis de ambiente a serem definidas no contêiner. |
--location |
"Supported Location" |
O local do pool de sessão. |
Para verificar o status do pool de sessões, use o az containerapp sessionpool show comando:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Para atualizar o pool de sessões, use o az containerapp sessionpool update comando.
Importante
Se a sessão for usada para executar código não confiável, não inclua informações ou dados que você não deseja que o código não confiável acesse. Suponha que o código seja mal-intencionado e tenha acesso total ao contêiner, incluindo suas variáveis de ambiente, segredos e arquivos.
Ponto de extremidade de gerenciamento
Importante
O identificador de sessão é uma informação confidencial que exige um processo seguro à medida que você cria e gerencia seu valor. Para proteger esse valor, seu aplicativo deve garantir que cada usuário ou locatário tenha acesso apenas a suas próprias sessões.
A falha na proteção do acesso às sessões pode resultar em uso indevido ou acesso não autorizado aos dados armazenados nas sessões dos usuários. Para obter mais informações, consulte identificadores de sessão
Os seguintes endpoints estão disponíveis para gerenciar sessões em um pool:
| Caminho do ponto de extremidade | Método | Description |
|---|---|---|
code/execute |
POST |
Execute o código em uma sessão. |
files/upload |
POST |
Carregue um arquivo em uma sessão. |
files/content/{filename} |
GET |
Baixe um arquivo de uma sessão. |
files |
GET |
Liste os arquivos em uma sessão. |
Você cria a URL completa para cada ponto de extremidade concatenando o ponto de extremidade da API de gerenciamento do pool com o caminho do ponto de extremidade. A cadeia de caracteres de consulta deve incluir um identifier parâmetro que contém o identificador de sessão e um api-version parâmetro com o valor 2024-02-02-preview.
Por exemplo: https://<REGION>.dynamicsessions.io/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/sessionPools/<SESSION_POOL_NAME>/code/execute?api-version=2024-02-02-preview&identifier=<IDENTIFIER>
Para recuperar o ponto de extremidade de gerenciamento do pool de sessão, use o comando az containerapp sessionpool show:
az containerapp sessionpool show \
--name <SESSION_POOL_NAME> \
--resource-group <RESOURCE_GROUP> \
--query "properties.poolManagementEndpoint" \
--output tsv
Todas as solicitações para o ponto de extremidade de gerenciamento do pool precisam incluir um cabeçalho Authorization com um token de portador. Para saber como autenticar com a API de gerenciamento de pool, consulte Autenticação.
Cada solicitação de API também deve incluir o parâmetro identifier de cadeia de caracteres de consulta com a ID da sessão. Essa ID de sessão exclusiva permite que seu aplicativo interaja com sessões específicas. Para saber mais sobre identificadores de sessão, consulte identificadores de sessão.
Cache de imagem
Quando um pool de sessões é criado ou atualizado, os Aplicativos de Contêiner do Azure armazenam em cache a imagem de contêiner no pool. Esse cache ajuda a acelerar o processo de criação de novas sessões.
As alterações na imagem não são refletidas automaticamente nas sessões. Para atualizar a imagem, atualize o pool de sessões com uma nova tag de imagem. Use uma marca exclusiva para cada atualização de imagem para garantir que seja efetuado o pull da nova imagem.
Conteúdo relacionado
Tipos de sessão: saiba mais sobre os diferentes tipos de sessões dinâmicas:
Tutoriais: trabalhe diretamente com a API REST ou por meio de um agente LLM:
- Use um agente LLM:
- Usar a API REST