Tutoriel : Créer une application managée avec des actions et des ressources personnalisées
Dans ce tutoriel, vous allez créer votre propre application managée avec des actions et des ressources personnalisées. L’application managée contient une action personnalisée dans la page Overview
, un type de ressource personnalisé affiché sous la forme d’un élément de menu distinct dans Table of Content
, et une action contextuelle personnalisée dans la page des ressources personnalisées.
Ce tutoriel comprend les étapes suivantes :
- Créer un fichier de définition d’interface utilisateur pour la création d’une instance d’application managée
- Créer un modèle de déploiement avec un fournisseur personnalisé Azure, un compte Stockage Azure et une fonction Azure
- Créer un artefact de définition de vue avec des actions et des ressources personnalisées
- Déployer une définition d’application managée
- Déployer une instance d’application managée
- Exécuter des actions personnalisées et créer des ressources personnalisées
Prérequis
Pour suivre ce tutoriel, vous devez savoir :
- Comment Créer et publier une définition d’application managée.
- Comment Déployer une application du catalogue de services à l’aide du portail Microsoft Azure.
- Comment Créer une interface utilisateur de portail Azure pour votre application managée.
- Comment fonctionnent les capacités d’artefact de définition de vue.
- Comment fonctionnent les capacités de fournisseur personnalisé Azure.
Définition d’interface utilisateur
Dans ce tutoriel, vous allez créer une application managée et son groupe de ressources managé contenant une instance de fournisseur personnalisé, un compte de stockage et une fonction. La fonction Azure utilisée dans cet exemple implémente une API qui gère des opérations de fournisseur personnalisé pour des actions et des ressources. Le compte Stockage Azure est utilisé comme stockage de base pour vos ressources de fournisseur personnalisé.
La définition de l’interface utilisateur pour la création d’une instance d’application managée comprend des éléments d’entrée funcname
et storagename
. Le nom du compte de stockage et le nom de la fonction doivent être globalement uniques. Par défaut, les fichiers de fonction sont déployés à partir d’un exemple de package de fonction, mais vous pouvez changer cela en ajoutant un élément d’entrée pour un lien de package dans 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
}
Et une sortie dans createUiDefinition.json :
"funcname": "[steps('applicationSettings').funcname]",
"storageName": "[steps('applicationSettings').storagename]",
"zipFileBlobUri": "[steps('applicationSettings').zipFileBlobUri]"
L’exemple createUiDefinition.json complet se trouve dans Référence : Artefacts des éléments d’interface utilisateur.
Modèle avec fournisseur personnalisé
Pour créer une instance d’application managée avec un fournisseur personnalisé, vous devez définir une ressource de fournisseur personnalisé avec le nom public et le type Microsoft.CustomProviders/resourceProviders
dans votre fichier mainTemplate.json. Dans cette ressource, vous définissez les types de ressources et les actions de votre service. Pour déployer des instances de fonction Azure et de compte Stockage Azure, définissez des ressources de type Microsoft.Web/sites
et Microsoft.Storage/storageAccounts
, respectivement.
Dans ce tutoriel, vous allez créer un type de ressource users
, une action personnalisée ping
, et une action personnalisée users/contextAction
qui est exécutée dans le contexte d’une ressource personnalisée users
. Pour chaque type de ressource et action, fournissez un point de terminaison pointant vers la fonction nommée dans createUiDefinition.json. Spécifiez routingType
comme Proxy,Cache
pour les types de ressources et Proxy
pour les actions :
{
"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'))]"
]
}
L’exemple mainTemplate.json complet se trouve dans Référence : Artefact de modèle de déploiement.
Afficher un artefact de définition
Pour définir une interface utilisateur qui comprend des actions personnalisées et des ressources personnalisées dans votre application managée, vous devez créer un artefact viewDefinition.json. Pour plus d’informations sur les artefacts de définition de vue, consultez Artefact de définition de vue dans Applications managées Azure.
Dans ce tutoriel, vous allez définir :
- Une page Overview avec un bouton de barre d’outils qui représente une action personnalisée
TestAction
avec une entrée de texte de base. - Une page Users qui représente un type de ressource personnalisé
users
. - Une action de ressource personnalisée
users/contextAction
dans la page Users qui sera exécutée dans un contexte de ressource personnalisée de typeusers
.
L’exemple suivant illustre la configuration de vue pour une page « Overview » :
{
"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"
}
]
}
}
L’exemple suivant comprend la configuration de la page de ressources Utilisateurs avec l’action de ressource personnalisée :
{
"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
}
]
}
}
L’exemple viewDefinition.json complet se trouve dans Référence : Artefact de définition de vue.
Définition d’application managée
Empaquetez les artefacts d’application managée suivants dans une archive zip et chargez-les dans le stockage :
- createUiDefinition.json
- mainTemplate.json
- viewDefinition.json
Tous les fichiers doivent se trouver au niveau racine. Le package avec les artefacts peut être stocké dans n’importe quel stockage, par exemple un objet blob GitHub ou un objet blob de compte Stockage Azure. Voici un script permettant de charger le package d’application dans un compte de stockage :
$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
Exécutez le script Azure CLI suivant ou effectuez les étapes dans le portail Azure pour déployer une définition d’application managée du catalogue de services :
Pour exécuter cet exemple, installez la dernière version d’Azure CLI. Pour démarrer, exécutez az login
pour créer une connexion avec Azure.
Des exemples pour l’interface CLI sont écrits pour l’interpréteur de commandes bash
. Pour exécuter cet exemple dans Windows PowerShell ou à une invite de commandes, vous devrez peut-être modifier certains éléments du script.
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 d’application managée
Quand la définition d’application managée est déployée, exécutez le script suivant ou effectuez les étapes dans le portail Azure pour déployer votre instance d’application managée avec un fournisseur personnalisé :
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\"}}"
Actions et ressources personnalisées
Une fois l’instance d’application de catalogue de services déployée, vous avez deux nouveaux groupes de ressources. Le premier groupe de ressources applicationGroup
contient une instance de l’application managée, tandis que le deuxième groupe de ressources managedResourceGroup
contient les ressources pour l’application managée, notamment le fournisseur personnalisé.
Vous pouvez accéder à l’instance d’application managée et effectuer une action personnalisée dans la page « Overview », créer une ressource personnalisée users dans la page « Users » et exécuter une action de contexte personnalisée sur une ressource personnalisée.
- Accédez à Vue d’ensemble et sélectionnez Action Ping :
- Accédez à Utilisateurs , puis sélectionnez Ajouter. Fournissez des entrées pour la création d’une ressource et envoyez le formulaire :
- Accédez Utilisateurs et sélectionnez une ressource d’utilisateurs, puis sélectionnez Action de contexte personnalisée :
Nettoyer les ressources
Au cours des étapes précédentes, vous avez créé des ressources Azure au sein d’un groupe de ressources. Si vous ne pensez pas avoir besoin de ces ressources à l’avenir, vous pouvez les supprimer en supprimant le groupe de ressources.
Dans le menu ou la page d’accueil du portail Azure, sélectionnez Groupes de ressources. Ensuite, dans la page Groupes de ressources, sélectionnez myResourceGroup.
Dans la page myResourceGroup, assurez-vous que les ressources répertoriées sont bien celles que vous souhaitez supprimer.
Sélectionnez Supprimer le groupe de ressources, tapez myResourceGroup dans la zone de texte pour confirmer, puis sélectionnez Supprimer.
Besoin d’aide
Si vous avez des questions ou avez besoin d’une réponse sur les applications managées Azure, vous pouvez publier une question sur Stack Overflow avec une balise azure-managed-app
ou Microsoft Q&A avec balise azure-managed-application
.
Étapes suivantes
Pour publier votre application gérée sur la Place de marché Microsoft Azure, consultez Applications gérées Azure sur la Place de marché.
Apprenez-en davantage sur les fournisseurs personnalisés Azure.