Öğ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

  1. Azure portalında Kaynak oluştur (+) öğesini seçin.

  2. Kaynak oluştur sayfasında Service Bus'ı arayıp seçin ve ardından Oluştur'u seçin.

  3. 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ı.
  4. Gözden geçir ve oluştur’u seçin. Doğrulama tamamlandıktan sonra Oluştur'u seçin.

  5. Dağıtım tamamlandıktan sonra Kaynağa git'i seçin.

  6. Yeni Service Bus ad alanınızda bir kuyruk eklemek için + Kuyruk'a tıklayın.

  7. 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.

  1. 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.

  2. + Ekle'yi ve ardından Rol ataması ekle'yi seçin.

  3. Azure Service Bus Veri Alıcısı'yı arayın, seçin ve ardından İleri'yi seçin.

  4. Üyeler sekmesindeki Erişim ata'nın altında Yönetilen Kimlik'i seçin

  5. Üyeleri seç'i seçerek Yönetilen kimlikleri seçin panelini açın.

  6. Abonelik'in, kaynakları daha önce oluşturduğunuz abonelik olduğunu onaylayın.

  7. 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.

  8. 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.

  9. Uygulamanızı seçin. Seçili üyeler bölümüne inmelidir. Seç'i seçin.

  10. 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

  1. Portalda, önceki öğreticide oluşturduğunuz işlev uygulamasını arayın veya İşlev Uygulaması sayfasında bu uygulamaya göz atın.

  2. İşlev uygulamanızda Ayarlar'ı genişletin ve ortam değişkenleri'ne tıklayın.

  3. 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.
  4. 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

  1. 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
    
  2. Proje klasörüne gidin:

    cd LocalFunctionProj
    
  3. 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.

  4. 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.

  5. 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ı myinputqueueolarak güncelleştirir. Ayrıca Service Bus bağlantısının adını olarak ServiceBusConnectionayarlar. 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

  1. 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
    
  2. Alt klasöre \bin\Release\netcoreapp3.1\publish göz atın ve içindekilerden bir .zip dosyası oluşturun.

  3. aşağıdaki komutu çalıştırarak , ve PATH_TO_ZIP parametrelerini uygun şekilde değiştirerek FUNCTION_APP_NAMERESOURCE_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

  1. Portalda Hizmetler'in altında Application Insights'ı arayın Application Insights ve seçin.

  2. Application Insights'ta, adlandırılmış örneğinize göz atın veya bu örneği arayın.

  3. Örneğinizde Araştır'ın altında Canlı Ölçümler'i seçin.

  4. Ö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.

  5. adlı myinputqueuekuyruğunuzu seçin.

  6. Soldaki menüden Service Bus Gezgini'ni seçin.

  7. Test iletisi gönderin.

  8. 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.