Megosztás a következőn keresztül:


Oktatóanyag: JavaScript-kód futtatása kódértelmezési munkamenetben az Azure Container Appsben (előzetes verzió)

Ez az oktatóanyag bemutatja, hogyan hajthat végre JavaScript-kódot az Azure Container Apps dinamikus munkameneteiben HTTP API használatával.

Ebben az oktatóanyagban a következőket fogja elkönyvelni:

  • Új kódértelmező-munkamenet létrehozása
  • A munkamenetkészlet megfelelő biztonsági környezetének beállítása
  • JavaScript-kód átadása a tárolóalkalmazás futtatásához

Feljegyzés

Az Azure Container Apps dinamikus munkameneteinek JavaScript-kódértelmező funkciója jelenleg előzetes verzióban érhető el. További információkért tekintse meg az előzetes verzióra vonatkozó korlátozásokat.

Előfeltételek

Az oktatóanyag megkezdése előtt az alábbi erőforrásokra van szüksége.

Erőforrás Leírás
Azure-fiók Aktív előfizetéssel rendelkező Azure-fiókra van szüksége. Ha még nem rendelkezik fiókkal, ingyen létrehozhat egyet.
Azure CLI Telepítse az Azure CLI-t.

Beállítás

Először készítse elő az Azure CLI-t a legújabb frissítésekkel, és jelentkezzen be az Azure-ba.

  1. Frissítse az Azure CLI-t a legújabb verzióra.

    az upgrade
    
  2. Regisztrálja az erőforrás-szolgáltatót Microsoft.App .

    az provider register --namespace Microsoft.App
    
  3. Telepítse az Azure Container Apps CLI-bővítmény legújabb verzióját.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Jelentkezzen be az Azure-ba.

    az login
    
  5. Kérdezze le az Azure-előfizetés azonosítóját, és állítsa be az értéket egy változóra.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Állítsa be az eljárásban használt változókat.

    A következő parancs futtatása előtt cserélje le a helyőrzőket <> a saját értékeire.

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

    Ezeket a változókat használva hozza létre az erőforrásokat az alábbi lépésekben.

  7. Az erőforráscsoport létrehozásához használni kívánt előfizetés beállítása

    az account set -s $SUBSCRIPTION_ID
    
  8. Hozzon létre egy erőforráscsoportot.

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

Kódértelmező munkamenetkészletének létrehozása

az containerapp sessionpool create A paranccsal hozzon létre egy Node.js munkamenetkészletet, amely tetszőleges JavaScript-kód végrehajtásáért felelős.

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

Szerepkör-hozzárendelések beállítása kódvégrehajtási API-khoz

A munkamenetkészlet API-jával való interakcióhoz egy identitást kell használnia a Azure ContainerApps Session Executor szerepkör-hozzárendeléssel. Ebben az oktatóanyagban a Microsoft Entra ID felhasználói identitásával hívja meg az API-t.

  1. A felhasználói objektum azonosítóját kérdezheti le.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Rendelje hozzá a szerepkört az identitásához.

    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"
    

Tulajdonosi jogkivonat lekérése

A munkamenetkészlet API-jának közvetlen elérése érdekében hozzon létre egy hozzáférési jogkivonatot, amely szerepel a Authorization kérések fejlécében. Győződjön meg arról, hogy a jogkivonat tartalmaz egy célközönségi (aud) jogcímet az értékkel https://dynamicsessions.io. További információ: hitelesítési és engedélyezési szabályok.

  1. Hozzáférési jogkivonat lekérése.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Hozzon létre egy változót a kérelem fejlécének tárolásához.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Ez a fejléc kíséri az alkalmazás végpontjára irányuló kérést.

A munkamenetkészlet felügyeleti végpontjának lekérése

Az alkalmazás végpontjának visszaadásához használja az alábbi parancsot.

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

Ez a végpont az a hely, ahol API-hívásokat indít a kód hasznos adatainak a kódértelmező munkamenetben való végrehajtásához.

Kód végrehajtása a munkamenetben

Most, hogy rendelkezik egy tulajdonosi jogkivonattal a biztonsági környezet és a munkamenetkészlet végpontjának létrehozásához, elküldhet egy kérést az alkalmazásnak a kódblokk végrehajtásához.

Futtassa a következő parancsot a JavaScript-kód futtatásához a "hello world" naplózásához az alkalmazásban.

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

Az alábbi példához hasonló kimenetnek kell megjelennie.

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

További kódértelmező API-mintákat találhat a GitHubon.

Az erőforrások eltávolítása

Az oktatóanyagban létrehozott erőforrások hatással vannak az Azure-számlára. Ha nem fogja hosszú távon használni ezeket a szolgáltatásokat, futtassa a következő parancsot az oktatóanyagban létrehozott összes eltávolításához.

az group delete \
  --resource-group $RESOURCE_GROUP

Következő lépések