Tutorial: Creación de una aplicación administrada con acciones y recursos personalizados
En este tutorial, creará su propia aplicación administrada con acciones y recursos personalizados. La aplicación administrada contiene una acción personalizada en la página Overview
, un tipo de recurso personalizado que se muestra como un elemento de menú independiente en Table of Content
y una acción de contexto personalizada en la página del recurso personalizado.
Este tutorial incluye los siguientes pasos:
- Creación de un archivo de definición de la interfaz de usuario para crear una instancia de aplicación administrada.
- Creación de una plantilla de implementación con el proveedor personalizado de Azure, la cuenta de Azure Storage y una función de Azure.
- Creación de un artefacto de definición de vistas con acciones y recursos personalizados.
- Creación de una definición de aplicación administrada.
- Implementación de una instancia de aplicación administrada.
- Realización de acciones personalizadas y creación de recursos personalizados.
Prerrequisitos
Para completar este tutorial, necesita saber lo siguiente:
- Creación y publicación de una definición de aplicación administrada.
- Implementación de aplicaciones del catálogo de servicios mediante Azure Portal.
- Creación de la interfaz de usuario de Azure Portal para una aplicación administrada.
- Funcionalidades de artefactos de definición de vistas.
- Funcionalidades del proveedor personalizado de Azure.
Definición de la interfaz de usuario
En este tutorial, va a crear una aplicación administrada y su grupo de recursos administrados contiene una instancia de proveedor personalizado, una cuenta de almacenamiento y una función. La función de Azure que se usa en este ejemplo implementa una API que controla las operaciones del proveedor personalizado para las acciones y los recursos. La cuenta de Azure Storage se usa como almacenamiento básico para los recursos del proveedor personalizado.
La definición de la interfaz de usuario para crear una instancia de aplicación administrada incluye los elementos de entrada funcname
y storagename
. El nombre de la cuenta de almacenamiento y el nombre de la función deben ser únicos globalmente. De manera predeterminada, los archivos de función se implementan desde el paquete de función de ejemplo, pero esto se puede cambiar si agrega un elemento de entrada de un vínculo de paquete en 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
}
Y de salida en createUiDefinition.json:
"funcname": "[steps('applicationSettings').funcname]",
"storageName": "[steps('applicationSettings').storagename]",
"zipFileBlobUri": "[steps('applicationSettings').zipFileBlobUri]"
El ejemplo de createUiDefinition.json completo se puede encontrar en Referencia: Artefactos de elementos de la interfaz de usuario.
Plantilla con proveedor personalizado
Para crear una instancia de aplicación administrada con un proveedor personalizado, debe definir el recurso de proveedor personalizado con el nombre public y el tipo Microsoft.CustomProviders/resourceProviders
en mainTemplate.json. En ese recurso, defina los tipos de recurso y las acciones para el servicio. Para implementar las instancias de Azure Functions y de la cuenta de Azure Storage, defina recursos del tipo Microsoft.Web/sites
y Microsoft.Storage/storageAccounts
respectivamente.
En este tutorial, creará un tipo de recurso users
, una acción personalizada ping
y una acción personalizada users/contextAction
que se ejecutan en un contexto de un recurso personalizado users
. Para cada tipo de recurso y acción, proporcione un punto de conexión que apunte a la función con el nombre proporcionado en createUiDefinition.json. Especifique routingType
como Proxy,Cache
para los tipos de recurso y Proxy
para las acciones:
{
"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'))]"
]
}
El ejemplo de mainTemplate.json completo se puede encontrar en Referencia: Artefacto de plantilla de implementación.
Ver definición de artefacto
Para definir una interfaz de usuario que incluya acciones personalizadas y recursos personalizados en la aplicación administrada, debe crear el artefacto viewDefinition.json. Para más información sobre el artefacto de definición de vistas, consulte Artefacto de definición de vistas en Azure Managed Applications.
En este tutorial, definirá:
- Una página de información general con un botón de la barra de herramientas que representa una acción personalizada
TestAction
con entrada de texto básica. - Una página de usuarios que representa un tipo de recurso personalizado
users
. - Una acción de recursos personalizada
users/contextAction
en la página de usuarios que se realizará en un contexto de recurso personalizado de tipousers
.
En el ejemplo siguiente se muestra la configuración de vista de una página de información general:
{
"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"
}
]
}
}
En el ejemplo siguiente se incluye la configuración de la página de recursos Usuarios con la acción de recursos personalizada:
{
"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
}
]
}
}
El ejemplo de viewDefinition.json completo se puede encontrar en Referencia: Artefacto de definición de vistas.
Definición de aplicación administrada
Empaquete los siguientes artefactos de aplicación administrada en un archivo ZIP y cárguelo en el almacenamiento:
- createUiDefinition.json
- mainTemplate.json
- viewDefinition.json
Todos los archivos deben estar en el nivel raíz. El paquete con artefactos se puede almacenar en cualquier almacenamiento, por ejemplo, un blob de GitHub o un blob de una cuenta de Azure Storage. Este es un script para cargar el paquete de aplicación en la cuenta de almacenamiento:
$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
Ejecute el siguiente script de la CLI de Azure o siga los pasos en Azure Portal para implementar una definición de aplicación administrada de catálogo de servicios:
Para ejecutar este ejemplo, instale la versión más reciente de la CLI de Azure. Para empezar, ejecute az login
para crear una conexión con Azure.
Los ejemplos de la CLI de Azure están escritos para el shell bash
. Para ejecutar este ejemplo en Windows PowerShell o en el símbolo del sistema, es posible que necesite cambiar algunos elementos del 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"
Instancia de la aplicación administrada
Una vez que se implemente la definición de la aplicación administrada, ejecute el siguiente script o siga los pasos en Azure Portal para implementar la instancia de la aplicación administrada con el proveedor personalizado:
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\"}}"
Acciones y recursos personalizados
Una vez que se implemente la instancia de la aplicación del catálogo de servicios, tendrá dos nuevos grupos de recursos. El grupo de recursos applicationGroup
contiene una instancia de la aplicación administrada y el grupo de recursos managedResourceGroup
contiene los recursos de la aplicación administrada, incluido el proveedor personalizado.
Puede ir a la instancia de la aplicación administrada y realizar una acción personalizada en la página de información general, crear un recurso personalizado de usuarios en la página de usuarios y ejecutar una acción de contexto personalizada en un recurso personalizado.
- Vaya a Información general y seleccione Acción Ping:
- Vaya a Usuarios y seleccione Agregar. Proporcione entradas para crear un recurso y envíe el formulario:
- Vaya a Usuarios y seleccione un recurso usuarios y Acción de contexto personalizado:
Limpieza de recursos
En los pasos anteriores, creó recursos de Azure en un grupo de recursos. Si no cree que vaya a necesitar estos recursos en el futuro, puede eliminarlos mediante la eliminación del grupo de recursos.
En el menú de Azure Portal o la página Inicio, seleccione Grupos de recursos. En la página Grupos de recursos, seleccione myResourceGroup.
En la página myResourceGroup, asegúrese de que los recursos enumerados sean los que desea eliminar.
Seleccione Eliminar grupo de recursos, escriba myResourceGroup en el cuadro de texto para confirmar y, después, seleccione Eliminar.
¿Busca ayuda?
Si tiene preguntas o necesita una respuesta sobre Azure Managed Applications, puede publicar una pregunta en Stack Overflow con la etiqueta azure-managed-app
o en Microsoft Q&A con la etiqueta azure-managed-application
.
Pasos siguientes
Para publicar la aplicación administrada en Azure Marketplace, consulte Aplicaciones administradas de Azure en Marketplace.
Más información sbre los proveedores personalizados de Azure.