Compartir vía


Tutorial: Ejecución de código JavaScript en una sesión de intérprete de código en Azure Container Apps (versión preliminar)

En este tutorial se muestra cómo ejecutar código JavaScript en sesiones dinámicas de Azure Container Apps mediante una API HTTP.

En este tutorial, hará lo siguiente:

  • Creación de una nueva sesión de intérprete de código
  • Establecimiento del contexto de seguridad adecuado para el grupo de sesiones
  • Pasar código JavaScript para que se ejecute la aplicación contenedora

Nota:

La característica de intérprete de código de JavaScript en las sesiones dinámicas de Azure Container Apps está actualmente en versión preliminar. Para obtener más información, consulte limitaciones de la versión preliminar.

Requisitos previos

Necesita los siguientes recursos antes de comenzar este tutorial.

Resource Descripción
Cuenta de Azure Necesita una cuenta de Azure con una suscripción activa. Si no tiene una cuenta, ahora puede crear una de forma gratuita.
CLI de Azure Instale la CLI de Azure.

Configurar

Comience preparando la CLI de Azure con las actualizaciones más recientes e inicie sesión en Azure.

  1. Actualice la CLI de Azure a la versión más reciente.

    az upgrade
    
  2. Registre el proveedor de recursos Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Instale la versión más reciente de la extensión de la CLI de Azure Container Apps.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Inicie de sesión en Azure.

    az login
    
  5. Consulte el identificador de suscripción de Azure y establezca el valor en una variable.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Establezca las variables usadas en este procedimiento.

    Antes de ejecutar el siguiente comando, asegúrese de reemplazar los marcadores de posición rodeados por <> con sus propios valores.

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

    Estas variables se usan para crear los recursos en los pasos siguientes.

  7. Establezca la suscripción que desea usar para crear el grupo de recursos

    az account set -s $SUBSCRIPTION_ID
    
  8. Cree un grupo de recursos.

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

Creación de un grupo de sesiones de intérprete de código

Use el comando az containerapp sessionpool create para crear un grupo de sesiones de Node.js responsable de ejecutar código JavaScript arbitrario.

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

Establecimiento de asignaciones de roles para las API de ejecución de código

Para interactuar con la API del grupo de sesiones, debe usar una identidad con la asignación de roles de Azure ContainerApps Session Executor. En este tutorial, usará la identidad de usuario de Microsoft Entra ID para llamar a la API.

  1. Consulte el identificador de objeto de usuario.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Asigne el rol a su identidad.

    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"
    

Obtención de un token de portador

Para el acceso directo a la API del grupo de sesiones, genere un token de acceso para incluirlo en el encabezado Authorization de las solicitudes. Asegúrese de que el token contiene una notificación de audiencia (aud) con el valor https://dynamicsessions.io. Para obtener más información, consulte reglas de autenticación y autorización.

  1. Obtén un token de acceso.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Cree una variable para contener el encabezado de solicitud.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Este encabezado acompaña a la solicitud que realiza al punto de conexión de la aplicación.

Obtención del punto de conexión de administración del grupo de sesiones

Use el comando siguiente para devolver el punto de conexión de la aplicación.

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

Este punto de conexión es la ubicación donde se realizan llamadas API para ejecutar la carga de código en la sesión del intérprete de código.

Ejecutar código en la sesión

Ahora que tiene un token de portador para establecer el contexto de seguridad y el punto de conexión del grupo de sesiones, puede enviar una solicitud a la aplicación para ejecutar el bloque de código.

Ejecute el siguiente comando para ejecutar el código JavaScript para registrar "hola mundo" en la aplicación.

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\")"
    }
}'

Debería ver la salida similar al ejemplo siguiente.

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

Puede encontrar más ejemplos de API de intérprete de código en GitHub.

Limpieza de recursos

Los recursos creados en este tutorial tienen un efecto en la factura de Azure. Si no va a usar estos servicios a largo plazo, ejecute el siguiente comando para quitar todo lo creado en este tutorial.

az group delete \
  --resource-group $RESOURCE_GROUP

Pasos siguientes