Event Grid-eseményindítók és kötések használata az Azure Functionsben

Az Azure Functions beépített integrációt biztosít az Azure Event Griddel triggerek és kötések használatával. Ez a cikk bemutatja, hogyan konfigurálhatja és értékelheti helyileg az Event Grid-eseményindítót és a kötéseket. Az Event Grid-eseményindítóról, valamint a kimeneti kötések definícióiról és példáiról az alábbi referenciacikkek egyikében talál további információt:

Esemény-előfizetések

Az Event Grid HTTP-kéréseinek fogadásához előfizetésre van szüksége az Event Grid által létrehozott eseményekhez. Az esemény-előfizetések megadják a függvényt meghívó végpont URL-címet. Amikor esemény-előfizetést hoz létre a függvény Integráció lapján az Azure Portalon, az URL-címet adja meg Önnek. Amikor programozott módon hoz létre egy esemény-előfizetést, vagy amikor az Event Gridből hozza létre az esemény-előfizetést, meg kell adnia a végpontot. A végpont URL-címe tartalmaz egy rendszerkulcsot, amelyet a Functions-rendszergazda REST API-jaitól kell beszereznie.

Webhook végpont URL-címe

Az Event Grid által aktivált függvény URL-végpontja a Functions-futtatókörnyezet verziójától függ. Az alábbi példa a verzióspecifikus URL-mintát mutatja:

https://{functionappname}.azurewebsites.net/runtime/webhooks/eventgrid?functionName={functionname}&code={systemkey}

Feljegyzés

A Blob Storage-eseményindítónak van egy verziója, amely esemény-előfizetéseket is használ. Az ilyen típusú Blob Storage-eseményindító végponti /runtime/webhooks/blobsURL-címe elérési útja, míg az Event Grid-eseményindító elérési útja az lenne /runtime/webhooks/EventGrid. A blobok feldolgozási lehetőségeinek összehasonlítása: Trigger egy blobtárolón.

Rendszerkulcs

A felépítendő URL-végpont tartalmazza a rendszerkulcs értékét. A rendszerkulcs egy engedélyezési kulcs, amelynek szerepelnie kell egy Event Grid-trigger végpontjának URL-címében. A következő szakasz a rendszerkulcs lekérését ismerteti.

A rendszerkulcsot a következő API-val (HTTP GET) szerezheti be:

http://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgrid_extension?code={masterkey}

Ez a REST API egy rendszergazdai API, ezért a függvényalkalmazás főkulcsára van szükség. Ne keverje össze a rendszerkulcsot (eseményrács-triggerfüggvény meghívásához) a fő kulccsal (a függvényalkalmazás felügyeleti feladatainak elvégzéséhez). Amikor előfizet egy Event Grid-témakörre, mindenképpen használja a rendszerkulcsot.

Íme egy példa a rendszerkulcsot biztosító válaszra:

{
  "name": "eventgridextensionconfig_extension",
  "value": "{the system key for the function}",
  "links": [
    {
      "rel": "self",
      "href": "{the URL for the function, without the system key}"
    }
  ]
}

A függvényalkalmazás főkulcsát a portál Függvényalkalmazás beállításai lapján szerezheti be.

Fontos

A főkulcs rendszergazdai hozzáférést biztosít a függvényalkalmazáshoz. Ne ossza meg ezt a kulcsot harmadik felekkel, és ne ossza meg natív ügyfélalkalmazásokban.

További információ: Engedélyezési kulcsok a HTTP-eseményindító referenciacikkében.

Esemény-előfizetés létrehozása

Esemény-előfizetést az Azure Portalon vagy az Azure CLI használatával hozhat létre.

Az Azure Portalon az Event Grid-eseményindítóval fejlesztett függvények esetében válassza az Integráció lehetőséget, majd az Event Grid-eseményindítót , majd az Event Grid-előfizetés létrehozása lehetőséget.

Screenshot of connecting to a new event subscription to trigger in the portal.

Ha ezt a hivatkozást választja, a portál megnyitja az Esemény-előfizetés létrehozása lapot, amelyen már meg van adva az aktuális triggervégpont.

Screenshot of creating an event subscription with the function endpoint already defined.

További információ az előfizetések Azure Portallal történő létrehozásáról: Egyéni esemény létrehozása – Azure Portal az Event Grid dokumentációjában.

Az előfizetés létrehozásával kapcsolatos további információkért tekintse meg a Blob Storage rövid útmutatóját vagy az Event Grid egyéb rövid útmutatóit.

Helyi tesztelés megtekintő webalkalmazással

Az Event Grid-eseményindító helyi teszteléséhez le kell kérnie az Event Grid HTTP-kéréseit a felhőben található forrásból a helyi gépre. Ennek egyik módja, ha online rögzíti a kéréseket, és manuálisan újraküldi őket a helyi gépen:

  1. Eseményüzeneteket rögzítő megjelenítő webalkalmazás létrehozása.
  2. Hozzon létre egy Event Grid-előfizetést , amely eseményeket küld a megtekintő alkalmazásnak.
  3. Hozzon létre egy kérést , és másolja a kérelem törzsét a megtekintő alkalmazásból.
  4. Manuálisan tegye közzé a kérést az Event Grid-eseményindító függvény localhost URL-címére.

Ha végzett a teszteléssel, ugyanazt az előfizetést használhatja éles környezetben a végpont frissítésével. Használja az az eventgrid event-subscription update Azure CLI parancsot.

Az ngrok segédprogrammal távoli kéréseket is továbbíthat a helyileg futó függvényeknek. További információt ebben az oktatóanyagban talál.

Megtekintő webalkalmazás létrehozása

Az eseményüzenetek rögzítésének egyszerűsítése érdekében üzembe helyezhet egy előre elkészített webalkalmazást , amely megjeleníti az eseményüzeneteket. Az üzembe helyezett megoldás egy App Service-csomagot, egy App Service-webalkalmazást és egy, a GitHubról származó forráskódot tartalmaz.

A megoldásnak az előfizetésébe való telepítéséhez válassza az Üzembe helyezés az Azure-ban lehetőséget. Az Azure Portalon adjon meg értékeket a paraméterekhez.

Button to deploy the Resource Manager template to Azure.

Az üzembe helyezés befejezése eltarthat néhány percig. A sikeres üzembe helyezést követően tekintse meg a webalkalmazást, hogy meggyőződjön annak működéséről. Egy webböngészőben navigáljon a következő helyre: https://<your-site-name>.azurewebsites.net.

A hely látható, de még nem lett közzétéve esemény.

View new site

Event Grid-előfizetés létrehozása

Hozzon létre egy tesztelni kívánt típusú Event Grid-előfizetést, és adja meg a webalkalmazás URL-címét az eseményértesítés végpontjaként. A webalkalmazás végpontjának az /api/updates/ utótagot kell tartalmaznia. A teljes URL-cím tehát https://<your-site-name>.azurewebsites.net/api/updates

Az előfizetések Azure Portallal történő létrehozásáról az Egyéni esemény létrehozása – Azure Portal című témakörben olvashat az Event Grid dokumentációjában.

Kérés létrehozása

Esemény aktiválása, amely HTTP-forgalmat generál a webalkalmazás végpontja felé. Ha például blobtároló-előfizetést hozott létre, töltsön fel vagy töröljön egy blobot. Amikor megjelenik egy kérés a webalkalmazásban, másolja ki a kérelem törzsét.

Az előfizetés érvényesítési kérése először érkezik meg; figyelmen kívül hagyja az érvényesítési kéréseket, és másolja ki az eseménykérelmet.

Copy request body from web app

A kérés manuális közzététele

Futtassa helyileg az Event Grid függvényt. A Content-Type fejléceket és aeg-event-type a fejléceket manuálisan kell beállítani, míg az összes többi érték alapértelmezettként hagyható.

HTTP POST-kérés létrehozásához használjon olyan eszközt, mint a Postman vagy a curl :

  • Content-Type: application/json Fejléc beállítása.

  • aeg-event-type: Notification Fejléc beállítása.

  • Illessze be a RequestBin-adatokat a kérelem törzsébe.

  • Tegye közzé az Event Grid-eseményindító függvény URL-címét.

    http://localhost:7071/runtime/webhooks/eventgrid?functionName={FUNCTION_NAME}
    

A functionName paraméternek az attribútumban FunctionName megadott névnek kell lennie.

Az alábbi képernyőképeken a Postman fejlécei és kéréstörzse látható:

Headers in Postman

Request body in Postman

Az Event Grid eseményindító függvény az alábbi példához hasonló naplókat hajt végre és jelenít meg:

Sample Event Grid trigger function logs

Következő lépések

Az Event Grid és a Functions szolgáltatással kapcsolatos további információkért tekintse meg az alábbi cikkeket: