Bagikan melalui


Tutorial: Menjalankan kode JavaScript dalam sesi penerjemah kode di Azure Container Apps (pratinjau)

Tutorial ini menunjukkan cara menjalankan kode JavaScript di sesi dinamis Azure Container Apps menggunakan API HTTP.

Di tutorial ini, Anda akan:

  • Membuat sesi penerjemah kode baru
  • Mengatur konteks keamanan yang sesuai untuk kumpulan sesi Anda
  • Teruskan kode JavaScript untuk menjalankan aplikasi kontainer

Catatan

Fitur penerjemah kode JavaScript di sesi dinamis Azure Container Apps saat ini dalam pratinjau. Untuk informasi selengkapnya, lihat batasan pratinjau.

Prasyarat

Anda memerlukan sumber daya berikut sebelum memulai tutorial ini.

Sumber daya Deskripsi
Akun Azure Anda memerlukan akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis.
Azure CLI Instal Azure CLI.

Siapkan

Mulailah dengan menyiapkan Azure CLI dengan pembaruan terbaru dan masuk ke Azure.

  1. Perbarui Azure CLI ke versi terbaru.

    az upgrade
    
  2. Daftarkan penyedia sumber Microsoft.App.

    az provider register --namespace Microsoft.App
    
  3. Instal versi terbaru ekstensi CLI Azure Container Apps.

    az extension add \
      --name containerapp \
      --allow-preview true --upgrade
    
  4. Masuk ke Azure.

    az login
    
  5. Kueri untuk ID langganan Azure Anda dan atur nilai ke variabel.

    SUBSCRIPTION_ID=$(az account show --query id --output tsv)
    
  6. Atur variabel yang digunakan dalam prosedur ini.

    Sebelum Anda menjalankan perintah berikut, pastikan untuk mengganti tempat penampung yang dikelilingi dengan <> nilai Anda sendiri.

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

    Anda menggunakan variabel ini untuk membuat sumber daya dalam langkah-langkah berikut.

  7. Mengatur langganan yang ingin Anda gunakan untuk membuat grup sumber daya

    az account set -s $SUBSCRIPTION_ID
    
  8. Buat grup sumber daya.

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

Membuat kumpulan sesi penerjemah kode

az containerapp sessionpool create Gunakan perintah untuk membuat kumpulan sesi Node.js yang bertanggung jawab untuk menjalankan kode JavaScript arbitrer.

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

Mengatur penetapan peran untuk API eksekusi kode

Untuk berinteraksi dengan API kumpulan sesi, Anda harus menggunakan identitas dengan penetapan Azure ContainerApps Session Executor peran. Dalam tutorial ini, Anda menggunakan identitas pengguna ID Microsoft Entra untuk memanggil API.

  1. Mengkueri ID objek pengguna Anda.

    USER_OBJECT_ID=$(az ad signed-in-user show --query id -o tsv)
    
  2. Tetapkan peran ke identitas Anda.

    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"
    

Mendapatkan token pembawa

Untuk akses langsung ke API kumpulan sesi, buat token akses untuk disertakan Authorization di header permintaan Anda. Pastikan token berisi klaim audiens (aud) dengan nilai https://dynamicsessions.io. Untuk informasi selengkapnya, lihat aturan autentikasi dan otorisasi .

  1. Mendapatkan token akses.

    JWT_ACCESS_TOKEN=$(az account get-access-token --resource https://dynamicsessions.io --query accessToken -o tsv)
    
  2. Buat variabel untuk menahan header permintaan.

    AUTH_HEADER="Authorization: Bearer $JWT_ACCESS_TOKEN"
    

    Header ini menyertai permintaan yang Anda buat ke titik akhir aplikasi Anda.

Mendapatkan titik akhir manajemen kumpulan sesi

Gunakan perintah berikut untuk mengembalikan titik akhir aplikasi.

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

Titik akhir ini adalah lokasi tempat Anda melakukan panggilan API untuk menjalankan payload kode Anda dalam sesi penerjemah kode.

Menjalankan kode dalam sesi Anda

Sekarang setelah Anda memiliki token pembawa untuk membuat konteks keamanan, dan titik akhir kumpulan sesi, Anda dapat mengirim permintaan ke aplikasi untuk menjalankan blok kode Anda.

Jalankan perintah berikut untuk menjalankan kode JavaScript untuk mencatat "halo dunia" di aplikasi Anda.

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

Anda akan melihat output yang menyerupai contoh berikut.

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

Anda dapat menemukan lebih banyak sampel API penerjemah kode di GitHub.

Membersihkan sumber daya

Sumber daya yang dibuat dalam tutorial ini berpengaruh pada tagihan Azure Anda. Jika Anda tidak akan menggunakan layanan ini dalam jangka panjang, jalankan perintah berikut untuk menghapus semua yang dibuat dalam tutorial ini.

az group delete \
  --resource-group $RESOURCE_GROUP

Langkah berikutnya