Kurz: Vytvoření spravované aplikace s vlastními akcemi a prostředky

V tomto kurzu vytvoříte vlastní spravovanou aplikaci s vlastními akcemi a prostředky. Spravovaná aplikace bude obsahovat vlastní akci na Overview stránce, vlastní typ prostředku zobrazený jako samostatná položka Table of Content nabídky a vlastní kontextovou akci na stránce vlastního prostředku.

Tento kurz zahrnuje následující kroky:

  • Vytvoření definičního souboru uživatelského rozhraní pro vytvoření instance spravované aplikace
  • Vytvoření šablony nasazení s využitím vlastního zprostředkovatele Azure, účtu služby Azure Storage a funkce Azure Functions
  • Vytvoření artefaktu definice zobrazení s vlastními akcemi a prostředky
  • Nasazení definice spravované aplikace
  • Nasazení instance spravované aplikace
  • Provádění vlastních akcí a vytváření vlastních prostředků

Požadavky

K dokončení tohoto kurzu potřebujete vědět:

Definice uživatelského rozhraní

V tomto kurzu vytvoříte spravovanou aplikaci a její spravovanou skupinu prostředků bude obsahovat vlastní instanci poskytovatele, účet úložiště a funkci. Funkce Azure použitá v tomto příkladu implementuje rozhraní API, které zpracovává vlastní operace poskytovatele pro akce a prostředky. Účet úložiště Azure se používá jako základní úložiště pro prostředky vašeho vlastního poskytovatele.

Definice uživatelského rozhraní pro vytvoření instance spravované aplikace zahrnuje funcname a storagename vstupní prvky. Název účtu úložiště a název funkce musí být globálně jedinečný. Ve výchozím nastavení se soubory funkcí nasadí z ukázkového balíčku funkcí, ale můžete ho změnit přidáním vstupního elementu pro odkaz na balíček v souboru createUiDefinition.json:

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

a výstup v souboru createUiDefinition.json:

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

Kompletní ukázka createUiDefinition.json najdete v referenčních informacích: artefakty elementů uživatelského rozhraní.

Šablona s vlastním poskytovatelem

Pokud chcete vytvořit instanci spravované aplikace s vlastním poskytovatelem, musíte definovat vlastní prostředek zprostředkovatele s veřejným názvem a do souboru mainTemplate.json zadejte Microsoft.CustomProviders/resourceProviders. V daném prostředku definujete typy prostředků a akce pro vaši službu. Nasazení služby Azure Functions a instancí účtu úložiště Azure definuje prostředky typu Microsoft.Web/sites a Microsoft.Storage/storageAccounts v uvedeném pořadí.

V tomto kurzu vytvoříte jeden users typ prostředku, ping vlastní akci a users/contextAction vlastní akci, které se budou provádět v kontextu vlastního users prostředku. Pro každý typ prostředku a akci zadejte koncový bod odkazující na funkci s názvem zadaným v souboru createUiDefinition.json. Zadejte typ směrování jako Proxy,Cache pro typy prostředků a Proxy akce:

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

Kompletní ukázku mainTemplate.json najdete v referenčních informacích: Artefakt šablony nasazení.

Zobrazení definičních artefaktů

Pokud chcete definovat uživatelské rozhraní, které zahrnuje vlastní akce a vlastní prostředky ve spravované aplikaci, musíte vytvořit artefakt viewDefinition.json . Další informace o artefaktu definice zobrazení najdete v tématu Zobrazení artefaktu definice ve spravovaných aplikacích Azure.

V tomto kurzu definujete:

  • Stránka Přehled s tlačítkem panelu nástrojů, která představuje vlastní akci TestAction se základním textovým vstupem.
  • Stránka Uživatelé , která představuje vlastní typ usersprostředku .
  • Vlastní akce users/contextAction prostředku na stránce Uživatelé , která se provede v kontextu vlastního prostředku typu users.

