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 zadat vlastní koncový bod webhooku oznámení pro příjem oznámení 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 oznámení spravovaných aplikací, vytvořte veřejný koncový bod HTTPS. Zadejte koncový bod při publikování definice aplikace katalogu služeb nebo nabídky microsoftu Azure Marketplace.

Tady jsou doporučené kroky, které vám pomůžou rychle začít:

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

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

Následující příklady ukazují, jak přidat identifikátor URI koncového bodu oznámení pomocí portálu nebo rozhraní REST API.

portál Azure

Začněte tím, že si projděte rychlý start: Vytvoření a publikování definice spravované aplikace Azure.

Snímek obrazovky s Azure Portal, který zobrazuje definici aplikace spravované v katalogu služeb a koncový bod oznámení

REST API

Poznámka

Ve vlastnosti definice spravované aplikace můžete zadat pouze jeden koncový bod notificationEndpoints .

{
  "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í oznámení Azure Marketplace spravovaných aplikací

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

Snímek obrazovky s oznámeními Azure Marketplace spravovaných aplikací v Azure Portal

Aktivační události

Následující tabulka popisuje všechny možné kombinace triggerů eventType a a provisioningState jejich:

Typ události ProvisioningState Aktivační událost 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í uvnitř spravované skupiny prostředků).
PUT Úspěšný Úplné zřízení spravované aplikace bylo úspěšné po put.
PUT Neúspěšný Selhání PUT zřizování instancí aplikace v libovolném okamžiku.
OPRAVA Úspěšný Po úspěšné opravě instance spravované aplikace, která aktualizuje 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řízení, která blokuje odstranění.

Schéma oznámení

Když vytvoříte koncový bod webhooku pro zpracování oznámení, budete muset analyzovat datovou část, abyste získali důležité vlastnosti, které pak budou na oznámení reagovat. Katalog služeb a oznámení Azure Marketplace spravovaných aplikací poskytují mnoho stejných vlastností, ale existují určité rozdíly. Vlastnost applicationDefinitionId se vztahuje pouze na katalog služeb. Vlastnosti billingDetails a plan platí pouze pro Azure Marketplace.

Azure připojí /resource identifikátor URI koncového bodu oznámení, který jste zadali v definici spravované aplikace. Koncový bod webhooku musí být schopný zpracovávat oznámení na identifikátoru /resource URI. Pokud jste například zadali identifikátor URI koncového bodu oznámení, například https://fabrikam.com identifikátor URI koncového bodu webhooku je https://fabrikam.com/resource.

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

Následující ukázka ukazuje 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 odešle 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

Následující ukázka ukazuje 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 odešle 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"
      }
    ]
  }
}
Vlastnost Popis
eventType Typ události, která aktivovala oznámení. (Například PUT, PATCH, DELETE.)
applicationId Plně kvalifikovaný identifikátor prostředku spravované aplikace, pro kterou se oznámení aktivovalo.
eventTime Časové razítko události, která aktivovala oznámení. (Datum a čas ve formátu UTC ISO 8601.)
provisioningState Stav zřizování instance spravované aplikace. Například Úspěch, Selhání, Odstranění, Odstraněno.
applicationDefinitionId Zadané pouze pro aplikace spravované v katalogu služeb. Představuje plně kvalifikovaný identifikátor prostředku definice aplikace, pro kterou byla instance spravované aplikace zřízena.
billingDetails Určeno pouze pro Azure Marketplace spravované aplikace. Podrobnosti o fakturaci instance spravované aplikace Obsahuje objekt resourceUsageId , který můžete použít k dotazování Azure Marketplace na podrobnosti o využití.
plan Určeno pouze pro Azure Marketplace spravované aplikace. Představuje vydavatele, nabídku, skladovou položku a verzi instance spravované aplikace.
error Zadané pouze v případech, kdy je provisioningState neúspěšný. Obsahuje kód chyby, zprávu a podrobnosti o problému, který chybu způsobil.

Ověřování koncového bodu

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

  1. Zadejte parametr dotazu nad identifikátor URI webhooku, například: https://your-endpoint.com?sig=Guid. Při každém oznámení zkontrolujte, že parametr sig dotazu má očekávanou hodnotu Guid.
  2. Pomocí příkazu vydejte get pro instanci spravované aplikace.applicationId Ověřte, že hodnota provisioningState odpovídá provisioningState oznámení, abyste zajistili konzistenci.

Opakování oznámení

Služba oznámení spravovaných 200 OK aplikací očekává odpověď z 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, vrátí kód chyby 429 nebo pokud je koncový bod dočasně nedostupný. Pokud koncový bod webhooku není dostupný do 10 hodin, zpráva s oznámením se zahodí a opakované pokusy se zastaví.