Gebeurtenissen publiceren naar Azure Event Grid onderwerpen met behulp van toegangssleutels

In dit artikel wordt beschreven hoe u een gebeurtenis in een aangepast onderwerp plaatst met behulp van een toegangssleutel. U ziet de indeling van de post- en gebeurtenisgegevens. De Service Level Agreement (SLA) is alleen van toepassing op berichten die overeenkomen met de verwachte indeling.

Notitie

Azure AD-verificatie biedt een hogere verificatieondersteuning dan wordt geboden door verificatie met een toegangssleutel of Shared Access Signature (SAS)-token. Met Azure AD-verificatie wordt de identiteit gevalideerd op basis van de Azure AD-id-provider. Als ontwikkelaar hoeft u geen sleutels in uw code te verwerken als u Azure AD-verificatie gebruikt. U profiteert ook van alle beveiligingsfuncties die zijn ingebouwd in het Microsoft Identity-platform, zoals voorwaardelijke toegang, waarmee u de beveiligingsverklaring van uw toepassing kunt verbeteren. Zie Publishing clients verifiëren met behulp van Azure Active Directory voor meer Azure Active Directory.

Eindpunt

Wanneer u de HTTP POST naar een aangepast onderwerp stuurt, gebruikt u de URI-indeling: https://<topic-endpoint>?api-version=2018-01-01 .

Een geldige URI is bijvoorbeeld: https://exampletopic.westus2-1.eventgrid.azure.net/api/events?api-version=2018-01-01 .

Gebruik het volgende om het eindpunt voor een aangepast onderwerp met Azure CLI op te halen:

az eventgrid topic show --name <topic-name> -g <topic-resource-group> --query "endpoint"

Als u het eindpunt voor een aangepast onderwerp met Azure PowerShell, gebruikt u:

(Get-AzEventGridTopic -ResourceGroupName <topic-resource-group> -Name <topic-name>).Endpoint

Neem in de aanvraag een headerwaarde met de aeg-sas-key naam op die een sleutel voor verificatie bevat.

Een geldige headerwaarde is bijvoorbeeld aeg-sas-key: VXbGWce53249Mt8wuotr0GPmyJ/nDT4hgdEj9DpBeRr38arnnm5OFg== .

Gebruik het volgende om de sleutel voor een aangepast onderwerp met Azure CLI op te halen:

az eventgrid topic key list --name <topic-name> -g <topic-resource-group> --query "key1"

Gebruik het volgende om de sleutel voor een aangepast onderwerp met PowerShell op te halen:

(Get-AzEventGridTopicKey -ResourceGroupName <topic-resource-group> -Name <topic-name>).Key1

Gebeurtenisgegevens

Voor aangepaste onderwerpen bevatten de gegevens op het hoogste niveau dezelfde velden als standaard door resources gedefinieerde gebeurtenissen. Een van deze eigenschappen is een gegevenseigenschappen die eigenschappen bevatten die uniek zijn voor het aangepaste onderwerp. Als gebeurtenisuitgever bepaalt u de eigenschappen voor dat gegevensobject. Gebruik het volgende schema:

[
  {
    "id": string,    
    "eventType": string,
    "subject": string,
    "eventTime": string-in-date-time-format,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string
  }
]

Zie gebeurtenisschema voor Azure Event Grid beschrijving van deze eigenschappen. Wanneer u gebeurtenissen naar een Event Grid-onderwerp plaatst, kan de matrix een totale grootte van maximaal 1 MB hebben. De maximaal toegestane grootte voor een gebeurtenis is ook 1 MB. Gebeurtenissen van meer dan 64 kB worden in stappen van 64 kB in rekening gebracht.

Een geldig schema voor gebeurtenisgegevens is bijvoorbeeld:

[{
  "id": "1807",
  "eventType": "recordInserted",
  "subject": "myapp/vehicles/motorcycles",
  "eventTime": "2017-08-10T21:03:07+00:00",
  "data": {
    "make": "Ducati",
    "model": "Monster"
  },
  "dataVersion": "1.0"
}]

Antwoord

Nadat u een bericht hebt geplaatst op het eindpunt van het onderwerp, ontvangt u een antwoord. Het antwoord is een standaard HTTP-antwoordcode. Enkele veelvoorkomende antwoorden zijn:

Resultaat Antwoord
Geslaagd 200 OK
Gebeurtenisgegevens hebben een onjuiste indeling 400 Ongeldige aanvraag
Ongeldige toegangssleutel 401 Onbevoegd
Onjuist eindpunt 404 Niet gevonden
Matrix of gebeurtenis overschrijdt groottelimieten 413 Nettolading is te groot

Voor fouten heeft de bericht-body de volgende indeling:

{
    "error": {
        "code": "<HTTP status code>",
        "message": "<description>",
        "details": [{
            "code": "<HTTP status code>",
            "message": "<description>"
    }]
  }
}

Volgende stappen