Öğretici: Özel eylemler ve kaynaklar ile yönetilen uygulama oluşturma

Bu öğreticide, özel eylemler ve kaynaklarla kendi yönetilen uygulamalarınızı oluşturacağız. Yönetilen uygulama sayfada özel bir eylem, içinde ayrı bir menü öğesi olarak görüntülenen özel bir kaynak türü ve özel kaynak sayfasında özel Overview Table of Content bir 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ı, Azure Depolama Hesabı veAzure İşlevi ile dağıtım şablonu yazma
  • Özel eylemler ve kaynaklarla görünüm tanımı yapıtları yazma
  • Yönetilen uygulama tanımını dağıtma
  • Yönetilen uygulama örneği dağıtma
  • Özel eylemler gerçekleştirme ve özel kaynaklar oluşturma

Önkoşullar

Bu öğreticiyi tamamlamak için şunları bilmek gerekir:

Kullanıcı arabirimi tanımı

Bu öğreticide, yönetilen bir uygulama oluşturacak ve yönetilen kaynak grubu özel sağlayıcı örneği, depolama hesabı ve işlev içerir. Bu örnekte kullanılan Azure İşlevi, eylemler ve kaynaklar için özel sağlayıcı işlemlerini ele alan bir API'yi kullanır. 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şturmak için kullanıcı arabirimi tanımı ve funcname giriş storagename öğeleri içerir. 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 üzerinde bir paket bağlantısı için giriş öğesi ekleyerek createUiDefinition.jsdeğ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 çıkışı createUiDefinition.js:

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

Örnekteki createUiDefinition.jstam bilgi Başvuru: Kullanıcı arabirimi öğeleri yapıtları'nda bulunabilir.

Özel sağlayıcı ile şablon

Özel sağlayıcı ile yönetilen bir uygulama örneği oluşturmak için, public adına sahip özel sağlayıcı kaynağı tanımlamanız ve üzerinde microsoft.CustomProviders/resourceProviders mainTemplate.jsgerekir. Bu kaynakta, hizmetiniz için kaynak türlerini ve eylemlerini tanımlarsiniz. Azure İşlevi ve Azure Depolama Hesabı örneklerini dağıtmak için sırasıyla ve Microsoft.Web/sites türünde Microsoft.Storage/storageAccounts kaynaklar tanımlayın.

Bu öğreticide, özel kaynak bağlamında gerçekleştirilecek tek bir kaynak türü, özel eylem users ping ve özel eylem users/contextAction users oluşturacak. Her kaynak türü ve eylemi için, üzerinde yer alan kaynaklarda sağlanan adla işleve işaret createUiDefinition.jssağlar. Kaynak türleri ve eylemler için olarak routingType Proxy,Cache Proxy 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'))]"
  ]
}

Örnekteki mainTemplate.jstam bilgi Başvuru: Dağıtım şablonu yapıtı'nda bulunabilir.

Tanım yapıtını görüntüleme

Yönetilen uygulamanıza özel eylemler ve özel kaynaklar içeren kullanıcı arabirimini tanımlamak için yapıt üzerindeviewDefinition.js yazmanız gerekir. Tanım yapıtlarını görüntüleme hakkında daha fazla bilgi için bkz. Görünüm tanımı yapıt Azure Yönetilen Uygulamalar.

Bu öğreticide şunları tanımlarsiniz:

  • Temel metin girişi olan özel bir eylemi temsil eden araç çubuğu TestAction düğmesinin yer alan Genel Bakış sayfası.
  • Özel bir kaynak türünü temsil eden Kullanıcılar users sayfası.
  • Kullanıcılar sayfasında türünde users/contextAction özel kaynak bağlamında gerçekleştirilecek özel bir kaynak users eylemi.

Aşağıdaki örnekte bir "Genel Bakış" sayfası için görünüm yapılandırması yer a gösterir:

{
    "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 }
      ]
    }
  }

Örnekteki viewDefinition.jstam bilgi Başvuru: Tanım yapıtlarını görüntüleme makalesinde bulunabilir.

Yönetilen uygulama tanımı

Zip arşivi için aşağıdaki yönetilen uygulama yapıtlarını paketle ve depolama alanına yükle:

  • createUiDefinition.js
  • mainTemplate.js
  • viewDefinition.js

Tüm dosyaların kök düzeyinde olması gerekir. Yapıtlara sahip paket GitHub blobu veya Azure Depolama Hesabı blobu gibi herhangi bir depolama alanında depolanmış olabilir. Uygulama paketini depolama hesabına yüklemek için bir betik şu şekildedir:

$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ğıdaki Azure CLI betiği çalıştırın veya hizmet kataloğu Azure portal uygulama tanımını dağıtmak için aşağıdaki adımları izleyin:

Bu örneği çalıştırmak için, Azure CLI'nin en son sürümünü yükler. Başlangıç olarak, Azure ile bağlantı oluşturmak için az login komutunu çalıştırın.

Azure CLı için örnekler, Shell için yazılmıştır bash . Bu örneği Windows PowerShell veya komut Isteminde ç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 show --upn-or-object-id example@contoso.org --query objectId --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 Azure portal özel sağlayıcı ile dağıtmak için aşağıdaki 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 grubu olur. İlk kaynak grubu yönetilen uygulamanın bir örneğini içerir, ikinci kaynak grubu özel sağlayıcı dahil olmak üzere applicationGroup managedResourceGroup yönetilen uygulamanın kaynaklarını tutar.

Uygulama kaynak grupları

Yönetilen uygulama örneğine gidip "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:

Özel eylem gerçekleştirme

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

Kullanıcılar'dan seçilen Ekle düğmesini gösteren ekran görüntüsü.

  • "Kullanıcılar" sayfasına gidin, bir "kullanıcılar" kaynağı seçin ve "özel bağlam eylemi" ni tıklatın:

Ekran görüntüsü özel bağlam eylemini gösterir.

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ünde veya giriş sayfasında, kaynak grupları' nı seçin. Ardından, kaynak grupları sayfasında, myresourcegroup öğesini seçin.

Myresourcegroup sayfasında, listelenen kaynakların silmek istedikleriniz olduğundan emin olun.

Kaynak grubunu sil' i seçin, onaylamak için metin kutusuna myresourcegroup yazın ve ardından Sil' i seçin.

Yardım aranıyor

Azure yönetilen uygulamalar hakkında sorularınız varsa, Azure tarafından yönetilen-uygulama etiketi ile Azure-Managed-App veya Microsoft Q& ile Stack Overflow isteyebilirsiniz. Benzer bir soru zaten istendi ve yanıtlamış olabilir, bu nedenle göndermeden ö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ılarhakkında daha fazla bilgi edinin.