Aracılığıyla paylaş


Öğ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:

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ü 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 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.

Uygulama kaynak grupları

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:

Özel eylem gerçekleştirme

  • 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'dan seçilen Ekle düğmesini gösteren ekran görüntüsü.

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

Özel Bağlam Eylemi'nin seçili olduğunu gösteren ekran görüntüsü.

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-applicationbir 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.