Freigeben über


Tutorial: Ausführen von JavaScript-Code in einer Code-Interpreter-Sitzung in Azure-Container-Apps (Vorschau)

In diesem Tutorial wird das Ausführen von JavaScript-Code in dynamischen Azure-Container-Apps-Sitzungen mithilfe einer HTTP-API veranschaulicht.

In diesem Tutorial führen Sie Folgendes durch:

  • Erstellen einer neuen Code-Interpreter-Sitzung
  • Festlegen des entsprechenden Sicherheitskontexts für Ihren Sitzungspool
  • Übergeben von JavaScript-Code für die auszuführende Container-App

Hinweis

Das Feature JavaScript-Code-Interpreter in dynamischen Azure Container Apps-Sitzungen befindet sich derzeit in der Vorschau. Weitere Informationen finden Sie unter Einschränkungen während der Vorschau.

Voraussetzungen

Sie benötigen Sie folgende Ressourcen, bevor Sie mit diesem Tutorial beginnen können.

Resource BESCHREIBUNG
Azure-Konto Sie benötigen ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie noch keine haben, können Sie eine kostenlos erstellen.
Azure CLI Installieren Sie die Azure CLI.

Setup

Beginnen Sie mit der Vorbereitung der Azure CLI mit den neuesten Updates und der Anmeldung bei Azure.

  1. Aktualisieren Sie die Azure CLI auf die neueste Version.

    az upgrade
    
  2. Registrierung des Microsoft.App-Ressourcenanbieters.

    az provider register --namespace Microsoft.App
    
  3. Installieren Sie die neueste Version der Azure Container Apps-CLI-Erweiterung.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Melden Sie sich bei Azure an.

    az login
    
  5. Fragen Sie Ihre Azure-Abonnement-ID ab, und legen Sie den Wert auf eine Variable fest.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Legen Sie die Variablen fest, die in dieser Vorgehensweise verwendet werden.

    Bevor Sie den folgenden Befehl ausführen, ersetzen Sie von <> umgebene Platzhalter unbedingt durch Ihre eigenen Werte.

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

    Sie verwenden diese Variablen, um die Ressourcen in den folgenden Schritten zu erstellen.

  7. Legen Sie das Azure-Abonnement fest, das Sie zum Erstellen der Ressourcengruppe verwenden möchten.

    az account set -s $SUBSCRIPTION_ID
    
  8. Erstellen Sie eine Ressourcengruppe.

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

Erstellen eines Sitzungspools für den Code-Interpreter

Verwenden Sie den Befehl az containerapp sessionpool create, um einen Node.js-Sitzungspool zu erstellen, der für die Ausführung von beliebigem JavaScript-Code verantwortlich ist.

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

Festlegen von Rollenzuweisungen für Codeausführungs-APIs

Um mit der API des Sitzungspools zu interagieren, müssen Sie eine Identität mit der Rollenzuweisung Azure ContainerApps Session Executor verwenden. In diesem Lernprogramm verwenden Sie Ihre Microsoft Entra ID-Benutzeridentität, um die API aufzurufen.

  1. Fragen Sie Ihre Benutzerobjekt-ID ab.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Weisen Sie Ihrer Identität die Rolle zu.

    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"
    

Abrufen eines Bearertokens

Generieren Sie für den direkten Zugriff auf die API des Sitzungspools ein Zugriffstoken, das in den Authorization-Header Ihrer Anforderungen aufgenommen werden soll. Stellen Sie sicher, dass das Token einen Zielgruppenanspruch (aud) mit dem Wert https://dynamicsessions.io enthält. Weitere Informationen finden Sie unter Regeln für Authentifizierung und Autorisierung.

  1. Rufe ein Zugriffstoken ab.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Erstellen Sie eine Variable, die den Anforderungsheader enthält.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Dieser Header begleitet die Anforderung, die Sie an den Endpunkt Ihrer Anwendung stellen.

Abrufen des Sitzungspoolverwaltungsendpunkts

Verwenden Sie den folgenden Befehl, um den Endpunkt der Anwendung zurückzugeben.

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

Dieser Endpunkt ist der Ort, an dem Sie API-Aufrufe ausführen, um Ihre Codenutzlast in der Code-Interpreter-Sitzung auszuführen.

Ausführen von Code in der Sitzung

Nachdem Sie nun über ein Bearertoken zum Einrichten des Sicherheitskontexts und des Sitzungspoolendpunkts verfügen, können Sie eine Anforderung an die Anwendung senden, um Ihren Codeblock auszuführen.

Führen Sie den folgenden Befehl aus, um den JavaScript-Code auszuführen und „Hallo Welt” in Ihrer Anwendung zu protokollieren.

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

Sie sollten eine Ausgabe erhalten, die dem folgenden Beispiel ähnelt.

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

Weitere Informationen finden Sie unter Code-Interpreter-API-Beispiele auf GitHub.

Bereinigen von Ressourcen

Die in diesem Tutorial erstellten Ressourcen wirken sich auf Ihre Azure-Abrechnung aus. Führen Sie den folgenden Befehl aus, um alle in diesem Tutorial erstellten Ressourcen zu entfernen, wenn Sie diese Dienste nicht langfristig verwenden werden.

az group delete \
  --resource-group $RESOURCE_GROUP

Nächste Schritte