Azure Işlevleri için Azure Event Hubs çıkış bağlaması

Bu makalede Azure Işlevleri için azure Event Hubs bağlamalarıyla nasıl çalışılacağı açıklanmaktadır. Azure Işlevleri Event Hubs için tetikleyiciyi ve çıkış bağlamalarını destekler.

Kurulum ve yapılandırma ayrıntıları hakkında bilgi için bkz. genel bakış.

Olayları bir olay akışına yazmak için Event Hubs çıkış bağlamasını kullanın. Olay yazmak için ilgili olay hub'ında gönderme iznine sahip olmanız gerekir.

Çıkış bağlamayı uygulamayı denemeden önce gerekli paket başvurularının yerinde olduğundan emin olun.

Aşağıdaki örnek, bir olay hub 'ına bir ileti yazan, çıkış olarak yöntem dönüş değeri kullanan bir C# işlevini göstermektedir:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    return $"{DateTime.Now}";
}

Aşağıdaki örnek, IAsyncCollector bir dizi ileti göndermek için arabirimi nasıl kullanacağınızı gösterir. Bu senaryo, bir olay hub 'ından gelen iletileri işlerken ve sonucu başka bir olay hub 'ına gönderdiğinizde yaygındır.

[FunctionName("EH2EH")]
public static async Task Run(
    [EventHubTrigger("source", Connection = "EventHubConnectionAppSetting")] EventData[] events,
    [EventHub("dest", Connection = "EventHubConnectionAppSetting")]IAsyncCollector<string> outputEvents,
    ILogger log)
{
    foreach (EventData eventData in events)
    {
        // do some processing:
        var myProcessedEvent = DoSomething(eventData);

        // then send the message
        await outputEvents.AddAsync(JsonConvert.SerializeObject(myProcessedEvent));
    }
}

Öznitelikler ve ek açıklamalar

C# sınıf kitaplıklarıIçin Eventhubattribute özniteliğini kullanın.

Özniteliğin Oluşturucusu, Olay Hub 'ının adını ve bağlantı dizesini içeren bir uygulama ayarının adını alır. Bu ayarlar hakkında daha fazla bilgi için bkz. çıkış-yapılandırma. Aşağıda bir EventHub öznitelik örneği verilmiştir:

[FunctionName("EventHubOutput")]
[return: EventHub("outputEventHubMessage", Connection = "EventHubConnectionAppSetting")]
public static string Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
{
    ...
}

Tam bir örnek için bkz. output-C# örneği.

Yapılandırma

Aşağıdaki tabloda, function. JSON dosyasında ve özniteliğinde ayarladığınız bağlama yapılandırma özellikleri açıklanmaktadır EventHub .

function. JSON özelliği Öznitelik özelliği Description
türüyle yok "EventHub" olarak ayarlanmalıdır.
Görünüm yok "Out" olarak ayarlanmalıdır. Bu parametre, Azure portal bağlamayı oluşturduğunuzda otomatik olarak ayarlanır.
ada yok Olayı temsil eden işlev kodunda kullanılan değişken adı.
Yolun EventHubName Yalnızca 1. x işlevleri. Olay Hub 'ının adı. Aynı zamanda, Olay Hub 'ı adı bağlantı dizesinde de mevcutsa, bu değer çalışma zamanında bu özelliği geçersiz kılar.
eventHubName EventHubName İşlevler 2. x ve üzeri. Olay Hub 'ının adı. Aynı zamanda, Olay Hub 'ı adı bağlantı dizesinde de mevcutsa, bu değer çalışma zamanında bu özelliği geçersiz kılar.
bağlanma Bağlantı Event Hubs nasıl bağlanılacağını belirten bir uygulama ayarı veya ayar koleksiyonu adı. Bkz. Bağlantılar.

Yerel olarak geliştirilirken, uygulama ayarları local.settings.jsdosyasınagider.

Bağlantılar

connectionÖzelliği, uygulamanın Event Hubs nasıl bağlanması gerektiğini belirten ortam yapılandırmasına bir başvurudur. Şunları belirtebilir:

Yapılandırılmış değer tek bir ayar için tam eşleşmedir ve diğer ayarlarla ilgili önek eşleşiyorsa, tam eşleşme kullanılır.

Bağlantı dizesi

Olay Hub 'ının kendisi değil, ad alanıIçin bağlantı bilgileri düğmesine tıklayarak bu bağlantı dizesini edinin. Bağlantı dizesi, Olay Hub 'ının değil, bir Event Hubs ad alanı için olmalıdır.

