Självstudie: Skapa hanterat program med anpassade åtgärder och resurser

I den här självstudien skapar du ett eget hanterat program med anpassade åtgärder och resurser. Det hanterade programmet innehåller en anpassad åtgärd på sidan, en anpassad resurstyp visas som ett separat menyalternativ i och en anpassad Overview Table of Content kontextåtgärd på sidan för anpassad resurs.

Den här självstudien innehåller följande steg:

  • Skapa en definitionsfil för användargränssnittet för att skapa en instans av ett hanterat program
  • Skapa distributionsmall med Azure Custom Provider, Azure Storage konto och Azure Function
  • Skapa definitionsartefakt för vy med anpassade åtgärder och resurser
  • Distribuera en definition för ett hanterat program
  • Distribuera en instans av ett hanterat program
  • Utföra anpassade åtgärder och skapa anpassade resurser

Förutsättningar

För att slutföra den här självstudien behöver du veta:

Definition av användargränssnitt

I den här självstudien skapar du ett hanterat program och dess hanterade resursgrupp innehåller anpassad providerinstans, lagringskonto och funktion. Azure-funktionen som används i det här exemplet implementerar ett API som hanterar anpassade provideråtgärder för åtgärder och resurser. Azure Storage-konto används som grundläggande lagring för dina anpassade providerresurser.

Definitionen av användargränssnittet för att skapa en instans av ett hanterat program innehåller funcname storagename indataelement och . Lagringskontots namn och funktionsnamn måste vara globalt unika. Som standard distribueras funktionsfiler från exempelfunktionspaketet ,men du kan ändra det genom att lägga till ett indataelement för en paketlänk i createUiDefinition.jspå:

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

och utdata icreateUiDefinition.jspå:

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

Den fullständiga createUiDefinition.jspå exemplet finns i Referens: Artefakter för användargränssnittselement.

Mall med anpassad provider

Om du vill skapa en hanterad programinstans med en anpassad provider måste du definiera en anpassad providerresurs med namnet public och skriva Microsoft.CustomProviders/resourceProviders i dinmainTemplate.jspå. I den resursen definierar du resurstyper och åtgärder för din tjänst. För att distribuera Azure Function Azure Storage-kontoinstanser definierar du resurser Microsoft.Web/sites av Microsoft.Storage/storageAccounts typen respektive .

I den här självstudien skapar du en resurstyp, en anpassad åtgärd och en anpassad åtgärd som ska utföras i users en kontext av en anpassad ping users/contextAction users resurs. För varje resurstyp och åtgärd anger du en slutpunkt som pekar på funktionen med namnet som angescreateUiDefinition.jspå. Ange routingType som Proxy,Cache för resurstyper och för Proxy åtgärder:

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

Den fullständiga mainTemplate.jspå exemplet finns i Referens: Distributionsmallens artefakt.

Visa definitionsartefakt

Om du vill definiera ett användargränssnitt som innehåller anpassade åtgärder och anpassade resurser i det hanterade programmet måste du skapaviewDefinition.jspå artefakten. Mer information om att visa definitionsartefakt finns i Visa definitionsartefakt i Azure Managed Applications.

I den här självstudien definierar du:

  • En översiktssida med verktygsfältsknapp som representerar en anpassad åtgärd TestAction med grundläggande textinmatning.
  • Sidan Användare som representerar en anpassad users resurstyp.
  • En anpassad resursåtgärd users/contextAction på sidan Användare som utförs i en kontext med en anpassad resurs av typen users .

I följande exempel visas visningskonfigurationen för en "Översikt"-sida:

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

Exemplet nedan innehåller sidkonfigurationen av "Användare"-resurser med anpassad resursåtgärd:

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

Den fullständiga viewDefinition.jspå exemplet finns i Referens: Visa definitionsartefakt.

Definition av hanterat program

Paketera följande hanterade programartefakter för att zip-arkivera och ladda upp dem till lagringen:

  • createUiDefinition.jspå
  • mainTemplate.jspå
  • viewDefinition.jspå

Alla filer måste finnas på rotnivå. Paketet med artefakter kan lagras i alla lagringsutrymmen, till exempel GitHub-blob eller Azure Storage-kontoblob. Här är ett skript för att ladda upp programpaketet till lagringskontot:

$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

Kör Azure CLI-skriptet nedan eller följ stegen i Azure Portal för att distribuera en definition för tjänstkatalogen för hanterade program:

Om du vill köra det här exemplet installerar du den senaste versionen av Azure CLI. Börja genom att köra az login för att upprätta en anslutning med Azure.

Exempel för Azure CLI skrivs för bash gränssnittet. Om du vill köra det här exemplet i Windows PowerShell eller kommando tolken kan du behöva ändra element i skriptet.

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"

Hanterad programinstans

När definitionen för det hanterade programmet har distribuerats kör du skriptet nedan eller följer stegen i Azure Portal för att distribuera din hanterade programinstans med en anpassad 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\"}}"

Anpassade åtgärder och resurser

När programinstansen för tjänstkatalogen har distribuerats har du två nya resursgrupper. Den första resursgruppen innehåller en instans av det hanterade programmet, den andra resursgruppen innehåller resurserna applicationGroup managedResourceGroup för det hanterade programmet, inklusive den anpassade providern.

Programresursgrupper

Du kan gå till en hanterad programinstans och utföra anpassad åtgärd på sidan "Översikt", skapa en anpassad resurs för användare på sidan "Användare" och köra en anpassad kontextåtgärd en anpassad resurs.

  • Gå till sidan "Översikt" och klicka på knappen Pinga åtgärd:

Utföra anpassad åtgärd

  • Gå till sidan "Användare" och klicka på knappen "Lägg till". Ange indata för att skapa en resurs och skicka formuläret:

Skärmbild som visar knappen Lägg till vald från Användare.

  • Gå till sidan "Användare", välj en "användare"-resurs och klicka på "Anpassad kontextåtgärd":

Skärmbild som visar anpassad kontextåtgärd vald.

Rensa resurser

I de föregående stegen skapade du Azure-resurser i en resursgrupp. Om du inte tror att du behöver dessa resurser i framtiden, kan du ta bort dem genom att ta bort resursgruppen.

Från Azure Portal-menyn eller Start sidan väljer du resurs grupper. På sidan resurs grupper väljer du sedan myResourceGroup.

På sidan myResourceGroup kontrollerar du att de listade resurserna är de som du vill ta bort.

Välj ta bort resurs grupp, Skriv myResourceGroup i text rutan för att bekräfta och välj sedan ta bort.

Behöver du hjälp?

Om du har frågor om Azure Managed Applications kan du ställa frågor på Stack Overflow med taggen azure-managed-app eller Microsoft Q&A med taggen azure-managed-application. En liknande fråga kan redan ha ställts och besvarats, så kontrollera först innan du publicerar. Använd respektive taggar för snabbare svar.

Nästa steg

Information om hur du publicerar ditt hanterade program till Azure Marketplace finns i Azure-hanterade program på Marketplace.

Läs mer om anpassade Azure-providers.