Následující příklad ukazuje konfiguraci zobrazení stránky Přehled:

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

Následující příklad obsahuje konfiguraci stránky prostředků Uživatelé s vlastní akcí prostředku:

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

Kompletní ukázku viewDefinition.json najdete v referenčních informacích: Zobrazit artefakt definice.

Definice spravované aplikace

Zabalte následující artefakty spravované aplikace do archivu zip a nahrajte ho do úložiště:

  • createUiDefinition.json
  • mainTemplate.json
  • viewDefinition.json

Všechny soubory musí být na kořenové úrovni. Balíček s artefakty je možné uložit v libovolném úložišti, například v objektu blob GitHubu nebo objektu blob účtu úložiště Azure. Tady je skript pro nahrání balíčku aplikace do účtu úložiště:

$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

Spusťte následující skript Azure CLI nebo postupujte podle kroků na webu Azure Portal a nasaďte definici spravované aplikace katalogu služeb:

Pokud chcete tuto ukázku spustit, nainstalujte nejnovější verzi Azure CLI. Spuštěním příkazu az login vytvořte připojení k Azure.

Ukázky pro Azure CLI jsou napsané pro bash prostředí. Pokud chcete tuto ukázku spustit ve Windows PowerShellu nebo příkazovém řádku, budete možná muset změnit prvky skriptu.

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"

Instance spravované aplikace

Po nasazení definice spravované aplikace spusťte následující skript nebo postupujte podle kroků na webu Azure Portal a nasaďte spravovanou instanci aplikace s vlastním poskytovatelem:

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\"}}"

Vlastní akce a prostředky

Po nasazení instance aplikace katalogu služeb máte dvě nové skupiny prostředků. První skupina applicationGroup prostředků obsahuje instanci spravované aplikace, druhá skupina managedResourceGroup prostředků obsahuje prostředky pro spravovanou aplikaci, včetně vlastního poskytovatele.

Application resource groups

Můžete přejít do instance spravované aplikace a provést vlastní akci na stránce Přehled, vytvořit vlastní prostředek na stránce Uživatelé a spustit vlastní kontextovou akci u vlastního prostředku.

  • Přejděte na stránku Přehled a klikněte na tlačítko Akce ping:

Perform custom action

  • Přejděte na stránku Uživatelé a klikněte na tlačítko Přidat. Zadejte vstupy pro vytvoření prostředku a odešlete formulář:

Screenshot shows the Add button selected from Users.

  • Přejděte na stránku Uživatelé, vyberte prostředek Users a klikněte na Vlastní kontextová akce:

Screenshot shows Custom Context Action selected.

Vyčištění prostředků

V předchozích krocích jste vytvořili prostředky Azure ve skupině prostředků. Pokud předpokládáte, že už tyto prostředky nebudete potřebovat, můžete je odstranit tak, že odstraníte skupinu prostředků.

V nabídce webu Azure Portal nebo na domovské stránce vyberte skupiny prostředků. Potom na stránce Skupiny prostředků vyberte myResourceGroup.

Na stránce myResourceGroup se ujistěte, že uvedené prostředky jsou ty, které chcete odstranit.

Vyberte Odstranit skupinu prostředků, do textového pole zadejte myResourceGroup , abyste ji potvrdili, a pak vyberte Odstranit.

Hledáte nápovědu

Pokud máte dotazy týkající se spravovaných aplikací Azure, můžete zkusit se zeptat na Stack Overflow pomocí značky azure-managed-app nebo Microsoft Q&A se značkou azure-managed-application. Podobná otázka už možná byla položena a zodpovězena, proto se nejprve podívejte před publikováním. Pro rychlejší odezvu prosím použijte příslušné značky.

Další kroky

Informace o publikování spravované aplikace na webu Azure Marketplace najdete v tématu Spravované aplikace Azure v Marketplace.

Přečtěte si další informace o vlastních poskytovateli Azure.