Spravované aplikace Azure s oznámeními

Oznámení spravovaných aplikací Azure umožňují vydavatelům automatizovat akce na základě událostí životního cyklu instancí spravovaných aplikací. Vydavatelé mohou určit vlastní koncové body webhooku oznámení pro příjem oznámení událostí o nových a existujících instancích spravovaných aplikací. Vydavatelé mohou nastavit vlastní pracovní postupy v době zřizování, aktualizací a odstraňování aplikací.

Začínáme

Pokud chcete začít přijímat spravované aplikace, spusťte veřejný koncový bod HTTPS a zadejte ho při publikování definice aplikace katalogu služeb nebo Azure Marketplace nabídky.

Tady je doporučený postup, jak rychle začít:

  1. Zrušte veřejný koncový bod HTTPS, který zachytá příchozí požadavky POST a vrátí 200 OK .
  2. Přidejte koncový bod do definice aplikace katalogu služeb nebo Azure Marketplace, jak je vysvětleno dále v tomto článku.
  3. Vytvořte instanci spravované aplikace, která odkazuje na definici aplikace nebo Azure Marketplace nabídku.
  4. Ověřte, že se oznámení přijímá.
  5. Povolte autorizaci, jak je vysvětleno v části Ověřování koncového bodu tohoto článku.
  6. Postupujte podle pokynů v části Schéma oznámení tohoto článku a parsujte požadavky na oznámení a implementujte obchodní logiku na základě oznámení.

Přidání oznámení o definicích aplikací katalogu služeb

portál Azure

Pokud chcete začít, podívejte se na stránku Publikování aplikace katalogu služeb Azure Portal.

Oznámení o definicích aplikací katalogu služeb v Azure Portal

REST API

Poznámka

V současné době můžete ve vlastnostech definice aplikace zadat pouze jeden notificationEndpoints koncový bod.

    {
      "properties": {
        "isEnabled": true,
        "lockLevel": "ReadOnly",
        "displayName": "Sample Application Definition",
        "description": "Notification-enabled application definition.",
        "notificationPolicy": {
            "notificationEndpoints": [
                {
                    "uri": "https://isv.azurewebsites.net:1214?sig=unique_token"
                }
            ]
        },
        "authorizations": [
          {
            "principalId": "d6b7fbd3-4d99-43fe-8a7a-f13aef11dc18",
            "roleDefinitionId": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
          },
        ...

Přidání Azure Marketplace spravovaných aplikací

Další informace najdete v tématu Vytvoření nabídky aplikací Azure.

Azure Marketplace oznámení spravovaných aplikací v Azure Portal

Aktivační události

Následující tabulka popisuje všechny možné kombinace EventType a ProvisioningState a jejich aktivačních událostí:

Typ události ProvisioningState (Stav zřizování) Trigger pro oznámení
PUT Přijato Spravovaná skupina prostředků se vytvořila a úspěšně promítla po put aplikace (před zahájením nasazení ve spravované skupině prostředků).
PUT Úspěšný Úplné zřízení spravované aplikace bylo po put úspěšné.
PUT Neúspěšný Selhání PUT zřizování instance aplikace v jakémkoli bodě.
OPRAVA Úspěšný Po úspěšném provedení opravy PATCH v instanci spravované aplikace aktualizujte značky, zásady přístupu JIT nebo spravovanou identitu.
DELETE odstraňování Jakmile uživatel zahájí odstranění instance spravované aplikace.
DELETE Odstraněné Po úplném a úspěšném odstranění spravované aplikace.
DELETE Neúspěšný Po jakékoli chybě během procesu zrušení zřizování, která odstranění blokuje.

Schéma oznámení

Když zřídíte koncový bod webhooku pro zpracování oznámení, budete muset datovou část parsovat, abyste měli důležité vlastnosti a pak s oznámením zacházet. Oznámení katalogu služeb a Azure Marketplace spravovaných aplikací poskytují mnoho stejných vlastností. V tabulce, která následuje po ukázkách, jsou uvedené dva malé rozdíly.

Schéma oznámení aplikace katalogu služeb

Tady je ukázkové oznámení katalogu služeb po úspěšném zřízení instance spravované aplikace:

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Succeeded",
    "applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>"    
}

Pokud zřizování selže, do zadaného koncového bodu se zobrazí oznámení s podrobnostmi o chybě.

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Failed",
    "applicationDefinitionId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applicationDefinitions/<appDefName>",
    "error": {
        "code": "ErrorCode",
        "message": "error message",
        "details": [
            {
                "code": "DetailedErrorCode",
                "message": "error message"
            }
        ]
    }
}

Azure Marketplace schématu oznámení aplikace

Tady je ukázkové oznámení katalogu služeb po úspěšném zřízení instance spravované aplikace:

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Succeeded",
    "billingDetails": {
        "resourceUsageId":"<resourceUsageId>"
    },
    "plan": {
        "publisher": "publisherId",
        "product": "offer",
        "name": "skuName",
        "version": "1.0.1"
    }
}

