Compartilhar via


Tutorial: Executar código JavaScript em uma sessão de interpretador de código nos Aplicativos de Contêiner do Azure (versão prévia)

Este tutorial demonstra como executar código JavaScript em sessões dinâmicas dos Aplicativos de Contêiner do Azure usando uma API HTTP.

Neste tutorial, você:

  • Criar uma nova sessão de interpretador de código
  • Definir o contexto de segurança apropriado para o pool de sessões
  • Passar o código JavaScript para o aplicativo de contêiner a ser executado

Observação

O recurso de interpretador de código JavaScript nas sessões dinâmicas dos Aplicativos de Contêiner do Azure está atualmente em versão prévia. Para obter mais informações, confira Limitações da versão prévia.

Pré-requisitos

Você precisa dos recursos a seguir antes de começar este tutorial.

Recurso Descrição
Conta do Azure Você precisa de uma conta do Azure com uma assinatura ativa. Se você não tiver uma conta, é possível criar uma gratuitamente.
CLI do Azure Instale a CLI do Azure.

Instalação

Comece preparando a CLI do Azure com as atualizações mais recentes e entrando no Azure.

  1. Atualize a CLI do Azure para a versão mais recente.

    az upgrade
    
  2. Registre o provedor de recursos Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Instale a última versão da extensão da CLI dos Aplicativos de Contêiner do Azure.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Entrar no Azure.

    az login
    
  5. Consulte sua ID de assinatura do Azure e defina o valor como uma variável.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Defina as variáveis usadas nesse procedimento.

    Antes de executar o comando a seguir, substitua os espaços reservados cercados por <> por seus próprios valores.

    RESOURCE_GROUP=<RESOURCE_GROUP_NAME>
    SESSION_POOL_NAME=<SESSION_POOL_NAME>
    LOCATION="northcentralus"
    

    Use essas variáveis para criar os recursos nas etapas a seguir.

  7. Definir a assinatura que você deseja usar para criar o grupo de recursos

    az account set -s $SUBSCRIPTION_ID
    
  8. Crie um grupos de recursos.

    az group create \
      --name $RESOURCE_GROUP \
      --location $LOCATION
    

Criar um pool de sessões de interpretador de código

Use o comando az containerapp sessionpool create para criar um pool de sessão Node.js responsável pela execução de código JavaScript arbitrário.

az containerapp sessionpool create \
  --name $SESSION_POOL_NAME \
  --resource-group $RESOURCE_GROUP \
  --location $LOCATION \
  --max-sessions 5 \
  --network-status EgressEnabled \
  --container-type NodeLTS \
  --cooldown-period 300

Definir atribuições de função para APIs de execução de código

Para interagir com a API do pool de sessão, use uma identidade com a atribuição de função Azure ContainerApps Session Executor. Neste tutorial, você usará sua identidade de usuário do Microsoft Entra ID para chamar a API.

  1. Consulte a ID do objeto de usuário.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Atribua a função à sua identidade.

    az role assignment create \
      --role "Azure ContainerApps Session Executor" \
      --assignee-object-id $USER_OBJECT_ID \
      --assignee-principal-type User \
      --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionPools/$SESSION_POOL_NAME"
    

Obter um token de portador

Para acesso direto à API do pool de sessão, gere um token de acesso para incluir no cabeçalho Authorization de suas solicitações. Verifique se o token contém uma declaração de audiência (aud) com o valor https://dynamicsessions.io. Para obter mais informações, confira as regras de autenticação e autorização.

  1. Obtenha um token de acesso.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Crie uma variável para manter o cabeçalho da solicitação.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Esse cabeçalho acompanhará a solicitação que você fizer ao ponto de extremidade do aplicativo.

Obter o ponto de extremidade de gerenciamento do pool de sessão

Use o seguinte comando para retornar o ponto de extremidade do aplicativo.

SESSION_POOL_MANAGEMENT_ENDPOINT=$(az containerapp sessionpool show -n $SESSION_POOL_NAME -g $RESOURCE_GROUP --query "properties.poolManagementEndpoint" -o tsv)

Esse ponto de extremidade é o local em que você faz chamadas à API para executar o conteúdo do código na sessão do interpretador de código.

Executar código em sua sessão

Agora que você tem um token de portador para estabelecer o contexto de segurança e o ponto de extremidade do pool de sessão, você poderá enviar uma solicitação ao aplicativo para executar o bloco de código.

Execute o comando a seguir para executar o código JavaScript para registrar "olá, mundo" em seu aplicativo.

curl -v -X 'POST' -H "$AUTH_HEADER" "$SESSION_POOL_MANAGEMENT_ENDPOINT/code/execute?api-version=2024-02-02-preview&identifier=test" -H 'Content-Type: application/json' -d '
{
    "properties": {
        "codeInputType": "inline",
        "executionType": "synchronous",
        "code": "console.log(\"hello-world\")"
    }
}'

Você deverá ver uma saída semelhante ao exemplo a seguir.

{
  "properties": {
    "status": "Success",
    "stdout": "hello-world\n",
    "stderr": "",
    "executionResult": "",
    "executionTimeInMilliseconds": 5
  }
}

Você pode encontrar mais exemplos de API de interpretador de código no GitHub.

Limpar os recursos

Os recursos criados neste tutorial têm um efeito na sua fatura do Azure. Se você não usar esses serviços a longo prazo, execute o comando a seguir para remover tudo o que foi criado neste tutorial.

az group delete \
  --resource-group $RESOURCE_GROUP

Próximas etapas