Öğretici: Özel eylemler ve kaynaklar ile yönetilen uygulama oluşturma
Bu öğreticide, özel eylemler ve kaynaklar ile kendi yönetilen uygulamanızı oluşturursunuz. Yönetilen uygulama sayfada Overview
özel bir eylem, içinde ayrı bir menü öğesi Table of Content
olarak görüntülenen özel bir kaynak türü ve özel kaynak sayfasında özel bağlam eylemi içerir.
Bu öğretici aşağıdaki adımları içerir:
- Yönetilen uygulama örneği oluşturmak için kullanıcı arabirimi tanım dosyası yazma
- Azure Özel Sağlayıcısı, Azure Depolama Hesabı ve Azure İşlevi ile dağıtım şablonu yazma
- Özel eylemler ve kaynaklar ile görünüm tanımı yapıtı yazma
- Yönetilen uygulama tanımı dağıtma
- Yönetilen uygulama örneğini dağıtma
- Özel eylemler gerçekleştirme ve özel kaynaklar oluşturma
Önkoşullar
Bu öğreticiyi tamamlamak için şunları bilmeniz gerekir:
- Yönetilen uygulama tanımı oluşturma ve yayımlama.
- Azure portalı aracılığıyla Hizmet Kataloğu uygulamasını dağıtma.
- Yönetilen uygulamanız için Azure portalı kullanıcı arabirimi oluşturma.
- Tanım yapıt özelliklerini görüntüleme.
- Azure Özel Sağlayıcı özellikleri.
Kullanıcı arabirimi tanımı
Bu öğreticide, yönetilen bir uygulama oluşturursunuz ve yönetilen kaynak grubu özel sağlayıcı örneği, depolama hesabı ve işlevi içerir. Bu örnekte kullanılan Azure İşlevi, eylemler ve kaynaklar için özel sağlayıcı işlemlerini işleyen bir API uygular. Azure Depolama Hesabı, özel sağlayıcı kaynaklarınız için temel depolama alanı olarak kullanılır.
Yönetilen uygulama örneği oluşturmaya yönelik kullanıcı arabirimi tanımı ve storagename
giriş öğelerini içerirfuncname
. Depolama hesabı adı ve işlev adı genel olarak benzersiz olmalıdır. Varsayılan olarak, işlev dosyaları örnek işlev paketinden dağıtılır, ancak createUiDefinition.json bir paket bağlantısı için giriş öğesi ekleyerek bunu değiştirebilirsiniz:
{
"name": "funcname",
"type": "Microsoft.Common.TextBox",
"label": "Name of the function to be created",
"toolTip": "Name of the function to be created",
"visible": true,
"constraints": {
"required": true
}
},
{
"name": "storagename",
"type": "Microsoft.Common.TextBox",
"label": "Name of the storage to be created",
"toolTip": "Name of the storage to be created",
"visible": true,
"constraints": {
"required": true
}
},
{
"name": "zipFileBlobUri",
"type": "Microsoft.Common.TextBox",
"defaultValue": "https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.customproviders/custom-rp-with-function/artifacts/functionzip/functionpackage.zip",
"label": "The Uri to the uploaded function zip file",
"toolTip": "The Uri to the uploaded function zip file",
"visible": true
}
Ve createUiDefinition.json çıktısı:
"funcname": "[steps('applicationSettings').funcname]",
"storageName": "[steps('applicationSettings').storagename]",
"zipFileBlobUri": "[steps('applicationSettings').zipFileBlobUri]"
Tam createUiDefinition.json örneği Başvuru: Kullanıcı arabirimi öğeleri yapıtları adresinde bulunabilir.
Özel sağlayıcılı şablon
Özel sağlayıcıyla yönetilen bir uygulama örneği oluşturmak için, public adlı özel sağlayıcı kaynağı tanımlamanız ve mainTemplate.json yazmanız Microsoft.CustomProviders/resourceProviders
gerekir. Bu kaynakta, hizmetiniz için kaynak türlerini ve eylemlerini tanımlarsınız. Azure İşlevi ve Azure Depolama Hesabı örneklerini dağıtmak için sırasıyla ve Microsoft.Storage/storageAccounts
türünde Microsoft.Web/sites
kaynakları tanımlayın.
Bu öğreticide, özel bir kaynak bağlamında gerçekleştirilen bir users
kaynak türüping
, özel eylem ve users/contextAction
özel eylem oluşturursunuz.users
Her kaynak türü ve eylemi için, createUiDefinition.json'de sağlanan ada sahip işlevi işaret eden bir uç nokta sağlayın. routingType
Kaynak türleri ve Proxy
eylemler için olarak Proxy,Cache
değerini belirtin:
{
"apiVersion": "[variables('customrpApiversion')]",
"type": "Microsoft.CustomProviders/resourceProviders",
"name": "[variables('customProviderName')]",
"location": "[parameters('location')]",
"properties": {
"actions": [
{
"name": "ping",
"routingType": "Proxy",
"endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
},
{
"name": "users/contextAction",
"routingType": "Proxy",
"endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
}
],
"resourceTypes": [
{
"name": "users",
"routingType": "Proxy,Cache",
"endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
}
]
},
"dependsOn": [
"[concat('Microsoft.Web/sites/',parameters('funcname'))]"
]
}
Tam mainTemplate.json örneği Başvuru: Dağıtım şablonu yapıtı adresinde bulunabilir.
Tanım yapıtını görüntüleme
Yönetilen uygulamanızda özel eylemler ve özel kaynaklar içeren kullanıcı arabirimini tanımlamak için viewDefinition.json yapıt yazmanız gerekir. Görünüm tanımı yapıtı hakkında daha fazla bilgi için bkz . Azure Yönetilen Uygulamalarında görünüm tanımı yapıtı.
Bu öğreticide şunları tanımlarsınız:
- Temel metin girişiyle özel bir eylemi
TestAction
temsil eden araç çubuğu düğmesini içeren bir Genel Bakış sayfası. - Özel kaynak türünü
users
temsil eden Kullanıcılar sayfası. - Kullanıcılar sayfasında türündeki
users
özel kaynak bağlamında gerçekleştirilecek özel kaynak eylemiusers/contextAction
.
Aşağıdaki örnekte bir "Genel Bakış" sayfasının görünüm yapılandırması gösterilmektedir:
{
"kind": "Overview",
"properties": {
"header": "Welcome to your Demo Azure Managed Application",
"description": "This Managed application with Custom Provider is for demo purposes only.",
"commands": [
{
"displayName": "Ping Action",
"path": "/customping",
"icon": "LaunchCurrent"
}
]
}
}
Aşağıdaki örnek, özel kaynak eylemiyle Kullanıcılar kaynakları sayfa yapılandırmasını içerir:
{
"kind": "CustomResources",
"properties": {
"displayName": "Users",
"version": "1.0.0.0",
"resourceType": "users",
"createUIDefinition": {},
"commands": [
{
"displayName": "Custom Context Action",
"path": "users/contextAction",
"icon": "Start"
}
],
"columns": [
{
"key": "properties.FullName",
"displayName": "Full Name"
},
{
"key": "properties.Location",
"displayName": "Location",
"optional": true
}
]
}
}
Tam viewDefinition.json örneği Başvuru: Görünüm tanımı yapıtı'nda bulunabilir.
Yönetilen uygulama tanımı
Aşağıdaki yönetilen uygulama yapıtlarını zip arşivine paketleyin ve depolama alanına yükleyin:
- createUiDefinition.json
- mainTemplate.json
- viewDefinition.json
Tüm dosyalar kök düzeyinde olmalıdır. Yapıtları olan paket, GitHub blobu veya Azure Depolama Hesabı blobu gibi herhangi bir depolama alanında depolanabilir. Uygulama paketini depolama hesabına yüklemek için bir betik aşağıdadır:
$resourceGroup="appResourcesGroup"
$storageName="mystorageaccount$RANDOM"
# Sign in to your Azure subscription
Connect-AzAccount
# Create resource group for managed application definition and application package
New-AzResourceGroup -Name $resourceGroup -Location eastus
# Create storage account for a package with application artifacts
$storageAccount=New-AzStorageAccount `
-ResourceGroupName $resourceGroup `
-Name $storageName `
-SkuName Standard_LRS `
-Location eastus `
$ctx=$storageAccount.Context
# Create storage container and upload zip to blob
New-AzStorageContainer -Name appcontainer -Context $ctx -Permission blob
Set-AzStorageBlobContent `
-File "path_to_your_zip_package" `
-Container appcontainer `
-Blob app.zip `
-Context $ctx
# Get blob absolute uri
$blobUri=(Get-AzureStorageBlob -Container appcontainer -Blob app.zip -Context $ctx).ICloudBlob.uri.AbsoluteUri
Hizmet Kataloğu yönetilen uygulama tanımını dağıtmak için aşağıdaki Azure CLI betiğini çalıştırın veya Azure portalındaki adımları izleyin:
Bu örneği çalıştırmak için Azure CLI'nın en son sürümünü yükleyin. Başlangıç olarak, Azure ile bağlantı oluşturmak için az login
komutunu çalıştırın.
Azure CLI örnekleri kabuk için bash
yazılır. Bu örneği Windows PowerShell veya Komut İstemi'nde çalıştırmak için betiğin öğelerini değiştirmeniz gerekebilir.
resourceGroup="appResourcesGroup"
# Select subscription and create resource group (if you have not created yet)
az account set --subscription <subscriptionID>
az group create --name $resourceGroup --location eastus
# Get object ID of your identity
userid=$(az ad user list --upn example@contoso.org --query [0].id --output tsv)
# Get role definition ID for the Owner role
roleid=$(az role definition list --name Owner --query [].name --output tsv)
# Create managed application definition resource
az managedapp definition create \
--name "ManagedUsersAppDefinition" \
--location "eastus" \
--resource-group $resourceGroup \
--lock-level ReadOnly \
--display-name "Managed users app definition" \
--description "Managed application with Azure Custom Provider" \
--authorizations "$userid:$roleid" \
--package-file-uri "path to your app.zip package"
Yönetilen uygulama örneği
Yönetilen uygulama tanımı dağıtıldığında aşağıdaki betiği çalıştırın veya Yönetilen uygulama örneğinizi özel sağlayıcıya dağıtmak için Azure portalındaki adımları izleyin:
appResourcesGroup="appResourcesGroup"
applicationGroup="usersApplicationGroup"
# Create resource group for managed application instance
az group create --name $applicationGroup --location eastus
# Get ID of managed application definition
appid=$(az managedapp definition show --name ManagedUsersAppDefinition --resource-group $appResourcesGroup --query id --output tsv)
# Create the managed application
az managedapp create \
--name ManagedUsersApp \
--location "eastus" \
--kind "Servicecatalog" \
--resource-group $applicationGroup \
--managedapp-definition-id $appid \
--managed-rg-id "managedResourcesGroup" \
--parameters "{\"funcname\": {\"value\": \"managedusersappfunction\"}, \"storageName\": {\"value\": \"managedusersappstorage\"}}"
Özel eylemler ve kaynaklar
Hizmet kataloğu uygulama örneği dağıtıldıktan sonra iki yeni kaynak grubunuz olur. Kaynak grubu applicationGroup
yönetilen uygulamanın bir örneğini içerir ve kaynak grubu managedResourceGroup
özel sağlayıcı da dahil olmak üzere yönetilen uygulamanın kaynaklarını tutar.
Yönetilen uygulama örneğine gidebilir ve "Genel Bakış" sayfasında özel eylem gerçekleştirebilir, "Kullanıcılar" sayfasında kullanıcılara özel kaynak oluşturabilir ve özel kaynakta özel bağlam eylemi çalıştırabilirsiniz.
- Genel Bakış'a gidin ve Ping Eylemi'ne tıklayın:
- Kullanıcılar'a gidin ve Ekle'yi seçin. Kaynak oluşturmak için girişler sağlayın ve formu gönderin:
- Kullanıcılar'a gidin, bir kullanıcı kaynağı seçin ve Özel Bağlam Eylemi'ne tıklayın:
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. İleride bu kaynaklara ihtiyaç duymayacağınızı düşünüyorsanız kaynakları silmek için kaynak grubunu silebilirsiniz.
Azure portalı menüsünden veya Giriş sayfasında Kaynak grupları'nı seçin. Ardından Kaynak grupları sayfasında myResourceGroup öğesini seçin.
myResourceGroup sayfasında, silmek istediğiniz kaynakların listelenmiş kaynaklar olduğundan emin olun.
Kaynak grubunu sil'i seçin, onaylamak için metin kutusuna myResourceGroup yazın ve sil'i seçin.
Yardım aranıyor
Azure Yönetilen Uygulamalar hakkında sorularınız varsa veya bir yanıta ihtiyacınız varsa Stack Overflow'da etiketiyle veya Microsoft Soru-Cevap etiketiyle azure-managed-app
azure-managed-application
bir soru gönderebilirsiniz.
Sonraki adımlar
Yönetilen uygulamanızı Azure Market'te yayımlamak için bkz. Market'teki Azure tarafından yönetilen uygulamalar.
Azure Özel Sağlayıcıları hakkında daha fazla bilgi edinin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin