Öğ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 özel bir eylem Overview , 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:

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 hesap 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 dosyasına 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 dosyasında çıktı:

  "funcname": "[steps('applicationSettings').funcname]",
  "storageName": "[steps('applicationSettings').storagename]",
  "zipFileBlobUri": "[steps('applicationSettings').zipFileBlobUri]"

CreateUiDefinition.json örneğinin tamamı Başvuru: Kullanıcı arabirimi öğeleri yapıtları adresinde bulunabilir.

Özel sağlayıcılı şablon

Özel sağlayıcıyla yönetilen uygulama örneği oluşturmak için public adlı özel sağlayıcı kaynağı tanımlamanız ve mainTemplate.json dosyanıza Microsoft.CustomProviders/resourceProviders yazmanız 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ştirilecek bir users kaynak türüping, özel eylem ve users/contextAction özel eylem oluşturacaksınız.users Her kaynak türü ve eylemi için createUiDefinition.json dosyasında verilen ada sahip işlevi işaret eden bir uç nokta sağlayın. Kaynak türleri ve Proxy eylemler için routingTypeProxy,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'))]"
  ]
}

MainTemplate.json örneğinin tamamı 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ü userstemsil 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" kaynak sayfası 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 }
      ]
    }
  }

ViewDefinition.json örneğinin tamamı 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

Aşağıda Azure CLI betiğini çalıştırın veya Hizmet Kataloğu yönetilen uygulama tanımını dağıtmak için 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ıyla 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. İlk kaynak grubu applicationGroup yönetilen uygulamanın bir örneğini, ikinci kaynak grubu managedResourceGroup ise özel sağlayıcı da dahil olmak üzere yönetilen uygulamanın kaynaklarını barındırıyor.

Application resource groups

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ış" sayfasına gidin ve "Ping Eylemi" düğmesine tıklayın:

Perform custom action

  • "Kullanıcılar" sayfasına gidin ve "Ekle" düğmesine tıklayın. Kaynak oluşturmak için girişler sağlayın ve formu gönderin:

Screenshot shows the Add button selected from Users.

  • "Kullanıcılar" sayfasına gidin, bir "kullanıcılar" kaynağı seçin ve "Özel Bağlam Eylemi"ne tıklayın:

Screenshot shows Custom Context Action selected.

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 azure-managed-app etiketiyle Stack Overflow veya azure-managed-application etiketiyle Microsoft Q&A'ya sormayı deneyebilirsiniz. Benzer bir soru zaten sorulmuş ve yanıtlanmış olabilir, bu nedenle deftere nakilden önce kontrol edin. Daha hızlı yanıt için lütfen ilgili etiketleri kullanın.

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.