Zelfstudie: JavaScript-code uitvoeren in een code-interpretersessie in Azure Container Apps (preview)
In deze zelfstudie wordt gedemonstreerd hoe u dynamische JavaScript-code uitvoert in dynamische sessies van Azure Container Apps met behulp van een HTTP-API.
In deze zelfstudie doet u het volgende:
- Een nieuwe code-interpretersessie maken
- De juiste beveiligingscontext instellen voor uw sessiegroep
- JavaScript-code doorgeven voor de container-app die moet worden uitgevoerd
Notitie
De functie JavaScript-code-interpreter in dynamische sessies van Azure Container Apps is momenteel beschikbaar als preview-versie. Zie preview-beperkingen voor meer informatie.
Vereisten
U hebt de volgende resources nodig voordat u aan deze zelfstudie begint.
Bron | Beschrijving |
---|---|
Azure-account | U hebt een Azure-account met een actief abonnement nodig. Als u geen account hebt, kunt u er gratis een maken. |
Azure-CLI | Installeer de Azure CLI. |
Instellingen
Bereid eerst de Azure CLI voor met de nieuwste updates en meld u aan bij Azure.
Werk de Azure CLI bij naar de nieuwste versie.
az upgrade
Registreer de
Microsoft.App
-resourceprovider.az provider register --namespace Microsoft.App
Installeer de nieuwste versie van de Azure Container Apps CLI-extensie.
az extension add \ --name containerapp \ --allow-preview true --upgrade
Meld u aan bij Azure.
az login
Voer een query uit voor uw Azure-abonnements-id en stel de waarde in op een variabele.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)
Stel de variabelen in die in deze procedure worden gebruikt.
Voordat u de volgende opdracht uitvoert, moet u ervoor zorgen dat u de tijdelijke aanduidingen vervangt die door uw eigen waarden worden omgeven
<>
.RESOURCE_GROUP=<RESOURCE_GROUP_NAME> SESSION_POOL_NAME=<SESSION_POOL_NAME> LOCATION="northcentralus"
U gebruikt deze variabelen om de resources te maken in de volgende stappen.
Het abonnement instellen dat u wilt gebruiken voor het maken van de resourcegroep
az account set -s $SUBSCRIPTION_ID
Maak een resourcegroep.
az group create \ --name $RESOURCE_GROUP \ --location $LOCATION
Een sessiegroep voor code-interpreters maken
Gebruik de az containerapp sessionpool create
opdracht om een Node.js sessiegroep te maken die verantwoordelijk is voor het uitvoeren van willekeurige JavaScript-code.
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
Roltoewijzingen instellen voor api's voor het uitvoeren van code
Als u wilt communiceren met de API van de sessiegroep, moet u een identiteit gebruiken met de Azure ContainerApps Session Executor
roltoewijzing. In deze zelfstudie gebruikt u uw Microsoft Entra ID-gebruikersidentiteit om de API aan te roepen.
Voer een query uit op uw gebruikersobject-id.
USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
Wijs de rol toe aan uw identiteit.
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"
Een bearer-token ophalen
Genereer voor directe toegang tot de API van de sessiegroep een toegangstoken dat moet worden opgenomen in de Authorization
header van uw aanvragen. Zorg ervoor dat het token een doelgroep (aud
) claim bevat met de waarde https://dynamicsessions.io
. Zie verificatie- en autorisatieregels voor meer informatie.
Een toegangstoken ophalen.
JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
Maak een variabele voor het opslaan van de aanvraagheader.
AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
Deze header begeleidt de aanvraag die u doet bij het eindpunt van uw toepassing.
Het beheereindpunt voor sessiegroepen ophalen
Gebruik de volgende opdracht om het eindpunt van de toepassing te retourneren.
SESSION_POOL_MANAGEMENT_ENDPOINT=$(az containerapp sessionpool show -n $SESSION_POOL_NAME -g $RESOURCE_GROUP --query "properties.poolManagementEndpoint" -o tsv)
Dit eindpunt is de locatie waar u API-aanroepen uitvoert om de nettolading van uw code uit te voeren in de code-interpretersessie.
Code uitvoeren in uw sessie
Nu u een Bearer-token hebt om de beveiligingscontext en het eindpunt van de sessiegroep tot stand te brengen, kunt u een aanvraag verzenden naar de toepassing om uw codeblok uit te voeren.
Voer de volgende opdracht uit om de JavaScript-code uit te voeren om 'hallo wereld' in uw toepassing te registreren.
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\")"
}
}'
Als het goed is, ziet u uitvoer die lijkt op het volgende voorbeeld.
{
"properties": {
"status": "Success",
"stdout": "hello-world\n",
"stderr": "",
"executionResult": "",
"executionTimeInMilliseconds": 5
}
}
Meer voorbeelden van code-interpreter-API's vindt u op GitHub.
Resources opschonen
De resources die in deze zelfstudie zijn gemaakt, hebben een effect op uw Azure-factuur. Als u deze services niet op de lange termijn gaat gebruiken, voert u de volgende opdracht uit om alles te verwijderen dat in deze zelfstudie is gemaakt.
az group delete \
--resource-group $RESOURCE_GROUP