Azure WebJobs EventGrid-Clientbibliothek für .NET – Version 3.3.0

Diese Erweiterung bietet Funktionen zum Empfangen von Event Grid-Webhookaufrufen in Azure Functions, sodass Sie problemlos Funktionen schreiben können, die auf jedes in Event Grid veröffentlichte Ereignis reagieren.

Erste Schritte

Installieren des Pakets

Installieren Sie die Event Grid-Erweiterung mit NuGet:

dotnet add package Microsoft.Azure.WebJobs.Extensions.EventGrid

Voraussetzungen

Sie müssen über ein Azure-Abonnement und eine Azure-Ressourcengruppe mit einem benutzerdefinierten Event Grid-Thema oder einer benutzerdefinierten Domäne verfügen. Führen Sie dieses schrittweise Tutorial aus, um den Event Grid-Ressourcenanbieter zu registrieren und Event Grid-Themen mithilfe des Azure-Portal zu erstellen. Es gibt ein ähnliches Tutorial mit der Azure CLI.

Authentifizieren des Clients

Damit die Erweiterung Ereignisse veröffentlicht, benötigen Sie das endpoint des Event Grid-Themas und ein credential, das mithilfe des Zugriffsschlüssels des Themas erstellt werden kann.

Sie finden den Endpunkt für Ihr Event Grid-Thema entweder im Azure-Portal oder mithilfe des folgenden Azure CLI-Ausschnitts .

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

Der Zugriffsschlüssel kann auch über das Portal oder mithilfe des folgenden Azure CLI-Ausschnitts gefunden werden:

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

Wichtige Begriffe

Verwenden der Event Grid-Ausgabebindung

Befolgen Sie das Bindungstutorial , um mehr über die Verwendung dieser Erweiterung zum Veröffentlichen von EventGrid-Ereignissen zu erfahren.

Verwenden des Event Grid-Triggers

Befolgen Sie das Tutorial , um mehr über das Auslösen einer Azure-Funktion bei der Veröffentlichung eines Ereignisses zu erfahren.

Beispiele

Funktionen, die Event Grid-Ausgabebindung verwenden

Wenn Sie das EventGrid-Schema für Ihr Thema verwenden, können Sie EventGridEvents ausgeben.

public static class EventGridEventBindingFunction
{
    [FunctionName("EventGridEventBindingFunction")]
    public static async Task<IActionResult> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [EventGrid(TopicEndpointUri = "EventGridEndpoint", TopicKeySetting = "EventGridKey")] IAsyncCollector<EventGridEvent> eventCollector)
    {
        EventGridEvent e = new EventGridEvent(await req.ReadAsStringAsync(), "IncomingRequest", "IncomingRequest", "1.0.0");
        await eventCollector.AddAsync(e);
        return new OkResult();
    }
}

Wenn Sie das CloudEvent-Schema für Ihr Thema verwenden, können Sie CloudEvents ausgeben.

public static class CloudEventBindingFunction
{
    [FunctionName("CloudEventBindingFunction")]
    public static async Task<IActionResult> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [EventGrid(TopicEndpointUri = "EventGridEndpoint", TopicKeySetting = "EventGridKey")] IAsyncCollector<CloudEvent> eventCollector)
    {
        CloudEvent e = new CloudEvent("IncomingRequest", "IncomingRequest", await req.ReadAsStringAsync());
        await eventCollector.AddAsync(e);
        return new OkResult();
    }
}

Es ist auch möglich, Azure Identity mit der Ausgabebindung zu verwenden. Legen Sie dazu die Connection -Eigenschaft auf den Namen Ihrer App-Einstellung fest, die Ihren Event Grid Topic-Endpunkt zusammen mit einer Reihe optionaler Identitätsinformationen enthält, die hier ausführlich beschrieben werden. Beim Festlegen der Connection Eigenschaft sollten die TopicEndpointUri Eigenschaften und TopicKeySetting NICHT festgelegt werden.

public static class CloudEventOutputBindingWithIdentityFunction
{
    [FunctionName("CloudEventOutputBindingWithIdentityFunction")]
    public static async Task<IActionResult> RunAsync(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
        [EventGrid(Connection = "MyConnection")] IAsyncCollector<CloudEvent> eventCollector)
    {
        CloudEvent e = new CloudEvent("IncomingRequest", "IncomingRequest", await req.ReadAsStringAsync());
        await eventCollector.AddAsync(e);
        return new OkResult();
    }
}

Verwenden Sie für die lokale Entwicklung die local.settings.json Datei, um die Verbindungsinformationen zu speichern:

{
  "Values": {
    "myConnection__topicEndpointUri": "{topicEndpointUri}"
  }
}

Verwenden Sie bei der Bereitstellung die Anwendungseinstellungen , um diese Informationen zu speichern.

Sie können auch eine Zeichenfolge oder ein JObject ausgeben, und die Erweiterung versucht, das richtige stark typisierte Ereignis zu analysieren.

Funktionen, die Event Grid-Trigger verwenden

Sie können auch eine Funktion erstellen, die ausgeführt wird, wenn ein Ereignis an Ihr Thema übermittelt wird. Abhängig vom Schema, das Sie für Ihr Azure Function-Ereignisabonnement ausgewählt haben, können Sie entweder EventGridEvent an oder CloudEventbinden:

public static class EventGridEventTriggerFunction
{
    [FunctionName("EventGridEventTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] EventGridEvent e)
    {
        logger.LogInformation("Event received {type} {subject}", e.EventType, e.Subject);
    }
}

Und wenn Ihr Abonnement mit dem CloudEvent-Schema konfiguriert ist:

public static class CloudEventTriggerFunction
{
    [FunctionName("CloudEventTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] CloudEvent e)
    {
        logger.LogInformation("Event received {type} {subject}", e.Type, e.Subject);
    }
}

Es ist auch möglich, an ein Array von Ereignissen zu binden. Dies ist nützlich, wenn Sie die Batchverarbeitung für Ihr Event Grid-Abonnement aktiviert haben.

public static class EventGridEventBatchTriggerFunction
{
    [FunctionName("EventGridEventBatchTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] EventGridEvent[] events)
    {
        foreach (EventGridEvent eventGridEvent in events)
        {
            logger.LogInformation("Event received {type} {subject}", eventGridEvent.EventType, eventGridEvent.Subject);
        }
    }
}

Für Abonnements, die mit dem CloudEvent-Schema konfiguriert sind, gilt folgendes:

public static class CloudEventBatchTriggerFunction
{
    [FunctionName("CloudEventBatchTriggerFunction")]
    public static void Run(
        ILogger logger,
        [EventGridTrigger] CloudEvent[] events)
    {
        foreach (CloudEvent cloudEvent in events)
        {
            logger.LogInformation("Event received {type} {subject}", cloudEvent.Type, cloudEvent.Subject);
        }
    }
}

Problembehandlung

Anleitungen zur Problembehandlung finden Sie unter Überwachen Azure Functions.

Nächste Schritte

Lesen Sie die Einführung in Azure Function , oder erstellen Sie eine Azure Function-Anleitung.

Mitwirken

Weitere Informationen zum Erstellen, Testen und Mitwirken zu dieser Bibliothek finden Sie in unserem CONTRIBUTING.md .

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Weitere Informationen finden Sie unter cla.microsoft.com.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.

Aufrufe