Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Event Grid, büyük ölçekte güvenilir olay teslimi sağlayan bulut tabanlı bir hizmettir.
İstemci kitaplığını kullanarak:
- Event Grid, Cloud Events 1.0 şemaları veya özel bir şema kullanarak Event Grid'e olay gönderme
- Event Grid işleyicisine teslim edilen olayların kodunu çözme ve işleme
- Event Grid için Paylaşılan Erişim İmzaları Oluşturma konuları
Önemli bağlantılar:
Başlarken
Şu anda desteklenen ortamlar
- Node.js LTS sürümleri
- Safari, Chrome, Edge ve Firefox'un en son sürümleri.
Daha fazla bilgi için bkz. destek ilkesi.
Önkoşullar
- Azure aboneliği.
- Mevcut bir Event Grid Konusu veya Etki Alanı. Kaynağı oluşturmanız gerekiyorsa Azure CLI veya
Azure Portal'ı kullanabilirsiniz.
Azure CLI kullanıyorsanız <your-resource-group-name> ve <your-resource-name> kendi benzersiz adlarınızla değiştirin:
Event Grid Konusu Oluşturma
az eventgrid topic create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
Event Grid Etki Alanı Oluşturma
az eventgrid domain create --location <location> --resource-group <your-resource-group-name> --name <your-resource-name>
@azure/eventgrid paketini yükleme
npmile JavaScript için Azure Event Grid istemci kitaplığını yükleyin:
npm install @azure/eventgrid
EventGridPublisherClient oluşturma ve kimlik doğrulaması
Event Grid API'sine erişmek üzere bir istemci nesnesi oluşturmak için Event Grid konunuzun endpoint ve bir credentialgerekir. Event Grid istemcisi, erişim anahtarından oluşturulmuş bir Erişim Anahtarı veya Paylaşılan Erişim İmzası (SAS) kullanabilir.
Event Grid konunuzun uç noktasını
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
Erişim Anahtarı Kullanma
Event Grid kaynağınıza göz atmak ve erişim anahtarı almak için azure portal
az eventgrid topic key list --resource-group <your-resource-group-name> --name <your-event-grid-topic-name>
API anahtarınız ve uç noktanız olduktan sonra istemcinin kimliğini doğrulamak için AzureKeyCredential sınıfını aşağıdaki gibi kullanabilirsiniz:
import { EventGridPublisherClient, AzureKeyCredential } from "@azure/eventgrid";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureKeyCredential("<Access Key>"),
);
SAS Belirteci Kullanma
Bir erişim anahtarı gibi SAS belirteci de event Grid konusuna olay gönderme erişimine izin verir. Yeniden oluşturulana kadar kullanılabilecek erişim anahtarının aksine, SAS belirtecinin bir harcama süresi vardır ve bu süre artık geçerli değildir. Kimlik doğrulaması için SAS belirteci kullanmak için aşağıdaki gibi AzureSASCredential kullanın:
import { EventGridPublisherClient, AzureSASCredential } from "@azure/eventgrid";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new AzureSASCredential("<SAS Token>"),
);
generateSharedAccessSigniture işlevini kullanarak sas belirteci oluşturabilirsiniz.
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"),
);
Azure Active Directory 'yi (AAD) kullanma
Azure EventGrid, isteklerin kimlik tabanlı kimlik doğrulaması için Azure Active Directory (Azure AD) ile tümleştirme sağlar. Azure AD ile rol tabanlı erişim denetimini (RBAC) kullanarak Azure Event Grid kaynaklarınıza kullanıcılara, gruplara veya uygulamalara erişim verebilirim.
olayları TokenCredentialolan bir konuya veya etki alanına göndermek için kimliği doğrulanmış kimlikte "EventGrid Veri Göndereni" rolü atanmış olmalıdır.
@azure/identity paketiyle hem geliştirme hem de üretim ortamlarındaki istekleri sorunsuz bir şekilde yetkilendirebilirsiniz. Azure Active Directory hakkında daha fazla bilgi edinmek için readme
Örneğin, azure Active Directory kullanarak kimlik doğrulaması yapacak bir istemci oluşturmak için DefaultAzureCredential kullanabilir:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"CloudEvent",
new DefaultAzureCredential(),
);
Temel kavramlar
EventGridPublisherClient
EventGridPublisherClient bir Event Grid Konusuna veya Event Grid Etki Alanına olay gönderirken kullanılır.
Olay Şemaları
Event Grid, olayları kodlamak için birden çok şemayı destekler. Özel Konu veya Etki Alanı oluşturulduğunda, olayları yayımlarken kullanılacak şemayı belirtirsiniz. Konunuzu
Konunuz Event Grid Şemasını kullanacak şekilde yapılandırılmışsa şema türü olarak "EventGrid" değerini ayarlayın:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"EventGrid",
new DefaultAzureCredential(),
);
Konunuz Bulut Olay Şeması'nı kullanacak şekilde yapılandırılmışsa şema türü olarak "CloudEvent" değerini ayarlayın:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient(
"<endpoint>",
"CloudEvent",
new DefaultAzureCredential(),
);
Konunuz Özel Olay Şeması kullanacak şekilde yapılandırılmışsa şema türü olarak "Özel" değerini ayarlayın:
import { EventGridPublisherClient } from "@azure/eventgrid";
import { DefaultAzureCredential } from "@azure/identity";
const client = new EventGridPublisherClient("<endpoint>", "Custom", new DefaultAzureCredential());
İstemcinin, konu başlığının beklenecek şekilde yapılandırıldığından farklı bir şemayla yapılandırılması hizmetten bir hataya neden olur ve olaylarınız yayımlanmaz.
Aşağıdaki Azure CLI parçacığını kullanarak Event Grid konusu için hangi giriş şemasının yapılandırıldığını görebilirsiniz:
az eventgrid topic show --name <your-resource-name> --resource-group <your-resource-group-name> --query "inputSchema"
EventGridDeserializer
Event Grid tarafından tüketicilere teslim edilen olaylar JSON olarak teslim edilir. Teslim edilen tüketici türüne bağlı olarak, Event Grid hizmeti tek bir yükün parçası olarak bir veya daha fazla olay teslim edebilir. Bu olaylar JSON.parsegibi normal JavaScript yöntemleri kullanılarak seri durumdan çıkarılsa da, bu kitaplık olayları seri durumdan çıkarma için EventGridDeserializeradlı bir yardımcı türü sunar.
JSON.parse doğrudan kullanmayla karşılaştırıldığında, EventGridDeserializer olayları seri durumdan çıkarma sırasında bazı ek dönüştürmeler yapar:
-
EventGridDeserializer, bir olayın gerekli özelliklerinin mevcut olduğunu ve doğru türler olduğunu doğrular. -
EventGridDeserializerolay zamanı özelliğini JavaScriptDatenesnesine dönüştürür. - Bulut Olayları kullanılırken, bir olayın veri özelliği için ikili veriler kullanılabilir (
Uint8Arraykullanılarak). Olay Event Grid aracılığıyla gönderildiğinde, Temel 64'te kodlanır.EventGridDeserializerbu verilerin kodunu birUint8Arrayörneğine geri çözer. -
Sistem Olayı (başka bir Azure hizmeti tarafından oluşturulan bir olay) kaldırıldığında
EventGridDeserializer,datanesnesinin verilerini açıklayan ilgili arabirimle eşleşmesi için ek dönüştürmeler yapar. TypeScript kullanırken, bu arabirimler bir sistem olayı için veri nesnesinin özelliklerine erişirken güçlü yazma özelliğine sahip olduğunuzdan emin olun.
EventGridDeserializer örneğini oluştururken, data nesnesini daha fazla dönüştürmek için kullanılan özel seri durumdan çıkarıcılar sağlayabilirsiniz.
Dağıtılmış İzleme ve Bulut Olayları
Bu kitaplık, @azure/core-tracingkullanılarak dağıtılmış izlemeyi destekler. Dağıtılmış izleme kullanılırken, bu kitaplık bir send işlemi sırasında bir yayılma alanı oluşturur. Ayrıca, Bulut Olayları 1.0 şemasını kullanarak olay gönderirken SDK, Dağıtılmış İzleme uzantısınıkullanarak olaylara dağıtılmış izleme meta verileri ekler.
traceparent ve tracestate uzantısı özelliklerinin değerleri, olayları gönderen HTTP isteğindeki traceparent ve tracestate üst bilgilerine karşılık gelir. Bir olay zaten bir traceparent uzantısı özelliğine sahipse güncelleştirilmez.
Kubernetes'te Event Grid
Bu kitaplık, Azure Arckullanılarak
Örnekler
Event Grid Şemasını Kullanarak Bir Event Grid Konusuna Özel Olay Yayımlama
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",
},
},
]);
Event Grid Şemasını Kullanarak Event Grid Etki Alanındaki Bir Konuya Özel Olay Yayımlama
Olayları Event Grid Etki Alanına yayımlamak, Event Grid Konusuna yayımlamaya benzer, ancak olaylar için Event Grid şemasını kullanırken topic özelliğini eklemeniz gerekir. Cloud Events 1.0 şemasında olayları yayımlarken, gerekli source özelliği, etki alanında yayımlanması gereken konunun adı olarak kullanılır:
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",
},
},
]);
Bir Olayı Seri Durumdan Çıkarma
EventGridDeserializer, Event Grid tarafından teslim edilen olayların seri durumdan çıkarılması için kullanılabilir. Bu örnekte, EventGridDeserializer kullanılarak seri durumdan çıkarılmış bir bulut olayımız var ve bunların ne tür olaylar olduğunu algılamak için isSystemEvent kullanıyoruz.
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");
}
Sorun giderme
Günlük tutmak
Günlüğe kaydetmeyi etkinleştirmek, hatalarla ilgili yararlı bilgilerin ortaya çıkmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için AZURE_LOG_LEVEL ortam değişkenini infoolarak ayarlayın. Alternatif olarak, setLogLevel@azure/logger çağrılarak günlükler çalışma zamanında etkinleştirilebilir:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerinebakabilirsiniz.
Sonraki adımlar
Bu kitaplığın nasıl kullanılacağına ilişkin ayrıntılı örnekler için lütfen örnekleri dizinine göz atın.
Katkıda
Bu kitaplığa katkıda bulunmak istiyorsanız kodu oluşturma ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzu okuyun.
İlgili projeler
- Javascript için Microsoft Azure SDK'sını
Azure SDK for JavaScript