Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Azure Event Grid egy felhőalapú szolgáltatás, amely nagy léptékben biztosít megbízható eseménykézbesítést.
Az ügyfélkódtár használatával:
- Események küldése az Event Gridbe az Event Grid, a Cloud Events 1.0 sémák vagy egy egyéni séma használatával
- Event Grid-kezelőnek kézbesített események dekódolása és feldolgozása
- Közös hozzáférésű jogosultságkódok létrehozása Event Grid-témakörökhöz
Főbb hivatkozások:
Kezdetekhez
Jelenleg támogatott környezetek
- Node.js LTS-verziói
- A Safari, a Chrome, az Edge és a Firefox legújabb verziói.
További részletekért tekintse meg a támogatási szabályzat.
Előfeltételek
- Egy Azure-előfizetés.
- Meglévő Event Grid- témakör vagy tartomány. Ha létre kell hoznia az erőforrást, használhatja az
Azure Portal vagy az Azure CLI.
Ha az Azure CLI-t használja, cserélje le a <your-resource-group-name> és <your-resource-name> a saját egyedi nevére:
Event Grid-témakör létrehozása
az eventgrid topic create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
Event Grid-tartomány létrehozása
az eventgrid domain create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
A @azure/eventgrid csomag telepítése
Telepítse a JavaScripthez készült Azure Event Grid ügyfélkódtárat a npm:
npm install @azure/eventgrid
EventGridPublisherClient létrehozása és hitelesítése
Az Event Grid API eléréséhez ügyfélobjektum létrehozásához szüksége lesz az Event Grid-témakör endpoint és egy credential. Az Event Grid-ügyfél használhat egy hozzáférési kulcsból létrehozott hozzáférési kulcsot vagy közös hozzáférésű jogosultságkódot (SAS).
Az Event Grid-témakör végpontját az Azure Portal vagy az alábbi Azure CLI--kódrészlettel találja meg:
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
Hozzáférési kulcs használata
Az Azure Portal segítségével keresse meg az Event Grid-erőforrást, és kérjen le egy hozzáférési kulcsot, vagy használja az alábbi Azure CLI- kódrészletet:
az eventgrid topic key list --resource-group <your-resource-group-name> --name <your-event-grid-topic-name>
Miután rendelkezik API-kulccsal és végpontokkal, a AzureKeyCredential osztály használatával hitelesítheti az ügyfelet az alábbiak szerint:
import { EventGridPublisherClient, AzureKeyCredential } from "@azure/eventgrid";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureKeyCredential("<Access Key>"),
);
SAS-jogkivonat használata
A hozzáférési kulcshoz hasonlóan az SAS-jogkivonatok is lehetővé teszik az események Event Grid-témakörbe való küldését. A hozzáférési kulccsal ellentétben, amely a rendszer újragenerálásáig használható, az SAS-jogkivonatnak experálási ideje van, és ekkor már nem érvényes. SAS-jogkivonat hitelesítéshez való használatához használja a AzureSASCredential az alábbiak szerint:
import { EventGridPublisherClient, AzureSASCredential } from "@azure/eventgrid";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureSASCredential("<SAS Token>"),
);
SAS-jogkivonatot a generateSharedAccessSigniture függvénnyel hozhat létre.
import { generateSharedAccessSignature, AzureKeyCredential } from "@azure/eventgrid";
// Create a SAS Token which expires on 2020-01-01 at Midnight.
const token = generateSharedAccessSignature(
"<endpoint>",
new AzureKeyCredential("<API key>"),
new Date("2020-01-01T00:00:00"),
);
Az Azure Active Directory (AAD) használata
Az Azure EventGrid integrációt biztosít az Azure Active Directoryval (Azure AD) a kérések identitásalapú hitelesítéséhez. Az Azure AD-vel szerepköralapú hozzáférés-vezérléssel (RBAC) hozzáférést biztosíthat az Azure Event Grid-erőforrásokhoz felhasználók, csoportok vagy alkalmazások számára.
Ha egy TokenCredentialrendelkező témakörbe vagy tartományba szeretne eseményeket küldeni, a hitelesített identitáshoz hozzá kell rendelni az "EventGrid Data Sender" szerepkört.
A @azure/identity csomaggal zökkenőmentesen engedélyezheti a kéréseket mind a fejlesztési, mind az éles környezetben. Az Azure Active Directoryról további információt a @azure/identity READMEcímű cikkben talál.
A DefaultAzureCredential használatával például létrehozhat egy olyan ügyfelet, amely az Azure Active Directoryval hitelesít:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"CloudEvent",
new DefaultAzureCredential(),
);
Főbb fogalmak
EventGridPublisherClient
EventGridPublisherClient eseményeket küld egy Event Grid-témakörbe vagy egy Event Grid-tartományba.
Eseményséma
Az Event Grid több sémát is támogat az események kódolásához. Egyéni témakör vagy tartomány létrehozásakor meg kell adnia az események közzétételekor használni kívánt sémát. Bár a témakört egyéni séma használatára is konfigurálhatja, gyakoribb a már definiált Event Grid-séma vagy CloudEvents 1.0 séma. CloudEvents egy Cloud Native Computing Foundation-projekt, amely az eseményadatok általános leírására vonatkozó specifikációt állít elő. Az EventGridPublisherClient létrehozásakor meg kell adnia, hogy a témakör melyik sémát használja:
Ha a témakör az Event Grid-séma használatára van konfigurálva, állítsa be az "EventGrid" értéket sématípusként:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new DefaultAzureCredential(),
);
Ha a témakör a Cloud Event Schema használatára van konfigurálva, állítsa be a "CloudEvent" beállítást sématípusként:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"CloudEvent",
new DefaultAzureCredential(),
);
Ha a témakör egyéni eseményséma használatára van konfigurálva, állítsa be az "Egyéni" beállítást sématípusként:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient("<endpoint>", "Custom", new DefaultAzureCredential());
Ha az ügyfelet a témakör által várttól eltérő sémával hozza létre, a szolgáltatás hibát fog eredményezni, és az események nem lesznek közzétéve.
Az alábbi Azure CLI- kódrészlettel megtekintheti, hogy milyen bemeneti séma lett konfigurálva egy Event Grid-témakörhöz:
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "inputSchema"
EventGridDeserializer
Az Event Grid által a fogyasztóknak kézbesített események JSON-ként lesznek kézbesítve. Attól függően, hogy milyen típusú fogyasztóhoz érkeznek, az Event Grid szolgáltatás egy vagy több eseményt is kézbesíthet egyetlen hasznos adat részeként. Bár ezek az események deszerializálhatók normál JavaScript-metódusokkal, például JSON.parse, ez a kódtár egy segédtípust kínál az események deszerializálásához, más néven EventGridDeserializer.
A JSON.parse közvetlen használatával összehasonlítva EventGridDeserializer további átalakításokat végez, miközben az eseményeket deszerializálja:
-
EventGridDeserializerellenőrzi, hogy az esemény szükséges tulajdonságai jelen vannak-e, és a megfelelő típusok-e. -
EventGridDeserializeraz eseményidő tulajdonságot JavaScript-Dateobjektummá alakítja. - Felhőesemények használatakor bináris adatok használhatók az esemény adattulajdonságához (
Uint8Arrayhasználatával). Amikor az eseményt az Event Griden keresztül küldi el, az a 64-es alapkódban lesz kódolva.EventGridDeserializervissza fogja dekódolni ezeket az adatokat aUint8Arrayegy példányába. - Egy rendszeresemény- (egy másik Azure-szolgáltatás által létrehozott esemény) deszerilizálásakor a
EventGridDeserializertovábbi átalakításokat hajt végre, hogy adataobjektum megfeleljen az adatokat leíró megfelelő felületnek. A TypeScript használatakor ezek az interfészek biztosítják, hogy erős gépelés legyen, amikor hozzáfér egy rendszeresemény adatobjektumának tulajdonságaihoz.
A EventGridDeserializer-példány létrehozásakor egyéni deszerializálókat adhat meg, amelyek a data objektum további átalakítására szolgálnak.
Elosztott nyomkövetési és felhőesemények
Ez a kódtár támogatja az elosztott nyomkövetést @azure/core-tracinghasználatával. Elosztott nyomkövetés használata esetén ez a kódtár egy send művelet során létrehoz egy időtartamot. Ezenkívül amikor a Cloud Events 1.0 sémával küld eseményeket, az SDK elosztott nyomkövetési metaadatokat ad hozzá az eseményekhez az Elosztott nyomkövetés bővítményhasználatával. A traceparent és tracestate bővítménytulajdonságok értékei megfelelnek az eseményeket küldő HTTP-kérés traceparent és tracestate fejléceinek. Ha egy esemény már rendelkezik traceparent bővítménytulajdonságsal, az nem frissül.
Event Grid a Kubernetesen
Ezt a kódtárat teszteltük és ellenőriztük Kubernetesen az Azure Archasználatával.
Példák
Egyéni esemény közzététele event grid-témakörben az Event Grid-sémával
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new DefaultAzureCredential(),
);
await client.send([
{
eventType: "Azure.Sdk.SampleEvent",
subject: "Event Subject",
dataVersion: "1.0",
data: {
hello: "world",
},
},
]);
Egyéni esemény közzététele egy Event Grid-tartomány témakörében az Event Grid-séma használatával
Az események Event Grid-tartományba való közzététele hasonló az Event Grid-témakörökben való közzétételhez, azzal a kivétellel, hogy az Event Grid-séma eseményekhez való használatakor a topic tulajdonságot kell tartalmaznia. Amikor eseményeket tesz közzé a Cloud Events 1.0 sémában, a rendszer a szükséges source tulajdonságot használja a tartomány azon témakörének neveként, amellyel közzéteheti a következőt:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new DefaultAzureCredential(),
);
await client.send([
{
topic: "my-sample-topic",
eventType: "Azure.Sdk.SampleEvent",
subject: "Event Subject",
dataVersion: "1.0",
data: {
hello: "world",
},
},
]);
Esemény deszerializálása
EventGridDeserializer az Event Grid által szállított események deszerializálására használható. Ebben a példában egy felhőeseményünk van, amely deszerializálva van EventGridDeserializer használatával, és isSystemEvent használatával észleli, hogy milyen típusú események.
import { EventGridDeserializer, isSystemEvent } from "@azure/eventgrid";
const deserializer = new EventGridDeserializer();
const message = {
id: "5bc888aa-c2f4-11ea-b3de-0242ac130004",
source:
"/subscriptions/<subscriptionid>/resourceGroups/dummy-rg/providers/Microsoft.EventGrid/topics/dummy-topic",
specversion: "1.0",
type: "Microsoft.ContainerRegistry.ImagePushed",
subject: "Test Subject",
time: "2020-07-10T21:27:12.925Z",
data: {
hello: "world",
},
};
const deserializedMessage = await deserializer.deserializeCloudEvents(message);
console.log(deserializedMessage);
if (
deserializedMessage != null &&
deserializedMessage.length !== 0 &&
isSystemEvent("Microsoft.ContainerRegistry.ImagePushed", deserializedMessage[0])
) {
console.log("This is a Microsoft.ContainerRegistry.ImagePushed event");
}
Hibaelhárítás
Fakitermelés
A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a AZURE_LOG_LEVEL környezeti változót info. Másik lehetőségként a naplózás futásidőben is engedélyezhető a setLogLevel meghívásával a @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
A naplók engedélyezésére vonatkozó részletesebb útmutatásért tekintse meg a @azure/logger csomag dokumentációit.
Következő lépések
A kódtár használatára vonatkozó részletes példákért tekintse meg a mintákat könyvtárat.
Hozzájárulás
Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót, amelyből többet is megtudhat a kód összeállításáról és teszteléséről.
Kapcsolódó projektek
Azure SDK for JavaScript