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.
Zaktualizuj interfejs wiersza polecenia platformy Azure do najnowszej wersji.
az upgrade
Zarejestruj dostawcę
Microsoft.App
zasobów.az provider register --namespace Microsoft.App
Zainstaluj najnowszą wersję rozszerzenia interfejsu wiersza polecenia usługi Azure Container Apps.
az extension add \ --name containerapp \ --allow-preview true --upgrade
Zaloguj się do Azure.
az login
Wykonaj zapytanie dotyczące identyfikatora subskrypcji platformy Azure i ustaw wartość na zmienną.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
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.
Ustaw subskrypcję, której chcesz użyć do utworzenia grupy zasobów
az account set -s $SUBSCRIPTION_ID
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.
Wykonaj zapytanie dotyczące identyfikatora obiektu użytkownika.
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
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 .
Uzyskiwanie tokenu dostępu.
JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
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