Condividi tramite


Esercitazione: Eseguire codice JavaScript in una sessione dell'interprete di codice in App Contenitore di Azure (anteprima)

Questa esercitazione illustra come eseguire codice JavaScript nelle sessioni dinamiche di App Contenitore di Azure usando un'API HTTP.

In questa esercitazione:

  • Creare una nuova sessione dell'interprete di codice
  • Impostare il contesto di sicurezza appropriato per il pool di sessioni
  • Passare il codice JavaScript per l'esecuzione dell'app contenitore

Nota

La funzionalità dell'interprete del codice JavaScript nelle sessioni dinamiche di App Azure Container è attualmente in anteprima. Per altre informazioni, vedere Limitazioni di anteprima.

Prerequisiti

Prima di iniziare questa esercitazione sono necessarie le risorse seguenti.

Risorsa Descrizione
Account Azure È necessario un account Azure con una sottoscrizione attiva. Se non hai un account, puoi crearlo gratuitamente.
Interfaccia della riga di comando di Azure Installare l'interfaccia della riga di comando di Azure.

Attrezzaggio

Per iniziare, preparare l'interfaccia della riga di comando di Azure con gli aggiornamenti più recenti e accedere ad Azure.

  1. Aggiornare l'interfaccia della riga di comando di Azure alla versione più recente.

    az upgrade
    
  2. Registrare il provider di risorse Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Installare l’ultima versione dell'estensione dell'interfaccia della riga di comando di App contenitore di Azure.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Accedere ad Azure.

    az login
    
  5. Eseguire una query sull'ID sottoscrizione di Azure e impostare il valore su una variabile.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Impostare le variabili usate in questa procedura.

    Prima di eseguire il comando seguente, assicurarsi di sostituire i segnaposto racchiusi tra <> i propri valori.

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

    Queste variabili vengono usate per creare le risorse nei passaggi seguenti.

  7. Impostare la sottoscrizione da usare per la creazione del gruppo di risorse

    az account set -s $SUBSCRIPTION_ID
    
  8. Creare un gruppo di risorse.

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

Creare un pool di sessioni dell'interprete di codice

Usare il az containerapp sessionpool create comando per creare un pool di sessioni Node.js responsabile dell'esecuzione di codice JavaScript arbitrario.

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

Impostare le assegnazioni di ruolo per le API di esecuzione del codice

Per interagire con l'API del pool di sessioni, è necessario usare un'identità con l'assegnazione di Azure ContainerApps Session Executor ruolo. In questa esercitazione si userà l'identità utente di Microsoft Entra ID per chiamare l'API.

  1. Eseguire una query dell'ID oggetto utente.

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

Ottenere un token di connessione

Per l'accesso diretto all'API del pool di sessioni, generare un token di accesso da includere nell'intestazione Authorization delle richieste. Verificare che il token contenga un'attestazione audience (aud) con il valore https://dynamicsessions.io. Per altre informazioni, vedere Autenticazione e regole di autorizzazione .

  1. Ottenere un token di accesso.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Creare una variabile per contenere l'intestazione della richiesta.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Questa intestazione accompagna la richiesta inviata all'endpoint dell'applicazione.

Ottenere l'endpoint di gestione del pool di sessioni

Usare il comando seguente per restituire l'endpoint dell'applicazione.

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

Questo endpoint è il percorso in cui si effettuano chiamate API per eseguire il payload del codice nella sessione dell'interprete di codice.

Eseguire il codice nella sessione

Ora che si dispone di un token di connessione per stabilire il contesto di sicurezza e l'endpoint del pool di sessioni, è possibile inviare una richiesta all'applicazione per eseguire il blocco di codice.

Eseguire il comando seguente per eseguire il codice JavaScript per registrare "hello world" nell'applicazione.

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

Verrà visualizzato un output simile all'esempio seguente.

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

Altri esempi di API dell'interprete di codice sono disponibili in GitHub.

Pulire le risorse

Le risorse create in questa esercitazione hanno effetto sulla fattura di Azure. Se non si intende usare questi servizi a lungo termine, eseguire il comando seguente per rimuovere tutti gli elementi creati in questa esercitazione.

az group delete \
  --resource-group $RESOURCE_GROUP

Passaggi successivi