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.
Mettez à jour Azure CLI vers la dernière version.
az upgrade
Inscrivez le fournisseur de ressources
Microsoft.App
.az provider register --namespace Microsoft.App
Installez la dernière version de l’extension CLI Azure Container Apps.
az extension add \ --name containerapp \ --allow-preview true --upgrade
Connectez-vous à Azure.
az login
Recherchez votre ID d’abonnement Azure et placez sa valeur dans une variable.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
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.
Définir l’abonnement que vous voulez utiliser pour créer le groupe de ressources
az account set -s $SUBSCRIPTION_ID
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.
Recherchez votre ID d’objet utilisateur.
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
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.
Obtenez un jeton d’accès.
JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
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