Självstudie: Köra JavaScript-kod i en kodtolkarsession i Azure Container Apps (förhandsversion)
Den här självstudien visar hur du kör JavaScript-kod i dynamiska Azure Container Apps-sessioner med hjälp av ett HTTP-API.
I den här självstudien:
- Skapa en ny kodtolkarsession
- Ange lämplig säkerhetskontext för sessionspoolen
- Skicka in JavaScript-kod för containerappen som ska köras
Kommentar
Funktionen JavaScript-kodtolkar i dynamiska Azure Container Apps-sessioner är för närvarande i förhandsversion. Mer information finns i begränsningar för förhandsversionen.
Förutsättningar
Du behöver följande resurser innan du påbörjar den här självstudien.
Resurs | beskrivning |
---|---|
Azure-konto | Du behöver ett Azure-konto med en aktiv prenumeration. Om du inte har någon sådan nu kan du skapa en kostnadsfritt. |
Azure CLI | Installera Azure CLI. |
Ställ in
Börja med att förbereda Azure CLI med de senaste uppdateringarna och logga in på Azure.
Uppdatera Azure CLI till den senaste versionen.
az upgrade
Microsoft.App
Registrera resursprovidern.az provider register --namespace Microsoft.App
Installera den senaste versionen av Azure Container Apps CLI-tillägget.
az extension add \ --name containerapp \ --allow-preview true --upgrade
Logga in på Azure.
az login
Fråga efter ditt Azure-prenumerations-ID och ange värdet till en variabel.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
Ange de variabler som används i den här proceduren.
Innan du kör följande kommando måste du ersätta platshållarna som omges av
<>
med dina egna värden.RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION="northcentralus"
Du använder dessa variabler för att skapa resurserna i följande steg.
Ange den prenumeration som du vill använda för att skapa resursgruppen
az account set -s $SUBSCRIPTION_ID
Skapa en resursgrupp.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION
Skapa en kodtolkarsessionspool
az containerapp sessionpool create
Använd kommandot för att skapa en Node.js sessionspool som ansvarar för att köra godtycklig JavaScript-kod.
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
Ange rolltilldelningar för API:er för kodkörning
Om du vill interagera med sessionspoolens API måste du använda en identitet med rolltilldelningen Azure ContainerApps Session Executor
. I den här självstudien använder du din Användaridentitet för Microsoft Entra-ID för att anropa API:et.
Fråga ditt användarobjekt-ID.
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
Tilldela rollen till din identitet.
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"
Hämta en ägartoken
För direkt åtkomst till sessionspoolens API genererar du en åtkomsttoken som ska inkluderas i Authorization
rubriken för dina begäranden. Kontrollera att token innehåller ett målgruppsanspråk (aud
) med värdet https://dynamicsessions.io
. Mer information finns i autentiserings- och auktoriseringsregler .
Hämta en åtkomsttoken.
JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
Skapa en variabel för att lagra begärandehuvudet.
AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
Det här huvudet åtföljer den begäran du gör till programmets slutpunkt.
Hämta sessionspoolens hanteringsslutpunkt
Använd följande kommando för att returnera programmets slutpunkt.
SESSION_POOL_MANAGEMENT_ENDPOINT=$(az containerapp sessionpool show -n $SESSION_POOL_NAME -g $RESOURCE_GROUP --query "properties.poolManagementEndpoint" -o tsv)
Den här slutpunkten är den plats där du gör API-anrop för att köra kodnyttolasten i kodtolkarsessionen.
Köra kod i sessionen
Nu när du har en ägartoken för att upprätta säkerhetskontexten och sessionspoolens slutpunkt kan du skicka en begäran till programmet om att köra kodblocket.
Kör följande kommando för att köra JavaScript-koden för att logga "hello world" i ditt program.
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\")"
}
}'
Du bör se utdata som liknar följande exempel.
{
"properties": {
"status": "Success",
"stdout": "hello-world\n",
"stderr": "",
"executionResult": "",
"executionTimeInMilliseconds": 5
}
}
Du hittar fler kodtolkar-API-exempel på GitHub.
Rensa resurser
De resurser som skapas i den här självstudien påverkar din Azure-faktura. Om du inte ska använda dessa tjänster på lång sikt kör du följande kommando för att ta bort allt som skapats i den här självstudien.
az group delete \
--resource-group $RESOURCE_GROUP