Share via


Öğ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 geçerli olsa 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ırma
  • Bu kimliğe Service Bus kuyruğundan okuma izni veren bir rol ataması oluşturma
  • Service Bus tetikleyicisi ile bir işlev uygulaması oluşturun ve dağıtın.
  • Service Bus'a kimlik tabanlı bağlantınızı doğrulama

Önkoşul

Önceki öğreticiyi tamamlayın: Kimlik tabanlı bağlantılarla işlev uygulaması oluşturma.

Hizmet veri yolu ve kuyruk oluşturma

  1. Azure portalKaynak oluştur (+) öğesini seçin.

  2. Kaynak oluştur sayfasında Integration>Service Bus'ı 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 ayrıca 6 ila 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'u seçin.

  7. Yeni kuyruğun adı olarak yazın myinputqueue ve Oluştur'u seçin.

Artık bir kuyruğunuz olduğuna göre işlev uygulamanızın yönetilen kimliğine bir rol ataması ekleyebilirsiniz.

Service Bus tetikleyicinizi yönetilen kimlikle yapılandırma

Service Bus tetikleyicilerini kimlik tabanlı bağlantılarla 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. Bu role kendi hesabınızı da ekleyerek yerel test sırasında service bus ad alanına bağlanmayı mümkün hale getirebilirsiniz.

Not

Kimlik tabanlı bağlantıları kullanmaya yönelik 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 ayrıntı için lütfen hizmetin tetikleyici ve bağlama belgelerine bakın.

  1. Yeni oluşturduğunuz service bus ad alanınızda Access Control (IAM) öğesini seçin. Burada kaynağa erişimi olan kişileri görüntüleyebilir ve yapılandırabilirsiniz.

  2. Ekle'ye tıklayın ve rol ataması ekle'yi seçin.

  3. Azure Service Bus Veri Alıcısı'yı arayın, seçin ve İleri'ye tıklayın.

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

  5. Yönetilen kimlikleri seçin panelini açmak için Üyeleri seç'e tıklayı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 kimlikkategorisinden İşlev Uygulaması'nı seçin. "İşlev Uygulaması" etiketinin yanında parantez içinde sistem tarafından atanan kimliklere sahip abonelikteki uygulama sayısını gösteren 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ıza tıklayın. Seçili üyeler bölümüne inmelidir. Seç’e tıklayın.

  10. Rol ataması ekle ekranına dönüp Gözden geçir ve ata'ya tıklayın. Yapılandırmayı gözden geçirin ve gözden geçir ve ata'ya tıklayın.

İş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'ın altında Yapılandırma'yı seçin.

  3. Uygulama ayarları'nda+ Yeni uygulama ayarı'nı seçerek aşağıdaki tabloda yeni ayarı oluşturun.

    Name 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. İki ayarı oluşturduktan sonraKaydet Onayla'yı> seçin.

Not

Yönetilen Kimlik bağlantıları için ayarları sağlamak üzere Azure Uygulama Yapılandırması veya Key Vault kullanırken, adların doğru çözümlendiğinden __ emin olmak için adların yerine veya / gibi : geçerli bir anahtar ayırıcısı kullanılmalıdır.

Örneğin, ServiceBusConnection:fullyQualifiedNamespace.

İşlev uygulamasını yönetilen 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ıyla func init 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 komutları çalıştırın:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    Bu, 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, 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, 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ığıdır. İşlevinizi yerel olarak çalıştırmak istiyorsanız, önceki bölümde yaptığınız gibi içinde local.settings.json uygulama ayarını ServiceBusConnection__fullyQualifiedNamespace yapın. Ayrıca, rolü geliştirici kimliğinize atamanız gerekir. Daha fazla ayrıntı için lütfen kimlik tabanlı bağlantılarla yerel geliştirme belgelerine bakın.

Not

Yönetilen Kimlik bağlantıları için ayarlar sağlamak üzere Azure Uygulama Yapılandırması veya Key Vault kullanırken, adların doğru çözümlendiğinden __ emin olmak için adların yerine veya / gibi : geçerli bir anahtar ayırıcısı 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çeriğinden 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, 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 yeni bir sekmede açın. Yeni sekmenizde Service Bus ad alanınıza gidin, sol dikey pencerede Kuyruklar'ı seçin.

  5. adlı myinputqueuekuyruğunuzu seçin.

  6. Sol dikey pencerede 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, listelenen kaynakların silmek istediğiniz 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.

Kimlik tabanlı bağlantılarla Azure İşlevleri daha fazla bilgi edinmek için aşağıdaki bağlantıları kullanın: