Delen via


Zelfstudie: Beheerde toepassing maken met aangepaste acties en resources

In deze zelfstudie maakt u uw eigen beheerde toepassing met aangepaste acties en resources. De beheerde toepassing bevat een aangepaste actie op de Overview pagina, een aangepast resourcetype dat wordt weergegeven als een afzonderlijk menu-item in Table of Content en een aangepaste contextactie op de aangepaste resourcepagina.

Deze zelfstudie bevat de volgende stappen:

  • Een definitiebestand ontwerpen van de gebruikersinterface voor het maken van een exemplaar van een beheerde toepassing
  • Een implementatiesjabloon ontwerpen met de aangepaste Azure-provider, het Azure Storage-account en een Azure-functie
  • Het artefact weergavedefinitie ontwerpen met aangepaste acties en resources
  • Een definitie voor een beheerde toepassing implementeren
  • Een exemplaar van een beheerde toepassing implementeren
  • Aangepaste acties uitvoeren en aangepaste resources maken

Vereisten

Voor het voltooien van deze zelfstudie moet u het volgende weten:

Definitie gebruikersinterface

In deze zelfstudie maakt u een beheerde toepassing en de bijbehorende beheerde resourcegroep bevat een aangepast providerexemplaren, opslagaccount en functie. Met de Azure-functie die in dit voorbeeld wordt gebruikt, wordt een API geïmplementeerd die voor acties en resources aangepaste providerbewerkingen verwerkt. Het Azure Storage-account wordt gebruikt als basisopslag voor de aangepaste providerresources.

De definitie van de gebruikersinterface voor het maken van een exemplaar van een beheerde toepassing bevat de invoerelementen funcname en storagename. De naam van het opslagaccount en de functienaam moeten globaal uniek zijn. Standaard worden functiebestanden geïmplementeerd vanuit het voorbeeldfunctiepakket, maar u kunt dit wijzigen door een invoerelement voor een pakketkoppeling toe te voegen in 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
}

En uitvoer in createUiDefinition.json:

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

Het volledige createUiDefinition.json voorbeeld vindt u in Referentie: Artefacten van gebruikersinterface-elementen.

Sjabloon met aangepaste provider

Als u een exemplaar van een beheerde toepassing wilt maken met een aangepaste provider, moet u een aangepaste providerresource definiëren met de naam openbaar en uw Microsoft.CustomProviders/resourceProviders mainTemplate.json typen. In die resource definieert u de resourcetypen en acties voor uw service. Als u exemplaren van de Azure-functie en het Azure Storage-account wilt implementeren, moet u resources van het type Microsoft.Web/sites respectievelijk Microsoft.Storage/storageAccounts definiëren.

In deze zelfstudie maakt u één users resourcetype, ping aangepaste actie en users/contextAction aangepaste actie die wordt uitgevoerd in een context van een users aangepaste resource. Geef voor elk resourcetype en elke actie een eindpunt op dat verwijst naar de functie met de naam die is opgegeven in createUiDefinition.json. Geef de routingType resourcetypen Proxy,Cache en Proxy voor acties op:

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

Het volledige mainTemplate.json voorbeeld vindt u in Referentie: Implementatiesjabloonartefact.

Definitie-artefact weergeven

Als u een gebruikersinterface wilt definiëren waar in uw beheerde toepassing aangepaste acties en aangepaste resources zijn opgenomen, moet u artefact viewDefinition.json ontwerpen. Zie Artefact weergavedefinitie in Azure Managed Applications voor meer informatie over het artefact weergavedefinitie.

In deze zelfstudie definieert u het volgende:

  • Een pagina Overzicht met een werkbalkknop waarmee de aangepaste actie TestAction wordt aangegeven met de eenvoudige tekstinvoer.
  • Een pagina Gebruikers waarmee een aangepast resourcetype users wordt aangegeven.
  • Een aangepaste resourceactie users/contextAction op de pagina Gebruikers die wordt uitgevoerd in een context van een aangepaste resource van het type users.

In het volgende voorbeeld ziet u de weergaveconfiguratie voor een pagina Overzicht:

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

Het volgende voorbeeld bevat de configuratie van de pagina Gebruikersresources met aangepaste resourceactie:

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

Het volledige viewDefinition.json voorbeeld vindt u in Referentie: Definitieartefact weergeven.

Definitie van beheerde toepassingen

Verpak de volgende beheerde-toepassingsartefacten in een zip-archief en upload het naar opslag:

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

Alle bestanden moeten op hoofdniveau zijn. Het pakket met artefacten kan in elke opslagruimte worden opgeslagen, bijvoorbeeld in GitHub-blob of Azure Storage-accountblob. Hier volgt een script voor het uploaden van het toepassingspakket naar het opslagaccount:

$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

Voer het volgende Azure CLI-script uit of volg de stappen in Azure Portal voor het implementeren van een definitie van een beheerde servicecatalogustoepassing:

Als u dit voorbeeld wilt uitvoeren, installeert u de nieuwste versie van de Azure CLI. Voer eerst az login uit om een verbinding op te zetten met Azure.

Voorbeelden voor de Azure CLI zijn geschreven voor de bash-shell. Als u dit voorbeeld wilt uitvoeren in Windows PowerShell of opdrachtprompt, moet u mogelijk elementen van het script wijzigen.

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"

Exemplaar van beheerde toepassing

Wanneer de definitie van een beheerde toepassing is geïmplementeerd, voert u het volgende script uit of volgt u de stappen in Azure Portal om uw exemplaar van uw beheerde toepassing te implementeren met een aangepaste provider:

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

Aangepaste acties en resources

Nadat het exemplaar van de servicecatalogustoepassing is geïmplementeerd, hebt u twee nieuwe resourcegroepen. De resourcegroep applicationGroup bevat een exemplaar van de beheerde toepassing en de resourcegroep managedResourceGroup bevat de resources voor de beheerde toepassing, inclusief aangepaste provider.

Toepassingsresourcegroepen

U kunt naar het exemplaar van de beheerde toepassing gaan en een aangepaste actie uitvoeren op de pagina Overview, de aangepaste resource users maken op de pagina Users en de aangepaste contextactie uitvoeren voor de aangepaste resource.

  • Ga naar Overzicht en selecteer Pingactie:

Aangepaste actie uitvoeren

  • Ga naar Gebruikers en selecteer Toevoegen. Geef invoer voor het maken van een resource op en verzend het formulier:

Schermopname van de knop Toevoegen die is geselecteerd bij Gebruikers.

  • Ga naar Gebruikers en selecteer een gebruikersresource en selecteer Aangepaste contextactie:

Schermopname van de optie Custom Context Action die is geselecteerd.

Resources opschonen

In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources in de toekomst waarschijnlijk niet nodig hebt, kunt u ze verwijderen door de resourcegroep te verwijderen.

Selecteer Resourcegroepen in het menu of op de beginpagina van de Azure-portal. Selecteer myResourceGroup op de pagina Resourcegroepen.

Controleer op de pagina myResourceGroup of de weergegeven resources de resources zijn die u wilt verwijderen.

Selecteer Resourcegroep verwijderen, typ myResourceGroup in het tekstvak om dit te bevestigen en selecteer Verwijderen.

Hulp nodig?

Als u vragen hebt of een antwoord nodig hebt over Azure Managed Applications, kunt u een vraag posten op Stack Overflow met tag azure-managed-app of Microsoft Q&A met tag azure-managed-application.

Volgende stappen

Zie Door Azure beheerde toepassingen in Marketplace voor het in Azure Marketplace publiceren van uw beheerde toepassing.

Meer informatie over aangepaste Azure-providers.