Tetikleyiciler için kullanıldığında bağlantı dizesinin, işlevi etkinleştirmek için en azından "okuma" izinlerine sahip olması gerekir. Çıkış bağlamaları için kullanıldığında, bağlantı dizesinin olay akışına ileti göndermek için "Gönder" izinleri olmalıdır.

Bu bağlantı dizesi, bağlama yapılandırmasının özelliği tarafından belirtilen değerle eşleşen bir ada sahip bir uygulama ayarında depolanmalıdır connection .

Kimlik tabanlı bağlantılar

uzantının 5. x veya üzeri sürümünükullanıyorsanız, gizli anahtar içeren bir bağlantı dizesi kullanmak yerine uygulamanın bir Azure Active Directory kimliğikullanmasını sağlayabilirsiniz. Bunu yapmak için, connection tetikleyici ve bağlama yapılandırmasındaki özelliğe eşleyen ortak bir ön ek altında ayarlar tanımlayabilirsiniz.

Bu modda, uzantı aşağıdaki özellikleri gerektirir:

Özellik Ortam değişkeni şablonu Description Örnek değer
Tam nitelikli ad alanı <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace Tam nitelikli Event Hubs ad alanı. <event_hubs_namespace>. servicebus.windows.net

Bağlantıyı özelleştirmek için ek özellikler ayarlanabilir. Bkz. kimlik tabanlı bağlantılar Için ortak özellikler.

Azure Işlevleri hizmetinde barındırıldığında, kimlik tabanlı bağlantılar yönetilen bir kimlikkullanır. Sistem tarafından atanan kimlik, ve özellikleriyle kullanıcı tarafından atanan bir kimlik belirtibilse de varsayılan olarak kullanılır credential clientID . Yerel geliştirme gibi diğer bağlamlarda çalıştırıldığında geliştirici kimliğiniz bunun yerine özelleştirilebilir. Bkz. kimlik tabanlı bağlantılarla yerel geliştirme.

Kimliğe izin ver

Kullanılan kimliğin istenen eylemleri gerçekleştirmek için izinleri olması gerekir. Azure RBAC 'de, bu izinleri sağlayan yerleşik veya özel roller kullanarak bir rol atamanızgerekir.

Önemli

Bazı izinler, tüm bağlamlarda gerekli olmayan hedef hizmet tarafından açığa çıkabilir. Mümkün olduğunda, en az ayrıcalık ilkesine bağlı olarak yalnızca kimlik gerekli ayrıcalıkları veriliyor. Örneğin, uygulamanın yalnızca bir veri kaynağından okuyabilmesi gerekiyorsa, yalnızca okuma iznine sahip olan bir rol kullanın. Bu hizmetin yazılmasına izin veren bir rol atamak uygun değildir, çünkü bu, okuma işlemi için aşırı izindir. Benzer şekilde, rol atamasının yalnızca okunması gereken kaynaklar üzerinde kapsam olmasını sağlamak isteyeceksiniz.

Çalışma zamanında Olay Hub 'ınıza erişim sağlayan bir rol ataması oluşturmanız gerekecektir. Rol atamasının kapsamı, Olay Hub 'ının değil, bir Event Hubs ad alanı için olmalıdır. Sahip gibi yönetim rolleri yeterli değildir. Aşağıdaki tabloda, Event Hubs uzantısı normal işleminde kullanılırken önerilen yerleşik roller gösterilmektedir. Uygulamanız, yazdığınız koda göre ek izinler gerektirebilir.

Bağlama türü Örnek yerleşik roller
Tetikleyici Azure [Event Hubs veri alıcısı], Azure Event Hubs veri sahibi
Çıkış bağlama Azure Event Hubs veri gönderici

Kullanım

Varsayılan

Olay Hub 'ının çıkış bağlaması için aşağıdaki parametre türlerini kullanabilirsiniz:

Gibi bir yöntem parametresi kullanarak ileti gönderin out string paramName . C# komut dosyasında, paramName name function. JSON özelliğinde belirtilen değerdir. Birden çok ileti yazmak için, ICollector<string> veya yerinde kullanabilirsiniz IAsyncCollector<string> out string .

Ek türler

Olay Hub uzantısının 5.0.0 veya daha yüksek sürümünü kullanan uygulamalar, EventData Microsoft. Azure. eventhubs ad alanıyerine Azure. Messaging. eventhubs türünü kullanır. Bu sürüm, Body aşağıdaki türlerin yerine eski tür için desteği bırakır:

Özel durumlar ve dönüş kodları

Bağlama Başvuru
Olay Hub'ı İşlemler Kılavuzu

Sonraki adımlar