İngilizce dilinde oku

Aracılığıyla paylaş


Azure Event Grid ve Azure Relay kullanarak özel hedeflerde barındırılan web kancalarına olay gönderme

Bu makalede, Azure Relay kullanarak Azure Event Grid'den şirket içi sunucular veya sanal makineler gibi özel hedeflerde barındırılan web kancalarına olayları almayı öğreneceksiniz.

Azure Relay, bir güvenlik duvarı bağlantısı açmak veya şirket ağ altyapısında müdahaleci değişiklikler yapmak zorunda kalmadan kurumsal kurumsal ağ içinde bulunan hizmetleri güvenli bir şekilde genel buluta sunmanızı sağlayan bir hizmettir.

Azure Relay, azure Event Grid'den başlatılan geçişli trafiği kabul etme seçeneğini içeren temel bir WebSocket özelliğine sahip herhangi bir dilde uygulanabilen mevcut Azure Relay özelliklerinin güvenli, açık protokollü bir evrimi olan karma bağlantıları destekler. Bkz . Azure Relay Karma Bağlantılar protokol kılavuzu - Azure Relay.

Event Grid temel kaynaklarından özel hedeflerdeki web kancalarına olayları alma

Bu bölümde, Event Grid temel kaynaklarından Azure Relay kullanarak özel hedeflerde barındırılan web kancalarına olayları almak için üst düzey adımlar sağlanır.

  1. Azure Relay kaynağı oluşturma. Geçiş ad alanı ve karma bağlantı oluşturmak için Azure portalı, Azure CLI veya Azure Resource Manager şablonlarını kullanabilirsiniz. Daha fazla bilgi için bkz . Azure portalını kullanarak Azure Relay ad alanları ve karma bağlantılar oluşturma.

    Not

    Şu seçeneği etkinleştirdiğinizden emin olun: istemci yetkilendirmesi gerekiyor. Bu seçenek, karma bağlantı uç noktanıza yalnızca yetkili istemcilerin bağlanabilmesini sağlar. İstemci yetkilendirmesini etkinleştirmek ve istemci yetkilendirme kurallarını yönetmek için Azure portalını veya Azure CLI'yı kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Relay Karma Bağlantılarının Güvenliğini Sağlama.

  2. Azure Relay karma bağlantı dinleyicisini uygulayın.

    • 1. Seçenek: Program aracılığıyla karma bağlantı dinleyicisi oluşturmak ve gelen istekleri işlemek için .NET için Azure Relay SDK'sını kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Relay Karma Bağlantıları - .NET'te HTTP istekleri.
    • Seçenek 2: Azure Relay Köprüsü. Her yerden VE her yerden VPN'siz TCP tünelleri oluşturabilen platformlar arası bir komut satırı aracı olan Azure Relay Bridge'i kullanabilirsiniz. Azure Relay Köprüsü'ne Docker kapsayıcısı veya tek başına yürütülebilir dosya olarak çalıştırabilirsiniz. Daha fazla bilgi için bkz . Azure Relay Köprüsü.
  3. Karma bağlantı dinleyicinizin bağlı olduğundan emin olun. Ad alanınızdaki karma bağlantıları listelemek ve durumlarını denetlemek için aşağıdaki Azure CLI komutunu kullanabilirsiniz.

    az relay hyco list --resource-group [resource-group-name] --namespace-name [namespace-name]. You should see a "listenerCount" attribute in the properties of your hybrid connection.
    
  4. Azure Event Grid sistem konusu oluşturun. Depolama hesapları, olay hub'ları veya Azure abonelikleri gibi olayları olan bir Azure hizmetine karşılık gelen bir sistem konusu oluşturmak için Azure portalı, Azure CLI veya Azure Resource Manager şablonlarını kullanabilirsiniz. Daha fazla bilgi için bkz . Azure Event Grid'de sistem konuları.

  5. Sistem konusuna bir olay aboneliği oluşturun. Olaylar için filtre ölçütlerini ve hedef uç noktayı tanımlayan bir olay aboneliği oluşturmak için Azure portalı, Azure CLI veya Azure Resource Manager şablonlarını kullanabilirsiniz. Bu durumda uç nokta türü olarak Azure Relay Karma Bağlantısı'nı seçin ve karma bağlantınızın bağlantı dizesi sağlayın. Daha fazla bilgi için bkz . Olay işleyicisi olarak Azure Relay Karma Bağlantısı.

Azure Event Grid'den olay almak için web kancalarını kullanırken dikkat edilmesi gerekenler

Bulut Olayları doğrulama el sıkışmasının uygulandığından emin olun. Aşağıda C# dilinde abonelik oluşturma sırasında gereken Bulut Olayı şeması el sıkışmasının nasıl doğrulandığını gösteren örnek kod verilmiştir. Bu örnek kodu, tercih ettiğiniz dilde kendi doğrulama el sıkışma mantığınızı uygulamak için başvuru olarak kullanabilirsiniz.

if (context.Request.HttpMethod == "OPTIONS" && context.Request.Url.PathAndQuery == _settings!.relayWebhookPath)
{
                context.Response.StatusCode = HttpStatusCode.OK;
                context.Response.StatusDescription = "OK";

                var origin = context.Request.Headers["Webhook-Request-Origin"];
                context.Response.Headers.Add("Webhook-Allowed-Origin", origin);
                using (var sw = new StreamWriter(context.Response.OutputStream))
                {
                                sw.WriteLine("OK");
                }

                context.Response.Close();
}

Olayları Azure Relay Köprüsü'nden yerel web kancanıza iletmek istiyorsanız aşağıdaki komutu kullanabilirsiniz:

.\azbridge.exe -x "AzureRelayConnectionString" -H [HybridConnectionName]:[http/https]/localhost:[ApplicationPort] -v