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 na stránce obsahovat vlastní akci Overview , vlastní typ prostředku zobrazený jako samostatná položka nabídky v aplikaci Table of Content a vlastní kontextovou akci na stránce vlastní prostředek.

Tento kurz obsahuje následující kroky:

  • Vytvořit soubor definice uživatelského rozhraní pro vytvoření instance spravované aplikace
  • Vytvořit šablonu nasazení pomocí vlastního zprostředkovatele Azure, účtu Azure Storage a funkce Azure Functions
  • Vytvořit artefakt definice zobrazení s vlastními akcemi a prostředky
  • Nasadit definici 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 znát tyto informace:

Definice uživatelského rozhraní

V tomto kurzu vytvoříte spravovanou aplikaci a její spravovanou skupinu prostředků, která 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 Azure Storage se používá jako základní úložiště pro prostředky vlastního zprostředkovatele.

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

{
  "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 createUiDefinition.js:

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

Kompletní createUiDefinition.jspro ukázku lze nalézt v referenci: artefakty prvků uživatelského rozhraní.

Šablona s vlastním zprostředkovatelem

Chcete-li vytvořit instanci spravované aplikace s vlastním poskytovatelem, je třeba definovat prostředek vlastního zprostředkovatele s názvem Public a do svého mainTemplate.js zadat Microsoft. CustomProviders/resourceProviders . V tomto prostředku definujete typy prostředků a akce pro vaši službu. Pro nasazení funkce Azure functions a Azure Storage instance účtů definují 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 provede v kontextu users vlastního prostředku. Pro každý typ prostředku a akci zadejte koncový bod, který odkazuje na funkci s názvem, který je zadaný v createUiDefinition.js. Zadejte routingType jako Proxy,Cache pro typy prostředků a Proxy pro 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í mainTemplate.jspro ukázku najdete v části Reference: artefakt šablony nasazení.

Zobrazení definičních artefaktů

Chcete-li definovat uživatelské rozhraní, které zahrnuje vlastní akce a vlastní prostředky ve spravované aplikaci, je třeba vytvořit viewDefinition.js artefaktem. Další informace o artefaktu definice zobrazení naleznete v tématu artefakt definice zobrazení v Azure Managed Applications.

V tomto kurzu nadefinujete:

  • Stránka s přehledem s tlačítkem panelu nástrojů, která představuje vlastní akci TestAction se základním zadáním textu.
  • Stránka uživatele , která představuje vlastní typ prostředku users .
  • Vlastní akce prostředku users/contextAction na stránce Uživatelé , která bude provedena v kontextu vlastního prostředku typu users .

Následující příklad ukazuje zobrazení konfigurace pro stránku 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íže uvedený příklad obsahuje "uživatelé" – konfigurace stránky prostředky 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í viewDefinition.jspro ukázku najdete v části Reference: artefakt definice zobrazení.

Definice spravované aplikace

Zabalit následující artefakty spravovaných aplikací do archivu zip a nahrát je do úložiště:

  • createUiDefinition.jsna
  • mainTemplate.jsna
  • viewDefinition.jsna

Všechny soubory musí být na kořenové úrovni. Balíček s artefakty může být uložený v jakémkoli úložišti, například v objektu BLOB GitHubu nebo v objektu BLOB účtu Azure Storage. 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íže uvedený skript Azure CLI nebo podle pokynů v části Azure Portal nasaďte definici spravované aplikace katalogu služeb:

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

Ukázky pro rozhraní příkazového řádku Azure jsou zapsané pro bash prostředí. Pokud chcete tuto ukázku spustit ve Windows PowerShellu nebo na příkazovém řádku, možná budete 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 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"

Instance spravované aplikace

Pokud je nasazená definice spravované aplikace, spusťte skript níže nebo postupujte podle pokynů v části Azure Portal a nasaďte instanci spravované aplikace pomocí vlastního zprostředkovatele:

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 prostředků applicationGroup obsahuje instanci spravované aplikace, druhá skupina prostředků obsahuje managedResourceGroup prostředky pro spravovanou aplikaci, včetně vlastního poskytovatele.

Skupiny prostředků aplikace

Můžete přejít na instanci spravované aplikace a provést vlastní akci na stránce Přehled, vytvořit vlastní prostředek uživatele 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 příkazového testu:

Provést vlastní akci

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

Snímek obrazovky se zobrazí tlačítko Přidat vybrané uživatelům.

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

Snímek obrazovky s vybranou vlastní kontextovou akcí

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 Azure Portal nebo na domovské stránce vyberte skupiny prostředků. Pak 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 a pak vyberte Odstranit.

Hledáte nápovědu

Pokud máte dotazy ohledně Azure Managed Applications, můžete se zkusit zeptat na Stack Overflow se značkou azure-managed-app nebo Microsoft Q&A se značkou azure-managed-application. Podobná otázka už možná byla požádána a zodpovězena, proto před publikováním nejprve zkontrolujte. Pokud chcete rychleji reagovat, 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.

Další informace o vlastních poskytovatelích Azure.