Öğretici: Tetikleyiciler ve bağlamalarla gizli diziler yerine kimlik tabanlı bağlantıları kullanma
Bu öğreticide, işlev uygulaması ayarlarında depolanan gizli diziler yerine yönetilen kimlikleri kullanarak Azure Service Bus kuyruklarına bağlanmak için Azure İşlevleri nasıl yapılandırabileceğiniz gösterilmektedir. Öğretici, tanım öğreticisindeki Varsayılan depolama gizli dizileri olmadan işlev uygulaması oluşturma öğreticisinin devamıdır. Kimlik tabanlı bağlantılar hakkında daha fazla bilgi edinmek için bkz . Kimlik tabanlı bağlantı yapılandırma..
Gösterilen yordamlar genel olarak tüm diller için işe yarasa da, bu öğretici şu anda özellikle Windows'ta C# sınıf kitaplığı işlevlerini destekler.
Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:
- Service Bus ad alanı ve kuyruğu oluşturun.
- İşlev uygulamanızı yönetilen kimlikle yapılandırın.
- Bu kimliğe Service Bus kuyruğundan okuma izni veren bir rol ataması oluşturun.
- Service Bus tetikleyicisi ile bir işlev uygulaması oluşturun ve dağıtın.
- Service Bus ile kimlik tabanlı bağlantınızı doğrulayın.
Önkoşul
Önceki öğreticiyi tamamlayın: Kimlik tabanlı bağlantılarla işlev uygulaması oluşturma.
Service Bus ad alanı ve kuyruğu oluşturma
Kaynak oluştur sayfasında Service Bus'ı arayıp seçin ve ardından Oluştur'u seçin.
Temel Bilgiler sayfasında, Service Bus ad alanı ayarlarını yapılandırmak için aşağıdaki tabloyu kullanın. Kalan seçenekler için varsayılan değerleri kullanın.
Seçenek Önerilen değer Açıklama Abonelik Aboneliğiniz Kaynaklarınızın oluşturulduğu abonelik. Kaynak grubu myResourceGroup İşlev uygulamanızla oluşturduğunuz kaynak grubu. Ad alanı adı Genel olarak benzersiz bir ad İşlevinizin tetiklendiği örneğinizin ad alanı. Ad alanı genel olarak erişilebilir olduğundan, Azure genelinde genel olarak benzersiz bir ad kullanmanız gerekir. Ad aynı zamanda 6 ile 50 karakter uzunluğunda olmalı, yalnızca alfasayısal karakterler ve tireler içermelidir ve bir sayı ile başlayamaz. Konum myFunctionRegion İşlev uygulamanızı oluşturduğunuz bölge. Fiyatlandırma katmanı Temel Temel Service Bus katmanı. Gözden geçir ve oluştur’u seçin. Doğrulama tamamlandıktan sonra Oluştur'u seçin.
Dağıtım tamamlandıktan sonra Kaynağa git'i seçin.
Yeni Service Bus ad alanınızda bir kuyruk eklemek için + Kuyruk'a tıklayın.
Yeni kuyruğun adı olarak myinputqueue yazın ve Oluştur'u seçin.
Artık bir kuyruğunuz olduğuna göre işlev uygulamanızın yönetilen kimliğine rol ataması ekleyebilirsiniz.
Service Bus tetikleyicinizi yönetilen kimlikle yapılandırma
Kimlik tabanlı bağlantılarla Service Bus tetikleyicilerini kullanmak için, işlev uygulamanızdaki yönetilen kimliğe Azure Service Bus Veri Alıcısı rol atamasını eklemeniz gerekir. Bu rol, Service Bus ad alanınızı tetikleyen yönetilen kimlikler kullanılırken gereklidir. Ayrıca, yerel test sırasında Service Bus ad alanına bağlanmayı mümkün kılan bu role kendi hesabınızı da ekleyebilirsiniz.
Not
Kimlik tabanlı bağlantıları kullanmak için rol gereksinimleri hizmete ve hizmete nasıl bağlandığınıza bağlı olarak değişir. Gereksinimler tetikleyiciler, giriş bağlamaları ve çıkış bağlamaları arasında farklılık gösterir. Belirli rol gereksinimleri hakkında daha fazla bilgi için hizmetin tetikleyici ve bağlama belgelerine bakın.
Oluşturduğunuz Service Bus ad alanınızda Erişim denetimi (IAM) öğesini seçin. Bu sayfa, kaynağa erişimi olan kişileri görüntüleyebileceğiniz ve yapılandırabileceğiniz yerdir.
+ Ekle'yi ve ardından Rol ataması ekle'yi seçin.
Azure Service Bus Veri Alıcısı'yı arayın, seçin ve ardından İleri'yi seçin.
Üyeler sekmesindeki Erişim ata'nın altında Yönetilen Kimlik'i seçin
Üyeleri seç'i seçerek Yönetilen kimlikleri seçin panelini açın.
Abonelik'in, kaynakları daha önce oluşturduğunuz abonelik olduğunu onaylayın.
Yönetilen kimlik seçicisinde Sistem tarafından atanan yönetilen kimlik kategorisinde İşlev Uygulaması'nı seçin. İşlev Uygulaması etiketinin yanında, sistem tarafından atanan kimliklere sahip abonelikteki uygulama sayısını gösteren parantez içinde bir sayı olabilir.
Uygulamanız giriş alanlarının altındaki bir listede görünmelidir. Bunu görmüyorsanız, sonuçları uygulamanızın adıyla filtrelemek için Seç kutusunu kullanabilirsiniz.
Uygulamanızı seçin. Seçili üyeler bölümüne inmelidir. Seç'i seçin.
Rol ataması ekle ekranına dönüp Gözden geçir ve ata'yı seçin. Yapılandırmayı gözden geçirin ve gözden geçir ve ata'yı seçin.
İşlev uygulamanıza yönetilen kimlikleri kullanarak Service Bus ad alanına erişim verdiniz.
İşlev uygulamanızda Service Bus'a bağlanma
Portalda, önceki öğreticide oluşturduğunuz işlev uygulamasını arayın veya İşlev Uygulaması sayfasında bu uygulamaya göz atın.
İşlev uygulamanızda Ayarlar'ı genişletin ve ortam değişkenleri'ne tıklayın.
Bir ayar oluşturmak için Uygulama ayarları sekmesinde + Ekle'yi seçin. Yeni ayarın Adını ve Değerini girmek için aşağıdaki tabloda yer alan bilgileri kullanın:
Veri Akışı Adı Değer Açıklama ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net Bu ayar, işlev uygulamanızı gizli diziler yerine kimlik tabanlı bir bağlantı kullanarak Service Bus'a bağlar. Uygula'yı ve ardından Uygula ve Onayla'yı seçerek değişikliklerinizi kaydedin ve uygulama işlevini yeniden başlatın.
Not
Yönetilen Kimlik bağlantıları için ayarlar sağlamak üzere Azure Uygulaması Yapılandırması veya Key Vault kullandığınızda, adların doğru çözümlendiğinden __
emin olmak için adların yerine veya /
gibi :
geçerli bir anahtar ayırıcı kullanılmalıdır.
Örneğin, ServiceBusConnection:fullyQualifiedNamespace
.
İşlev uygulamasını yönetilen bir kimlik kullanarak Service Bus ad alanına bağlanacak şekilde hazırladığınıza göre, yerel projenize Service Bus tetikleyicisi kullanan yeni bir işlev ekleyebilirsiniz.
Service Bus ile tetiklenen işlev ekleme
Belirtilen çalışma zamanına
func init
sahip LocalFunctionProj adlı bir klasörde işlev projesi oluşturmak için komutunu aşağıdaki gibi çalıştırın:func init LocalFunctionProj --dotnet
Proje klasörüne gidin:
cd LocalFunctionProj
Kök proje klasöründe aşağıdaki komutu çalıştırın:
dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
Bu komut, Service Bus uzantı paketinin varsayılan sürümünü yönetilen kimlikleri destekleyen bir sürümle değiştirir.
Projeye Service Bus ile tetiklenen bir işlev eklemek için aşağıdaki komutu çalıştırın:
func new --name ServiceBusTrigger --template ServiceBusQueueTrigger
Bu komut, yeni bir Service Bus tetikleyicisinin kodunu ve uzantı paketine başvuruyu ekler. Bu tetikleyici için bir Service Bus ad alanı bağlantı ayarı eklemeniz gerekir.
Yeni ServiceBusTrigger.cs proje dosyasını açın ve sınıfını
ServiceBusTrigger
aşağıdaki kodla değiştirin:public static class ServiceBusTrigger { [FunctionName("ServiceBusTrigger")] public static void Run([ServiceBusTrigger("myinputqueue", Connection = "ServiceBusConnection")]string myQueueItem, ILogger log) { log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}"); } }
Bu kod örneği, daha önce oluşturduğunuz kuyrukla aynı adı taşıyan kuyruk adını
myinputqueue
olarak güncelleştirir. Ayrıca Service Bus bağlantısının adını olarakServiceBusConnection
ayarlar. Bu ad, portalda yapılandırdığınız kimlik tabanlı bağlantıServiceBusConnection__fullyQualifiedNamespace
tarafından kullanılan Service Bus ad alanıdır.
Not
İşlevlerinizi şimdi kullanarak func start
çalıştırmaya çalışırsanız bir hata alırsınız. Bunun nedeni, yerel olarak tanımlanmış bir kimlik tabanlı bağlantınız olmadığındandır. İşlevinizi yerel olarak çalıştırmak istiyorsanız, uygulama ayarını ServiceBusConnection__fullyQualifiedNamespace
local.settings.json
[önceki bölümde] yaptığınız gibi ayarlayın (#connect-your-function-app içinde service-bus-in-your-function-app). Ayrıca, rolü geliştirici kimliğinize atamanız gerekir. Daha fazla bilgi için bkz . Kimlik tabanlı bağlantılarla yerel geliştirme.
Not
Yönetilen Kimlik bağlantıları için ayarlar sağlamak üzere Azure Uygulaması Yapılandırması veya Key Vault kullanılırken, adların doğru çözümlendiğinden __
emin olmak için adların yerine veya /
gibi :
geçerli bir anahtar ayırıcı kullanılmalıdır.
Örneğin, ServiceBusConnection:fullyQualifiedNamespace
.
Güncelleştirilmiş projeyi yayımlama
Dağıtım paketi için gereken dosyaları yerel olarak oluşturmak için aşağıdaki komutu çalıştırın:
dotnet publish --configuration Release
Alt klasöre
\bin\Release\netcoreapp3.1\publish
göz atın ve içindekilerden bir .zip dosyası oluşturun.aşağıdaki komutu çalıştırarak , ve
PATH_TO_ZIP
parametrelerini uygun şekilde değiştirerekFUNCTION_APP_NAME
RESOURCE_GROUP_NAME
.zip dosyasını yayımlayın:az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
İşlev uygulamasını yeni tetikleyiciyle güncelleştirdiğinize göre artık kimliği kullanarak çalıştığını doğrulayabilirsiniz.
Değişikliklerinizi doğrulama
Portalda Hizmetler'in altında Application Insights'ı arayın
Application Insights
ve seçin.Application Insights'ta, adlandırılmış örneğinize göz atın veya bu örneği arayın.
Örneğinizde Araştır'ın altında Canlı Ölçümler'i seçin.
Önceki sekmeyi açık tutun ve Azure portalını yeni bir sekmede açın. Yeni sekmenizde Service Bus ad alanınıza gidin ve sol menüden Kuyruklar'ı seçin.
adlı
myinputqueue
kuyruğunuzu seçin.Soldaki menüden Service Bus Gezgini'ni seçin.
Test iletisi gönderin.
Açık Canlı Ölçümler sekmenizi seçin ve Service Bus kuyruğu yürütmesine bakın.
Tebrikler! Service Bus kuyruğu tetikleyicinizi yönetilen kimlikle başarıyla ayarladınız.
Kaynakları temizleme
Önceki adımlarda, bir kaynak grubunda Azure kaynakları oluşturdunuz. İleride bu kaynaklara ihtiyaç duymayacağınızı düşünüyorsanız kaynakları silmek için kaynak grubunu silebilirsiniz.
Azure portalı menüsünden veya Giriş sayfasında Kaynak grupları'nı seçin. Ardından Kaynak grupları sayfasında myResourceGroup öğesini seçin.
myResourceGroup sayfasında, silmek istediğiniz kaynakların listelenmiş kaynaklar olduğundan emin olun.
Kaynak grubunu sil'i seçin, onaylamak için metin kutusuna myResourceGroup yazın ve sil'i seçin.
Sonraki adımlar
Bu öğreticide, kimlik tabanlı bağlantılarla bir işlev uygulaması oluşturdunuz.
Kimliği yönetmeyi öğrenmek için sonraki makaleye geçin.