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í událostí o nových a existujících instancích spravovaných aplikací. Vydavatelé můžou 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 Microsoft Azure Marketplace.

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

  1. Vytvořte veřejný koncový bod HTTPS, který protokoluje příchozí požadavky POST a vrací 200 OK.
  2. Přidejte koncový bod do definice aplikace katalogu služeb nebo nabídky Azure Marketplace, 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. Povolení autorizace, jak je vysvětleno v části Ověřování koncového bodu tohoto článku.
  6. Podle pokynů v části Schéma oznámení tohoto článku parsujte žádosti o oznámení a implementujte obchodní logiku na základě oznámení.

Přidání oznámení o definici aplikace 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

Pokud chcete začít, podívejte se na rychlý start: Vytvoření a publikování definice spravované aplikace Azure.

Snímek obrazovky webu Azure Portal, který zobrazuje definici spravované aplikace 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": "aaaaaaaa-bbbb-cccc-1111-222222222222",
        "roleDefinitionId": "8e3af657-a8ff-443c-a75c-2fe8c4bcb635"
      },
    ...

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

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

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

Aktivační události

Následující tabulka popisuje všechny možné kombinace eventType a provisioningState jejich aktivační události:

Typ události ProvisioningState Trigger pro oznámení
PUT Přijato Spravovaná skupina prostředků byla vytvořena a projektována úspěšně po nasazení aplikace PUT (před spuštěním nasazení uvnitř spravované skupiny prostředků).
PUT Úspěšný Úplné zřizování spravované aplikace bylo úspěšné po vložení.
PUT Neúspěšný Selhání zřizování instance aplikace v libovolném okamžiku
PATCH Úspěšný Po úspěšné opravě instance spravované aplikace za účelem aktualizace značek zásady přístupu za běhu (JIT) nebo spravovaná identita.
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, který bude zpracovávat oznámení, budete muset datovou část analyzovat, abyste získali důležité vlastnosti, abyste mohli s oznámením pracovat. Oznámení o službě Service Catalog a spravovaná aplikace Azure Marketplace poskytují mnoho stejných vlastností, ale existují určité rozdíly. Vlastnost applicationDefinitionId se vztahuje pouze na katalog služeb. Vlastnosti a plan vlastnosti billingDetails se vztahují pouze na Azure Marketplace.

Azure připojí /resource k identifikátoru URI koncového bodu oznámení, který jste zadali v definici spravované aplikace. Koncový bod webhooku musí být schopný zpracovat 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, odešle se do zadaného koncového bodu 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"
      }
    ]
  }
}

Schéma oznámení aplikace Azure Marketplace

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, odešle se do zadaného koncového bodu 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. Příklad: Úspěch, Selhání, Odstranění, Odstraněno.
applicationDefinitionId 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.
billingDetails Určeno pouze pro spravované aplikace Azure Marketplace. Podrobnosti o fakturaci instance spravované aplikace Obsahuje informace o resourceUsageId využití, které můžete použít k dotazování na Azure Marketplace.
plan Určeno pouze pro spravované aplikace Azure Marketplace. Představuje vydavatele, nabídku, skladovou položku a verzi instance spravované aplikace.
error Zadaná pouze v případech, kdy je stav zřizování neúspěšný. Obsahuje kód chyby, zprávu a podrobnosti o problému, který způsobil selhání.

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átorem URI webhooku, například takto: 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. Vydání get pro instanci spravované aplikace pomocí applicationId. Ověřte, že provisioningState odpovídá provisioningState oznámení, abyste zajistili konzistenci.

Opakování oznámení

Služba oznámení spravované aplikace očekává 200 OK odpověď z koncového bodu webhooku na oznámení. Služba oznámení opakuje, 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í do 10 hodin dostupný, oznámení se zahodí a opakování se zastaví.