Azure-hanterade program med meddelanden

Azure-meddelanden för hanterade program gör det möjligt för utgivare att automatisera åtgärder baserat på livscykelhändelser för de hanterade programinstanserna. Utgivare kan ange en webhook-slutpunkt för anpassade meddelanden för att ta emot händelsemeddelanden om nya och befintliga hanterade programinstanser. Utgivare kan konfigurera anpassade arbetsflöden vid tidpunkten för programetablering, uppdateringar och borttagning.

Komma igång

Om du vill börja ta emot meddelanden om hanterade program skapar du en offentlig HTTPS-slutpunkt. Ange slutpunkten när du publicerar programdefinitionen för tjänstkatalogen eller Microsoft Azure Marketplace-erbjudandet.

Här är de rekommenderade stegen för att komma igång snabbt:

  1. Skapa en offentlig HTTPS-slutpunkt som loggar inkommande POST-begäranden och returnerar 200 OK.
  2. Lägg till slutpunkten i programdefinitionen för tjänstkatalogen eller Azure Marketplace-erbjudandet enligt beskrivningen senare i den här artikeln.
  3. Skapa en hanterad programinstans som refererar till programdefinitionen eller Azure Marketplace-erbjudandet.
  4. Kontrollera att meddelandena tas emot.
  5. Aktivera auktorisering enligt beskrivningen i avsnittet Slutpunktsautentisering i den här artikeln.
  6. Följ anvisningarna i avsnittet Meddelandeschema i den här artikeln för att parsa meddelandebegäranden och implementera din affärslogik baserat på meddelandet.

Lägga till definitionsaviseringar för tjänstkatalogprogram

I följande exempel visas hur du lägger till en URI för meddelandeslutpunkten med hjälp av portalen eller REST-API:et.

Azure Portal

Kom igång genom att läsa Snabbstart: Skapa och publicera en Azure Managed Application-definition.

Skärmbild av Azure-portalen som visar en definition av ett tjänstkataloghanterat program och meddelandeslutpunkten.

REST-API

Kommentar

Du kan bara ange en slutpunkt i notificationEndpoints egenskapen för definitionen för det hanterade programmet.

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

Lägga till azure marketplace-meddelanden för hanterade program

Mer information finns i Skapa ett Azure-programerbjudande.

Skärmbild av meddelanden om hanterade Azure Marketplace-program i Azure-portalen.

Händelseutlösare

I följande tabell beskrivs alla möjliga kombinationer av eventType och provisioningState deras utlösare:

EventType ProvisioningState Utlösare för meddelande
PUT Har godkänts Den hanterade resursgruppen skapades och projicerades efter att programmet PUT (innan distributionen i den hanterade resursgruppen startades).
PUT Lyckades Fullständig etablering av det hanterade programmet lyckades efter en PUT.
PUT Misslyckad Fel vid put-etablering av programinstanser när som helst.
PATCH Lyckades Efter en lyckad PATCH på den hanterade programinstansen för att uppdatera taggar, just-in-time-åtkomstprincip (JIT) eller hanterad identitet.
DELETE Tas bort Så snart användaren initierar en DELETE av en hanterad appinstans.
DELETE Borttagen Efter den fullständiga och lyckade borttagningen av det hanterade programmet.
DELETE Misslyckad Efter ett fel under avetableringsprocessen som blockerar borttagningen.

Meddelandeschema

När du skapar webhookens slutpunkt för att hantera meddelanden måste du parsa nyttolasten för att få viktiga egenskaper för att sedan agera på meddelandet. Aviseringar om tjänstkataloger och hanterade Azure Marketplace-program har många av samma egenskaper, men det finns vissa skillnader. Egenskapen applicationDefinitionId gäller endast för tjänstkatalogen. Egenskaperna billingDetails och plan gäller endast för Azure Marketplace.

Azure lägger till i meddelandeslutpunkts-URI /resource :n som du angav i definitionen för det hanterade programmet. Webhook-slutpunkten måste kunna hantera meddelanden på URI:n /resource . Om du till exempel har angett en URI för meddelandeslutpunkten som https://fabrikam.com webhookens slutpunkts-URI är https://fabrikam.com/resource.

Meddelandeschema för tjänstkatalogprogram

Följande exempel visar ett meddelande om tjänstkatalog efter att en hanterad programinstans har etablerats.

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

Om etableringen misslyckas skickas ett meddelande med felinformationen till den angivna slutpunkten.

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-programmeddelandeschema

Följande exempel visar ett meddelande om tjänstkatalog efter att en hanterad programinstans har etablerats.

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

Om etableringen misslyckas skickas ett meddelande med felinformationen till den angivna slutpunkten.

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"
      }
    ]
  }
}
Property beskrivning
eventType Den typ av händelse som utlöste meddelandet. Till exempel PUT, PATCH, DELETE.
applicationId Den fullständigt kvalificerade resursidentifieraren för det hanterade program som meddelandet utlöstes för.
eventTime Tidsstämpeln för händelsen som utlöste meddelandet. Datum och tid i UTC ISO 8601-format.
provisioningState Etableringstillståndet för den hanterade programinstansen. Till exempel Lyckades, Misslyckades, Tar bort, Borttaget.
applicationDefinitionId Anges endast för tjänstkataloghanterade program. Representerar den fullständigt kvalificerade resursidentifieraren för programdefinitionen som den hanterade programinstansen etablerades för.
billingDetails Anges endast för hanterade Azure Marketplace-program. Faktureringsinformation för den hanterade programinstansen. Innehåller den resourceUsageId som du kan använda för att fråga Azure Marketplace om användningsinformation.
plan Anges endast för hanterade Azure Marketplace-program. Representerar utgivare, erbjudande, SKU och version av den hanterade programinstansen.
error Anges endast när provisioningState misslyckas. Innehåller felkoden, meddelandet och information om problemet som orsakade felet.

Slutpunktsautentisering

Så här skyddar du webhookens slutpunkt och ser till att meddelandet är äkta:

  1. Ange en frågeparameter ovanpå webhooks-URI:n, så här: https://your-endpoint.com?sig=Guid. Kontrollera att frågeparametern sig har det förväntade värdet Guidför varje meddelande.
  2. Utfärda en GET på den hanterade programinstansen med hjälp applicationIdav . Kontrollera att matchar provisioningState provisioningState meddelandets för att säkerställa konsekvens.

Återförsök av meddelanden

Den hanterade programaviseringstjänsten förväntar sig ett 200 OK svar från webhooksslutpunkten till meddelandet. Meddelandetjänsten försöker igen om webhooksslutpunkten returnerar en HTTP-felkod som är större än eller lika med 500, returnerar en felkod på 429 eller om slutpunkten tillfälligt inte kan nås. Om webhookens slutpunkt inte blir tillgänglig inom 10 timmar tas meddelandet bort och återförsöken stoppas.