Pokud zřizování selže, do zadaného koncového bodu se zobrazí oznámení s podrobnostmi o chybě.

POST https://{your_endpoint_URI}/resource?{optional_parameter}={optional_parameter_value} HTTP/1.1

{
    "eventType": "PUT",
    "applicationId": "/subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.Solutions/applications/<applicationName>",
    "eventTime": "2019-08-14T19:20:08.1707163Z",
    "provisioningState": "Failed",
    "billingDetails": {
        "resourceUsageId":"<resourceUsageId>"
    },
    "plan": {
        "publisher": "publisherId",
        "product": "offer",
        "name": "skuName",
        "version": "1.0.1"
    },
    "error": {
        "code": "ErrorCode",
        "message": "error message",
        "details": [
            {
                "code": "DetailedErrorCode",
                "message": "error message"
            }
        ]
    }
}

Parametr Popis
eventType Typ události, která oznámení aktivoval. (Například PUT, PATCH, DELETE.)
applicationId Plně kvalifikovaný identifikátor prostředku spravované aplikace, pro kterou se oznámení aktivoval.
eventTime Časové razítko události, která oznámení aktivoval. (Datum a čas ve formátu UTC ISO 8601.)
provisioningState (Stav zřizování) Stav zřizování instance spravované aplikace. (Příklad: Úspěch, Selhání, Odstranění, Odstraněno.)
error Zadané pouze v případě, že je vlastnost provisioningState neúspěšná. Obsahuje kód chyby, zprávu a podrobnosti o problému, který způsobil selhání.
ID definice aplikace Určeno pouze pro spravované aplikace katalogu služeb. Představuje plně kvalifikovaný identifikátor prostředku definice aplikace, pro kterou byla zřízena instance spravované aplikace.
Plán Určeno pouze pro Azure Marketplace spravované aplikace. Představuje vydavatele, nabídku, SKU a verzi instance spravované aplikace.
billingDetails Určeno pouze pro Azure Marketplace spravované aplikace. Podrobnosti fakturace instance spravované aplikace. Obsahuje resourceUsageId, který můžete použít k dotazování Azure Marketplace s podrobnostmi o využití.

Ověřování koncového bodu

Zabezpečení koncového bodu webhooku a zajištění pravosti oznámení:

  1. Nad identifikátor URI webhooku zadejte parametr dotazu, například https : //your-endpoint.com?sig=Guid. U každého oznámení zkontrolujte, že má parametr sig dotazu očekávanou hodnotu Guid .
  2. Pomocí applicationId vyděsíte get pro instanci spravované aplikace. Ověřte, že provisioningState odpovídá vlastnosti provisioningState oznámení, aby se zajistila konzistence.

Opakování oznámení

Služba Oznámení spravované aplikace očekává odpověď z 200 OK koncového bodu webhooku na oznámení. Služba oznámení to zkusí znovu, pokud koncový bod webhooku vrátí kód chyby HTTP větší nebo roven 500, pokud vrátí kód chyby 429 nebo pokud je koncový bod dočasně nedostupný. Pokud koncový bod webhooku nebude dostupný do 10 hodin, oznámení se zahodí a opakování se zastaví.