Udostępnij za pośrednictwem


Samouczek: uruchamianie kodu JavaScript w sesji interpretera kodu w usłudze Azure Container Apps (wersja zapoznawcza)

W tym samouczku pokazano, jak wykonać kod JavaScript w sesjach dynamicznych usługi Azure Container Apps przy użyciu interfejsu API HTTP.

W tym samouczku wykonasz następujące elementy:

  • Tworzenie nowej sesji interpretera kodu
  • Ustawianie odpowiedniego kontekstu zabezpieczeń dla puli sesji
  • Przekazywanie kodu JavaScript dla aplikacji kontenera do uruchomienia

Uwaga

Funkcja interpretera kodu JavaScript w sesjach dynamicznych usługi Azure Container Apps jest obecnie dostępna w wersji zapoznawczej. Aby uzyskać więcej informacji, zobacz ograniczenia wersji zapoznawczej.

Wymagania wstępne

Przed rozpoczęciem tego samouczka potrzebne są następujące zasoby.

Zasób opis
Konto platformy Azure Potrzebujesz konta platformy Azure z aktywną subskrypcją. Jeśli nie masz konta, możesz je utworzyć teraz za darmo.
Interfejs wiersza polecenia platformy Azure Zainstaluj interfejs wiersza polecenia platformy Azure.

Ustawienia

Zacznij od przygotowania interfejsu wiersza polecenia platformy Azure przy użyciu najnowszych aktualizacji i zalogowania się do platformy Azure.

  1. Zaktualizuj interfejs wiersza polecenia platformy Azure do najnowszej wersji.

    az upgrade
    
  2. Zarejestruj dostawcę Microsoft.App zasobów.

    az provider register --namespace Microsoft.App
    
  3. Zainstaluj najnowszą wersję rozszerzenia interfejsu wiersza polecenia usługi Azure Container Apps.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Zaloguj się do Azure.

    az login
    
  5. Wykonaj zapytanie dotyczące identyfikatora subskrypcji platformy Azure i ustaw wartość na zmienną.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Ustaw zmienne używane w tej procedurze.

    Przed uruchomieniem następującego polecenia pamiętaj, aby zastąpić symbole zastępcze otoczone <> własnymi wartościami.

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

    Te zmienne służą do tworzenia zasobów w poniższych krokach.

  7. Ustaw subskrypcję, której chcesz użyć do utworzenia grupy zasobów

    az account set -s $SUBSCRIPTION_ID
    
  8. Utwórz grupę zasobów.

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

Tworzenie puli sesji interpretera kodu

az containerapp sessionpool create Użyj polecenia , aby utworzyć pulę sesji Node.js, która jest odpowiedzialna za wykonywanie dowolnego kodu JavaScript.

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

Ustawianie przypisań ról dla interfejsów API wykonywania kodu

Aby wchodzić w interakcje z interfejsem API puli sesji, musisz użyć tożsamości z przypisaniem Azure ContainerApps Session Executor roli. W tym samouczku użyjesz tożsamości użytkownika identyfikatora entra firmy Microsoft do wywołania interfejsu API.

  1. Wykonaj zapytanie dotyczące identyfikatora obiektu użytkownika.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Przypisz rolę do swojej tożsamości.

    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"
    

Uzyskiwanie tokenu elementu nośnego

Aby uzyskać bezpośredni dostęp do interfejsu API puli sesji, wygeneruj token dostępu do uwzględnienia w Authorization nagłówku żądań. Upewnij się, że token zawiera oświadczenie odbiorców (aud) z wartością https://dynamicsessions.io. Aby uzyskać więcej informacji, zobacz reguły uwierzytelniania i autoryzacji .

  1. Uzyskiwanie tokenu dostępu.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Utwórz zmienną do przechowywania nagłówka żądania.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Ten nagłówek towarzyszy żądaniu do punktu końcowego aplikacji.

Uzyskiwanie punktu końcowego zarządzania pulą sesji

Użyj następującego polecenia, aby zwrócić punkt końcowy aplikacji.

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

Ten punkt końcowy to lokalizacja, w której wykonujesz wywołania interfejsu API w celu wykonania ładunku kodu w sesji interpretera kodu.

Wykonywanie kodu w sesji

Teraz, gdy masz token elementu nośnego w celu ustanowienia kontekstu zabezpieczeń i punktu końcowego puli sesji, możesz wysłać żądanie do aplikacji w celu wykonania bloku kodu.

Uruchom następujące polecenie, aby uruchomić kod JavaScript w celu zarejestrowania "hello world" w aplikacji.

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

Powinny zostać wyświetlone dane wyjściowe podobne do poniższego przykładu.

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

Więcej przykładów interfejsu API interpretera kodu można znaleźć w witrynie GitHub.

Czyszczenie zasobów

Zasoby utworzone w tym samouczku mają wpływ na rachunek za platformę Azure. Jeśli nie zamierzasz korzystać z tych usług długoterminowych, uruchom następujące polecenie, aby usunąć wszystkie elementy utworzone w tym samouczku.

az group delete \
  --resource-group $RESOURCE_GROUP

Następne kroki