Dela via


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.

  1. Uppdatera Azure CLI till den senaste versionen.

    az upgrade
    
  2. Microsoft.App Registrera resursprovidern.

    az provider register --namespace Microsoft.App
    
  3. Installera den senaste versionen av Azure Container Apps CLI-tillägget.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Logga in på Azure.

    az login
    
  5. Fråga efter ditt Azure-prenumerations-ID och ange värdet till en variabel.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. 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.

  7. Ange den prenumeration som du vill använda för att skapa resursgruppen

    az account set -s $SUBSCRIPTION_ID
    
  8. 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.

  1. Fråga ditt användarobjekt-ID.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. 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 .

  1. Hämta en åtkomsttoken.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. 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

Nästa steg