Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Tutorial ini menunjukkan cara menyebarkan kumpulan sesi shell di Azure Container Apps dan menjalankan perintah shell menggunakan api Sesi Dinamis dan templat ARM.
Di tutorial ini, Anda akan:
- Menyebarkan kumpulan sesi shell menggunakan templat ARM
- Membuat identitas terkelola yang ditetapkan pengguna dengan izin yang sesuai
- Menjalankan perintah shell melalui API Sesi Dinamis
Prasyarat
Anda memerlukan sumber daya berikut sebelum memulai tutorial ini.
| Persyaratan | Description |
|---|---|
| Akun Azure | Anda memerlukan akun Azure dengan langganan aktif. Jika Anda tidak memilikinya, Anda dapat membuatnya secara gratis. |
| Azure CLI (antarmuka baris perintah Azure) | Instal Azure CLI. |
Pengaturan
Mulailah dengan menyiapkan Azure CLI dengan pembaruan terbaru dan masuk ke Azure.
Perbarui Azure CLI ke versi terbaru.
az upgradeDaftarkan penyedia sumber
Microsoft.App.az provider register --namespace Microsoft.AppInstal versi terbaru ekstensi CLI Azure Container Apps.
az extension add --name containerapp --allow-preview true --upgradeMasuk ke Azure.
az loginKueri untuk ID langganan Azure Anda dan atur nilai ke variabel.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)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=<LOCATION> API_VERSION="2025-10-02-preview"Anda menggunakan variabel ini untuk membuat sumber daya dalam langkah-langkah berikut.
Atur langganan yang ingin Anda gunakan untuk membuat grup sumber daya.
az account set -s $SUBSCRIPTION_IDBuat grup sumber daya.
az group create --name $RESOURCE_GROUP --location $LOCATION
Buat templat ARM
Buat file templat ARM bernama deploy.json untuk menentukan kumpulan sesi shell Anda.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"apiVersion": "2025-10-02-preview",
"name": "myshellpool",
"type": "Microsoft.App/sessionpools",
"location": "North Central US",
"properties": {
"poolManagementType": "Dynamic",
"containerType": "Shell", # Set the "containerType" property to "Shell"
"scaleConfiguration": {
"maxConcurrentSessions": 5
},
"dynamicPoolConfiguration": {
"lifecycleConfiguration": {
"lifecycleType": "Timed",
"cooldownPeriodInSeconds": 300
}
},
"sessionNetworkConfiguration": {
"status": "EgressEnabled"
}
}
}
]
}
Penerapan kumpulan sesi shell
Gunakan templat ARM untuk menyebarkan kumpulan sesi shell Anda.
az deployment group create --resource-group $RESOURCE_GROUP --template-file deploy.json
Menetapkan identitas terkelola
Buat identitas terkelola yang ditetapkan pengguna yang akan digunakan untuk mengautentikasi panggilan API ke kumpulan sesi.
Atur nama identitas dan ID sumber daya kumpulan.
UAMI_NAME=${SESSION_POOL_NAME}-uami POOL_ID="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionpools/$SESSION_POOL_NAME"Buat identitas terkelola yang ditetapkan pengguna.
az identity create --resource-group $RESOURCE_GROUP --name $UAMI_NAME --location $LOCATIONDapatkan ID utama identitas terkelola.
UAMI_PRINCIPAL=$(az identity show --resource-group $RESOURCE_GROUP --name $UAMI_NAME --query principalId -o tsv)
Menetapkan identitas terkelola ke Aplikasi Kontainer Azure Anda
Saat membuat atau memperbarui Azure Container App Anda, tetapkan identitas terkelola yang ditetapkan pengguna ke aplikasi. Contohnya:
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group $RESOURCE_GROUP \
--user-assigned $UAMI_NAME
Lihat Menetapkan identitas terkelola ke aplikasi kontainer untuk detail selengkapnya.
Mengatur penetapan peran untuk API eksekusi sesi
Untuk berinteraksi dengan API kumpulan sesi, Anda harus menetapkan peran Azure ContainerApps Session Executor ke identitas terkelola Anda.
Tunggu penyebaran identitas, kemudian tetapkan peran ke identitas terkelola.
az role assignment create --assignee $UAMI_PRINCIPAL --role "Azure ContainerApps Session Executor" --scope $POOL_ID
Mendapatkan token pembawa
Untuk mengakses API kumpulan sesi, Anda memerlukan token akses. Metode ini tergantung pada tempat Anda menjalankan kode:
Dari dalam Aplikasi Kontainer Azure Anda
Saat berjalan dari dalam suatu Aplikasi Kontainer Azure yang memiliki identitas terkelola yang ditetapkan oleh pengguna, dapatkan token akses menggunakan Layanan Metadata Instans Azure (IMDS):
ACCESS_TOKEN=$(curl -s -H "Metadata: true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://dynamicsessions.io" \
| jq -r '.access_token')
Perintah ini mengambil token dan mengekstrak access_token nilai dari respons JSON menggunakan jq.
Untuk pengujian dan pengembangan lokal
Saat menguji secara lokal atau dari lingkungan pengembangan, Anda dapat memperoleh token akses menggunakan Azure CLI (Anda harus memiliki izin yang sesuai):
ACCESS_TOKEN=$(az account get-access-token --resource "https://dynamicsessions.io" --query accessToken --output tsv)
Nota
Agar pengujian lokal berfungsi, sesi Azure CLI Anda harus diautentikasi sebagai pengguna atau perwakilan layanan yang memiliki peran "Pelaksana Sesi Azure ContainerApps" yang ditetapkan ke kumpulan sesi. Pendekatan identitas terkelola direkomendasikan untuk skenario produksi.
Menjalankan perintah shell dalam sesi Anda
Sekarang setelah Anda memiliki token pembawa untuk menetapkan konteks keamanan, Anda dapat mengirim permintaan ke kumpulan sesi untuk menjalankan perintah shell.
Buat isi permintaan untuk panggilan API.
EXEC_ID=$(uuidgen) BODY=$(cat <<EOF { "codeInputType": "inline", "executionType": "synchronous", "shellCommand": "echo Hello world!", "timeoutInSeconds": 600 } EOF )Buat URL titik akhir API.
URL="https://$LOCATION.dynamicsessions.io/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/sessionPools/$SESSION_POOL_NAME/executions?api-version=$API_VERSION&identifier=$EXEC_ID"Jalankan perintah shell.
Dari dalam Azure Container App atau pengujian lokal:
curl --request POST --url "$URL" --header "Authorization: Bearer $ACCESS_TOKEN" --header 'content-type: application/json' --data "$BODY"Anda harus menerima respons JSON yang berisi hasil eksekusi, termasuk output dari perintah shell (
hello worlddanhi).
Verifikasi penerapan Anda
Anda dapat memverifikasi bahwa sumber daya Anda berhasil dibuat menggunakan perintah ini:
Verifikasi penyebaran kumpulan sesi.
az resource show --ids "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionpools/$SESSION_POOL_NAME" --query '{name:name, location:location, provisioningState:properties.provisioningState}'Verifikasi penetapan peran.
az role assignment list --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionpools/$SESSION_POOL_NAME" --output table
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