Sdílet prostřednictvím


Kurz: Spuštění kódu JavaScriptu v relaci interpretu kódu v Azure Container Apps (Preview)

Tento kurz ukazuje, jak spouštět javascriptový kód v dynamických relacích Azure Container Apps pomocí rozhraní HTTP API.

V tomto kurzu:

  • Vytvoření nové relace interpretu kódu
  • Nastavení vhodného kontextu zabezpečení pro fond relací
  • Předání kódu JavaScriptu pro spuštění aplikace kontejneru

Poznámka:

Funkce interpretu kódu JavaScriptu v dynamických relacích Azure Container Apps je aktuálně ve verzi Preview. Další informace najdete v tématu Omezení verze Preview.

Požadavky

Než začnete s tímto kurzem, budete potřebovat následující zdroje informací.

Resource Popis
Účet Azure Potřebujete účet Azure s aktivním předplatným. Pokud jej nemáte, můžete si jej zdarma vytvořit.
Azure CLI Nainstalujte rozhraní příkazového řádku Azure CLI.

Nastavení

Začněte přípravou Azure CLI s nejnovějšími aktualizacemi a přihlášením k Azure.

  1. Aktualizujte Azure CLI na nejnovější verzi.

    az upgrade
    
  2. Zaregistrujte Microsoft.App poskytovatele prostředků.

    az provider register --namespace Microsoft.App
    
  3. Nainstalujte nejnovější verzi rozšíření Azure Container Apps CLI.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Přihlaste se do Azure.

    az login
    
  5. Zadejte dotaz na ID předplatného Azure a nastavte hodnotu na proměnnou.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Nastavte proměnné použité v tomto postupu.

    Před spuštěním následujícího příkazu nezapomeňte zástupné symboly nahradit <> vlastními hodnotami.

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

    Tyto proměnné použijete k vytvoření prostředků v následujících krocích.

  7. Nastavte předplatné, které chcete použít k vytvoření skupiny prostředků.

    az account set -s $SUBSCRIPTION_ID
    
  8. Vytvořte skupinu prostředků.

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

Vytvoření fondu relací interpreta kódu

az containerapp sessionpool create Pomocí příkazu vytvořte fond relací Node.js, který je zodpovědný za spuštění libovolného kódu JavaScriptu.

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

Nastavení přiřazení rolí pro rozhraní API pro spouštění kódu

Pokud chcete pracovat s rozhraním API fondu relací, musíte použít identitu s přiřazením Azure ContainerApps Session Executor role. V tomto kurzu použijete identitu uživatele Microsoft Entra ID k volání rozhraní API.

  1. Zadejte dotaz na ID objektu uživatele.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Přiřaďte roli k vaší 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"
    

Získání nosné tokeny

Pro přímý přístup k rozhraní API fondu relací vygenerujte přístupový token, který se zahrne do Authorization hlavičky vašich požadavků. Ujistěte se, že token obsahuje deklaraci identity cílové skupiny (aud) s hodnotou https://dynamicsessions.io. Další informace najdete v tématu Ověřovací a autorizační pravidla.

  1. Získejte přístupový token.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Vytvořte proměnnou pro uložení hlavičky požadavku.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Tato hlavička doprovází požadavek, který provedete do koncového bodu vaší aplikace.

Získání koncového bodu správy fondu relací

Pomocí následujícího příkazu vraťte koncový bod aplikace.

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

Tento koncový bod je umístění, kde provádíte volání rozhraní API pro spuštění datové části kódu v relaci interpretu kódu.

Spuštění kódu v relaci

Teď, když máte nosný token pro vytvoření kontextu zabezpečení a koncový bod fondu relací, můžete odeslat žádost aplikaci, aby spustila váš blok kódu.

Spuštěním následujícího příkazu spusťte kód JavaScriptu pro protokolování "hello world" ve vaší aplikaci.

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

Měl by se zobrazit výstup podobný následujícímu příkladu.

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

Další ukázky rozhraní API interpretu kódu najdete na GitHubu.

Vyčištění prostředků

Prostředky vytvořené v tomto kurzu mají vliv na fakturu za Azure. Pokud tyto služby nebudete používat dlouhodobě, spuštěním následujícího příkazu odeberte vše vytvořené v tomto kurzu.

az group delete \
  --resource-group $RESOURCE_GROUP

Další kroky