Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu öğreticide, Azure Container Apps'te bir kabuk oturum havuzunu dağıtma ve Dinamik Oturumlar API'sini ve ARM şablonlarını kullanarak kabuk komutlarını yürütme işlemleri gösterilmektedir.
Bu öğreticide siz:
- ARM şablonlarını kullanarak shell oturumu havuzu dağıtma
- Uygun izinlere sahip kullanıcı tarafından atanan yönetilen kimlik oluşturma
- Dinamik Oturumlar API'sini kullanarak kabuk komutlarını yürütme
Önkoşullar
Bu öğreticiye başlamadan önce aşağıdaki kaynaklara ihtiyacınız vardır.
| Gereksinim | Description |
|---|---|
| Azure hesabı | Etkin aboneliği olan bir Azure hesabına ihtiyacınız vardır. Eğer bir hesabınız yoksa ücretsiz olarak bir tane oluşturabilirsiniz. |
| Azure Komut Satırı Arayüzü (Azure CLI) | Azure CLI'yi yükleyin. |
Kurulum
En son güncelleştirmelerle Azure CLI'yi hazırlayarak ve Azure'da oturum açarak başlayın.
Azure CLI'yi en son sürüme güncelleştirin.
az upgradeKaynak sağlayıcısını
Microsoft.Appkaydedin.az provider register --namespace Microsoft.AppAzure Container Apps CLI uzantısının en son sürümünü yükleyin.
az extension add --name containerapp --allow-preview true --upgradeAzure'da oturum açın.
az loginAzure abonelik kimliğinizi sorgulayıp değeri bir değişken olarak ayarlayın.
SUBSCRIPTION_ID=$(az account show --query id --output tsv)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=<LOCATION> API_VERSION="2025-10-02-preview"Aşağıdaki adımlarda kaynakları oluşturmak için bu değişkenleri kullanırsınız.
Kaynak grubunu oluşturmak için kullanmak istediğiniz aboneliği ayarlayın.
az account set -s $SUBSCRIPTION_IDBir kaynak grubu oluşturun.
az group create --name $RESOURCE_GROUP --location $LOCATION
ARM şablonunu oluşturma
Kabuk oturum havuzunuzu tanımlamak için deploy.json adlı bir ARM şablon dosyası oluşturun.
{
"$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"
}
}
}
]
}
Kabuk oturum havuzunu dağıt
Shell oturum havuzunuzu dağıtmak için ARM şablonunu kullanın.
az deployment group create --resource-group $RESOURCE_GROUP --template-file deploy.json
Yönetilen kimliği atayın
Oturum havuzuna API çağrılarının kimliğini doğrulamak için kullanılacak, kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
Kimlik adını ve havuz kaynak kimliğini ayarlayın.
UAMI_NAME=${SESSION_POOL_NAME}-uami POOL_ID="/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionpools/$SESSION_POOL_NAME"Kullanıcı tarafından atanan yönetilen kimliği oluşturun.
az identity create --resource-group $RESOURCE_GROUP --name $UAMI_NAME --location $LOCATIONYönetilen kimliğin asal kimliğini alın.
UAMI_PRINCIPAL=$(az identity show --resource-group $RESOURCE_GROUP --name $UAMI_NAME --query principalId -o tsv)
Azure Container App’inize yönetilen bir kimliği atayın
Azure Container App'inizi oluştururken veya güncelleştirirken, uygulamaya kullanıcı tarafından atanan yönetilen kimliği atayın. Örneğin:
az containerapp update \
--name <CONTAINER_APP_NAME> \
--resource-group $RESOURCE_GROUP \
--user-assigned $UAMI_NAME
Daha fazla ayrıntı için Bkz. Kapsayıcı uygulamasına yönetilen kimlik atama .
Oturum yürütme API'leri için rol atamalarını ayarlama
Oturum havuzunun API'siyle etkileşim kurmak için yönetilen kimliğinize Azure ContainerApps Session Executor rolünü atamanız gerekir.
Kimlik yayılımını bekleyin, ardından rolü yönetilen kimliğe atayın.
az role assignment create --assignee $UAMI_PRINCIPAL --role "Azure ContainerApps Session Executor" --scope $POOL_ID
Taşıyıcı belirteci alma
Oturum havuzunun API'sine erişmek için bir erişim belirteci gerekir. yöntemi, kodu nerede çalıştırdığınıza bağlıdır:
Azure Container Uygulamanızın içinden
Kullanıcı tarafından atanan yönetilen kimliğin atandığı bir Azure Container App içinden çalışırken, Azure Örnek Meta Veri Hizmeti'ni (IMDS) kullanarak bir erişim belirteci alın:
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')
Bu komut, belirteci alır ve access_token kullanarak JSON yanıtından jq değerini ayıklar.
Yerel test ve geliştirme için
Yerel olarak veya geliştirme ortamınızdan test ederken, Azure CLI kullanarak bir erişim belirteci alabilirsiniz (uygun izinlere sahip olmanız gerekir):
ACCESS_TOKEN=$(az account get-access-token --resource "https://dynamicsessions.io" --query accessToken --output tsv)
Uyarı
Yerel testin çalışması için, Azure CLI oturumunuzun oturum havuzuna atanmış "Azure ContainerApps Oturum Yürütücüsü" rolüne sahip bir kullanıcı veya hizmet sorumlusu olarak kimliğinin doğrulanması gerekir. Yönetilen kimlik yaklaşımı üretim senaryoları için önerilir.
Oturumunuzda kabuk komutlarını yürütme
Artık güvenlik bağlamını oluşturmak için taşıyıcı belirtecine sahip olduğunuz için, kabuk komutlarını yürütmek için oturum havuzuna bir istek gönderebilirsiniz.
API çağrısı için istek gövdesini oluşturun.
EXEC_ID=$(uuidgen) BODY=$(cat <<EOF { "codeInputType": "inline", "executionType": "synchronous", "shellCommand": "echo Hello world!", "timeoutInSeconds": 600 } EOF )API uç noktası URL'sini oluşturun.
URL="https://$LOCATION.dynamicsessions.io/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/sessionPools/$SESSION_POOL_NAME/executions?api-version=$API_VERSION&identifier=$EXEC_ID"Kabuk komutlarını çalıştır.
Azure Container App'in içinden veya yerel testten:
curl --request POST --url "$URL" --header "Authorization: Bearer $ACCESS_TOKEN" --header 'content-type: application/json' --data "$BODY"Kabuk komutlarının (
hello worldvehi) çıkışı da dahil olmak üzere yürütme sonuçlarını içeren bir JSON yanıtı almanız gerekir.
Dağıtımınızı doğrulayın
Kaynaklarınızın başarıyla oluşturulduğunu şu komutları kullanarak doğrulayabilirsiniz:
Oturum havuzu dağıtımını doğrulayın.
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}'Rol atamayı doğrulayın.
az role assignment list --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.App/sessionpools/$SESSION_POOL_NAME" --output table
Kaynakları temizle
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