Aracılığıyla paylaş


Öğretici: Azure Container Apps'te kod yorumlayıcı oturumunda JavaScript kodu çalıştırma (önizleme)

Bu öğreticide, HTTP API'sini kullanarak Azure Container Apps dinamik oturumlarında JavaScript kodu yürütme adımları gösterilmektedir.

Bu öğreticide şunlarız:

  • Yeni kod yorumlayıcı oturumu oluşturma
  • Oturum havuzunuz için uygun güvenlik bağlamını ayarlama
  • Kapsayıcı uygulamasının çalışması için JavaScript kodu geçirme

Not

Azure Container Apps dinamik oturumlarındaki JavaScript kod yorumlayıcı özelliği şu anda önizleme aşamasındadır. Daha fazla bilgi için bkz . önizleme sınırlamaları.

Önkoşullar

Bu öğreticiye başlamadan önce aşağıdaki kaynaklara ihtiyacınız vardır.

Kaynak Açıklama
Azure hesabı Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Kuruluşunuz yoksa şimdi ücretsiz olarak bir tane oluşturabilirsiniz.
Azure CLI Azure CLI’yi yükleyin.

Ayarlama

En son güncelleştirmelerle Azure CLI'yi hazırlayarak ve Azure'da oturum açarak başlayın.

  1. Azure CLI'yi en son sürüme güncelleştirin.

    az upgrade
    
  2. Kaynak sağlayıcısını Microsoft.App kaydedin.

    az provider register --namespace Microsoft.App
    
  3. Azure Container Apps CLI uzantısının en son sürümünü yükleyin.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Azure'da oturum açın.

    az login
    
  5. Azure abonelik kimliğinizi sorgulayıp değeri bir değişken olarak ayarlayın.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Bu yordamda kullanılan değişkenleri ayarlayın.

    Aşağıdaki komutu çalıştırmadan önce, ile çevrelenen <> yer tutucuları kendi değerlerinizle değiştirdiğinizden emin olun.

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

    Aşağıdaki adımlarda kaynakları oluşturmak için bu değişkenleri kullanırsınız.

  7. Kaynak grubunu oluşturmak için kullanmak istediğiniz aboneliği ayarlama

    az account set -s $SUBSCRIPTION_ID
    
  8. Kaynak grubu oluşturun.

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

Kod yorumlayıcı oturum havuzu oluşturma

Komutunu kullanarak az containerapp sessionpool create rastgele JavaScript kodu yürütmekle sorumlu olan bir Node.js oturum havuzu oluşturun.

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

Kod yürütme API'leri için rol atamalarını ayarlama

Oturum havuzunun API'siyle etkileşime geçmek için rol atamasıyla Azure ContainerApps Session Executor bir kimlik kullanmanız gerekir. Bu öğreticide, API'yi çağırmak için Microsoft Entra Id kullanıcı kimliğinizi kullanacaksınız.

  1. Kullanıcı nesne kimliğinizi sorgula.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Rolü kimliğinize atayın.

    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"
    

Taşıyıcı belirteci alma

Oturum havuzunun API'sine doğrudan erişim için, isteklerinizin üst bilgisine eklenecek Authorization bir erişim belirteci oluşturun. Belirtecin değerine https://dynamicsessions.iosahip bir hedef kitle (aud) talebi içerdiğinden emin olun. Daha fazla bilgi için bkz . kimlik doğrulaması ve yetkilendirme kuralları.

  1. Erişim belirteci alma.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. İstek üst bilgisini tutmak için bir değişken oluşturun.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Bu üst bilgi, uygulamanızın uç noktasına yaptığınız isteğe eşlik eder.

Oturum havuzu yönetim uç noktasını alma

Uygulamanın uç noktasını döndürmek için aşağıdaki komutu kullanın.

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

Bu uç nokta, kod yorumlayıcı oturumunda kod yükünüzü yürütmek için API çağrıları yaptığınız konumdur.

Oturumunuzda kod yürütme

Artık güvenlik bağlamını ve oturum havuzu uç noktasını oluşturmak için taşıyıcı belirteciniz olduğuna göre, kod bloğunuzu yürütmek için uygulamaya bir istek gönderebilirsiniz.

Uygulamanızda "hello world" günlüğünü günlüğe kaydetmek için JavaScript kodunu çalıştırmak için aşağıdaki komutu çalıştırın.

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

Aşağıdaki örneğe benzer bir çıktı görmeniz gerekir.

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

GitHub'da daha fazla kod yorumlayıcısı API örneği bulabilirsiniz.

Kaynakları temizleme

Bu öğreticide oluşturulan kaynakların Azure faturanız üzerinde etkisi vardır. Bu hizmetleri uzun süreli kullanmayacaksanız, bu öğreticide oluşturulan her şeyi kaldırmak için aşağıdaki komutu çalıştırın.

az group delete \
  --resource-group $RESOURCE_GROUP

Sonraki adımlar