Biblioteka klienta usługi Azure Event Grid dla języka JavaScript — wersja 5.5.1
usługa Azure Event Grid to oparta na chmurze usługa, która zapewnia niezawodne dostarczanie zdarzeń na dużą skalę.
Użyj biblioteki klienta, aby:
- Wysyłanie zdarzeń do usługi Event Grid przy użyciu schematów usługi Event Grid, zdarzeń chmury 1.0 lub schematu niestandardowego
- Dekodowanie i przetwarzanie zdarzeń, które zostały dostarczone do programu obsługi usługi Event Grid
- Generowanie sygnatur dostępu współdzielonego dla tematów usługi Event Grid
Kluczowe linki:
- kod źródłowy
- pakietu
(NPM) - Dokumentacja referencyjna interfejs u API
- dokumentacja produktu
- przykładów
Wprowadzenie
Obecnie obsługiwane środowiska
- wersje Node.js LTS
- Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox.
Aby uzyskać więcej informacji, zobacz nasze zasad pomocy technicznej.
Warunki wstępne
- Subskrypcja platformy Azure .
- Istniejący event grid temat lub domena. Jeśli musisz utworzyć zasób, możesz użyć witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
Jeśli używasz interfejsu wiersza polecenia platformy Azure, zastąp <your-resource-group-name>
i <your-resource-name>
własnymi unikatowymi nazwami:
Tworzenie tematu usługi Event Grid
az eventgrid topic create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
Tworzenie domeny usługi Event Grid
az eventgrid domain create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
Instalowanie pakietu @azure/eventgrid
Zainstaluj bibliotekę klienta usługi Azure Event Grid dla języka JavaScript przy użyciu npm
:
npm install @azure/eventgrid
Tworzenie i uwierzytelnianie EventGridPublisherClient
Aby utworzyć obiekt klienta w celu uzyskania dostępu do interfejsu API usługi Event Grid, będzie potrzebny endpoint
tematu usługi Event Grid i credential
. Klient usługi Event Grid może używać klucza dostępu lub sygnatury dostępu współdzielonego utworzonego na podstawie klucza dostępu.
Punkt końcowy tematu usługi Event Grid można znaleźć w witrynie
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
Używanie klucza dostępu
Użyj
az eventgrid topic key list --resource-group <your-resource-group-name> --name <your-event-grid-topic-name>
Po utworzeniu klucza interfejsu API i punktu końcowego możesz użyć klasy AzureKeyCredential
do uwierzytelniania klienta w następujący sposób:
const { EventGridPublisherClient, AzureKeyCredential } = require("@azure/eventgrid");
const client = new EventGridPublisherClient(
"<endpoint>",
"<endpoint schema>",
new AzureKeyCredential("<Access Key>")
);
Korzystanie z tokenu SAS
Podobnie jak klucz dostępu, token SAS umożliwia dostęp do wysyłania zdarzeń do tematu usługi Event Grid. W przeciwieństwie do klucza dostępu, który może być używany do momentu ponownego wygenerowania, token SAS ma czas eksploracji, w którym momencie nie jest już prawidłowy. Aby użyć tokenu SAS do uwierzytelniania, użyj AzureSASCredential
w następujący sposób:
const { EventGridPublisherClient, AzureSASCredential } = require("@azure/eventgrid");
const client = new EventGridPublisherClient(
"<endpoint>",
"<endpoint schema>",
new AzureSASCredential("<SAS Token>")
);
Token SAS można wygenerować przy użyciu funkcji generateSharedAccessSigniture
.
const { generateSharedAccessSignature, AzureKeyCredential } = require("@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")
);
Korzystanie z usługi Azure Active Directory (AAD)
Usługa Azure EventGrid zapewnia integrację z usługą Azure Active Directory (Azure AD) na potrzeby uwierzytelniania opartego na tożsamościach żądań. Za pomocą usługi Azure AD możesz użyć kontroli dostępu opartej na rolach (RBAC), aby udzielić dostępu do zasobów usługi Azure Event Grid użytkownikom, grupom lub aplikacjom.
Aby wysyłać zdarzenia do tematu lub domeny z TokenCredential
, uwierzytelniona tożsamość powinna mieć przypisaną rolę "Nadawca danych usługi EventGrid".
Pakiet @azure/identity
umożliwia bezproblemowe autoryzowanie żądań zarówno w środowiskach deweloperskich, jak i produkcyjnych. Aby dowiedzieć się więcej o usłudze Azure Active Directory, zobacz @azure/identity
README.
Na przykład można użyć DefaultAzureCredential
do utworzenia klienta, który będzie uwierzytelniany przy użyciu usługi Azure Active Directory:
const { EventGridPublisherClient } = require("@azure/eventgrid");
const { DefaultAzureCredential } = require("@azure/identity");
const client = new EventGridPublisherClient(
"<endpoint>",
"<endpoint schema>",
new DefaultAzureCredential()
);
Kluczowe pojęcia
EventGridPublisherClient
EventGridPublisherClient
służy wysyłanie zdarzeń do tematu usługi Event Grid lub domeny usługi Event Grid.
Schematy zdarzeń
Usługa Event Grid obsługuje wiele schematów dla zdarzeń kodowania. Po utworzeniu tematu niestandardowego lub domeny należy określić schemat, który będzie używany podczas publikowania zdarzeń. Chociaż temat można skonfigurować tak, aby używał schematu niestandardowego jest częściej używany już zdefiniowany schemat usługi Event Grid lub schematu CloudEvents 1.0. CloudEvents to projekt Cloud Native Computing Foundation, który tworzy specyfikację opisującą dane zdarzeń w typowy sposób. Podczas konstruowania klasy EventGridPublisherClient należy określić, który schemat tematu jest skonfigurowany do użycia:
Jeśli temat jest skonfigurowany do używania schematu usługi Event Grid, ustaw wartość "EventGrid" jako typ schematu:
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureKeyCredential("<API Key>")
);
Jeśli temat jest skonfigurowany do używania schematu zdarzeń w chmurze, ustaw wartość "CloudEvent" jako typ schematu:
const client = new EventGridPublisherClient(
"<endpoint>",
"CloudEvent",
new AzureKeyCredential("<API Key>")
);
Jeśli temat jest skonfigurowany do używania niestandardowego schematu zdarzeń, ustaw wartość "Niestandardowy" jako typ schematu:
const client = new EventGridPublisherClient(
"<endpoint>",
"Custom",
new AzureKeyCredential("<API Key>")
);
Konstruowanie klienta przy użyciu innego schematu niż oczekiwana konfiguracja tematu spowoduje wystąpienie błędu z usługi, a zdarzenia nie zostaną opublikowane.
Zobaczysz, jaki schemat wejściowy został skonfigurowany dla tematu usługi Event Grid, korzystając z poniższego fragmentu kodu interfejsu wiersza polecenia platformy Azure
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "inputSchema"
EventGridDeserializer
Zdarzenia dostarczane użytkownikom przez usługę Event Grid są dostarczane jako dane JSON. W zależności od typu dostarczanego odbiorcy usługa Event Grid może dostarczać co najmniej jedno zdarzenie w ramach jednego ładunku. Chociaż te zdarzenia mogą być deserializowane przy użyciu normalnych metod języka JavaScript, takich jak JSON.parse
, ta biblioteka oferuje typ pomocnika do deserializacji zdarzeń o nazwie EventGridDeserializer
.
W porównaniu z użyciem JSON.parse
bezpośrednio, EventGridDeserializer
wykonuje kilka dodatkowych konwersji podczas deserializacji zdarzeń:
-
EventGridDeserializer
sprawdza, czy wymagane właściwości zdarzenia są obecne i są właściwymi typami. -
EventGridDeserializer
konwertuje właściwość czasu zdarzenia na obiektDate
języka JavaScript. - W przypadku korzystania ze zdarzeń w chmurze dane binarne mogą być używane dla właściwości danych zdarzenia (przy użyciu
Uint8Array
). Gdy zdarzenie jest wysyłane za pośrednictwem usługi Event Grid, jest ono kodowane w bazie 64.EventGridDeserializer
zdekoduje te dane z powrotem do wystąpieniaUint8Array
. - Podczas deserializacji zdarzeń systemu
(zdarzenia wygenerowanego przez inną usługę platformy Azure) wykona dodatkowe konwersje, tak aby obiekt był zgodny z odpowiednim interfejsem, który opisuje jego dane. W przypadku korzystania z języka TypeScript te interfejsy zapewniają silne wpisywanie podczas uzyskiwania dostępu do właściwości obiektu danych dla zdarzenia systemowego.
Podczas tworzenia wystąpienia EventGridDeserializer
można podać niestandardowe deserializatory, które są używane do dalszej konwersji obiektu data
.
Śledzenie rozproszone i zdarzenia w chmurze
Ta biblioteka obsługuje śledzenie rozproszone przy użyciu @azure/core-tracing
. W przypadku korzystania z śledzenia rozproszonego ta biblioteka utworzy zakres podczas operacji send
. Ponadto podczas wysyłania zdarzeń przy użyciu schematu Cloud Events 1.0 zestaw SDK doda metadane śledzenia rozproszonego do zdarzeń przy użyciu rozszerzenia rozproszonego śledzenia . Wartości właściwości rozszerzenia traceparent
i tracestate
odpowiadają nagłówkom traceparent
i tracestate
z żądania HTTP wysyłającego zdarzenia. Jeśli zdarzenie ma już właściwość rozszerzenia traceparent
, nie jest aktualizowana.
Usługa Event Grid na platformie Kubernetes
Ta biblioteka została przetestowana i zweryfikowana na platformie Kubernetes przy użyciu usługi Azure Arc.
Przykłady
Publikowanie zdarzenia niestandardowego w temacie usługi Event Grid przy użyciu schematu usługi Event Grid
const { EventGridPublisherClient, AzureKeyCredential } = require("@azure/eventgrid");
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureKeyCredential("<API key>")
);
await client.send([
{
eventType: "Azure.Sdk.SampleEvent",
subject: "Event Subject",
dataVersion: "1.0",
data: {
hello: "world",
},
},
]);
Publikowanie zdarzenia niestandardowego w temacie w domenie usługi Event Grid przy użyciu schematu usługi Event Grid
Publikowanie zdarzeń w domenie usługi Event Grid jest podobne do publikowania w temacie usługi Event Grid, z tą różnicą, że w przypadku używania schematu usługi Event Grid dla zdarzeń należy uwzględnić właściwość topic
. Podczas publikowania zdarzeń w schemacie Cloud Events 1.0 wymagana właściwość source
jest używana jako nazwa tematu w domenie do opublikowania w:
const { EventGridPublisherClient, AzureKeyCredential } = require("@azure/eventgrid");
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureKeyCredential("<API key>")
);
await client.send([
{
topic: "my-sample-topic",
eventType: "Azure.Sdk.SampleEvent",
subject: "Event Subject",
dataVersion: "1.0",
data: {
hello: "world",
},
},
]);
Deserializowanie zdarzenia
EventGridDeserializer
mogą służyć do deserializacji zdarzeń dostarczanych przez usługę Event Grid. W tym przykładzie mamy zdarzenie w chmurze, które zostało zdeserializowane przy użyciu EventGridDeserializer
i użyjemy isSystemEvent
w celu wykrycia typu zdarzeń, które są.
const { EventGridDeserializer, isSystemEvent } = require("@azure/eventgrid");
async function main() {
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");
}
}
main();
Rozwiązywanie problemów
Wyrąb
Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną środowiskową AZURE_LOG_LEVEL
na info
. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel
w @azure/logger
:
const { setLogLevel } = require("@azure/logger");
setLogLevel("info");
Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentami pakietu @azure/rejestratora.
Następne kroki
Zapoznaj się z przykładami katalogu, aby zapoznać się ze szczegółowymi przykładami dotyczącymi korzystania z tej biblioteki.
Przyczyniając się
Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik dotyczący współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.
Powiązane projekty
- zestaw SDK platformy Microsoft Azure dla języka Javascript
Azure SDK for JavaScript