Partager via


Tutoriel : Exécuter du code JavaScript dans une session d’interpréteur de code dans Azure Container Apps (préversion)

Ce tutoriel montre comment exécuter du code JavaScript dans des sessions dynamiques Azure Container Apps en utilisant une API HTTP.

Dans ce tutoriel, vous allez :

  • Créer une session d’interpréteur de code
  • Définir le contexte de sécurité approprié pour votre pool de sessions
  • Passer du code JavaScript pour que l’application conteneur s’exécute

Remarque

La fonctionnalité d’interpréteur de code JavaScript dans des sessions dynamiques Azure Container Apps est actuellement en préversion. Pour plus d’informations, consultez Limitations de la préversion.

Prérequis

Avant de commencer ce tutoriel, vous avez besoin des ressources suivantes.

Ressource Description
Compte Azure Vous devez avoir un compte Azure avec un abonnement actif. Si vous n’en avez pas, vous pouvez en créer un gratuitement.
Azure CLI Installez Azure CLI.

Programme d’installation

Commencez en préparant Azure CLI avec les mises à jour les plus récentes et en vous connectant à Azure.

  1. Mettez à jour Azure CLI vers la dernière version.

    az upgrade
    
  2. Inscrivez le fournisseur de ressources Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Installez la dernière version de l’extension CLI Azure Container Apps.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Connectez-vous à Azure.

    az login
    
  5. Recherchez votre ID d’abonnement Azure et placez sa valeur dans une variable.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Définissez les variables utilisées dans cette procédure.

    Avant d’exécuter la commande suivante, veillez à remplacer les espaces réservés entre des <> par vos propres valeurs.

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

    Vous utilisez ces variables pour créer les ressources dans les étapes suivantes.

  7. Définir l’abonnement que vous voulez utiliser pour créer le groupe de ressources

    az account set -s $SUBSCRIPTION_ID
    
  8. Créez un groupe de ressources.

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

Créer un pool de sessions d’interpréteur de code

Utilisez la commande az containerapp sessionpool create pour créer un pool de sessions Node.js responsable de l’exécution du code JavaScript arbitraire.

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

Définir des attributions de rôles pour les API d’exécution de code

Pour interagir avec l’API du pool de sessions, vous devez utiliser une identité avec l’attribution de rôle Azure ContainerApps Session Executor. Dans ce tutoriel, vous utilisez votre identité d’utilisateur Microsoft Entra ID pour appeler l’API.

  1. Recherchez votre ID d’objet utilisateur.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Attribuez le rôle à votre identité.

    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"
    

Obtenir un jeton du porteur

Pour un accès direct à l’API du pool de sessions, générez un jeton d’accès à inclure dans l’en-tête Authorization de vos requêtes. Vérifiez que le jeton contient une revendication d’audience (aud) avec la valeur https://dynamicsessions.io. Pour plus d’informations, consultez les règles décrites dans Authentification et autorisation.

  1. Obtenez un jeton d’accès.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Créez une variable destinée à contenir l’en-tête de la requête.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Cet en-tête accompagne la requête que vous effectuez auprès du point de terminaison de votre application.

Obtenir le point de terminaison de gestion du pool de sessions

Exécutez la commande suivante pour retourner le point de terminaison de l’application.

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

Ce point de terminaison est l’emplacement où vous effectuez les appels d’API pour exécuter la charge utile de votre code dans la session d’interpréteur de code.

Exécuter du code dans votre session

Maintenant que vous disposez d’un jeton du porteur pour établir le contexte de sécurité et du point de terminaison du pool de sessions, vous pouvez envoyer une requête à l’application pour exécuter votre bloc de code.

Exécutez la commande suivante pour exécuter le code JavaScript pour écrire « hello world » dans votre application.

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

Vous devez voir une sortie qui ressemble à l’exemple suivant.

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

Vous trouverez plus d’exemples d’API d’interpréteur de code sur GitHub.

Nettoyer les ressources

Les ressources créées dans ce tutoriel ont un effet sur votre facture Azure. Si vous n’allez pas utiliser ces services à long terme, exécutez la commande suivante pour supprimer tout ce qui a été créé dans ce didacticiel.

az group delete \
  --resource-group $RESOURCE_GROUP

Étapes suivantes