Samouczek: używanie połączeń opartych na tożsamościach zamiast wpisów tajnych z wyzwalaczami i powiązaniami

W tym samouczku przedstawiono sposób konfigurowania Azure Functions nawiązywania połączenia z kolejkami Azure Service Bus przy użyciu tożsamości zarządzanych zamiast wpisów tajnych przechowywanych w ustawieniach aplikacji funkcji. Samouczek jest kontynuacją samouczka Tworzenie aplikacji funkcji bez domyślnych wpisów tajnych magazynu w ramach samouczka definicji . Aby dowiedzieć się więcej na temat połączeń opartych na tożsamościach, zobacz Konfigurowanie połączenia opartego na tożsamościach.

Chociaż przedstawione procedury działają ogólnie dla wszystkich języków, ten samouczek obsługuje obecnie funkcje biblioteki klas języka C# w systemie Windows specjalnie.

Z tego samouczka dowiesz się, jak wykonywać następujące czynności:

  • Utwórz przestrzeń nazw i kolejkę usługi Service Bus.
  • Konfigurowanie aplikacji funkcji przy użyciu tożsamości zarządzanej
  • Tworzenie przypisania roli przyznającego tej tożsamości uprawnienie do odczytu z kolejki usługi Service Bus
  • Tworzenie i wdrażanie aplikacji funkcji za pomocą wyzwalacza usługi Service Bus.
  • Weryfikowanie połączenia opartego na tożsamościach z usługą Service Bus

Wymaganie wstępne

Ukończ poprzedni samouczek: Tworzenie aplikacji funkcji z połączeniami opartymi na tożsamościach.

Tworzenie magistrali usług i kolejki

  1. W Azure Portal wybierz pozycję Utwórz zasób (+).

  2. Na stronie Tworzenie zasobu wybierz pozycję Integracja>z usługą Service Bus.

  3. Na stronie Podstawowe użyj poniższej tabeli, aby skonfigurować ustawienia przestrzeni nazw usługi Service Bus. Użyj wartości domyślnych dla pozostałych opcji.

    Opcja Sugerowana wartość Opis
    Subskrypcja Twoja subskrypcja Subskrypcja, w ramach której są tworzone zasoby.
    Grupa zasobów myResourceGroup Grupa zasobów utworzona za pomocą aplikacji funkcji.
    Nazwa przestrzeni nazw Nazwa unikatowa w skali globalnej Przestrzeń nazw wystąpienia, z której ma być wyzwalana funkcja. Ponieważ przestrzeń nazw jest publicznie dostępna, musisz użyć nazwy, która jest globalnie unikatowa na platformie Azure. Nazwa musi również zawierać od 6 do 50 znaków, zawierać tylko znaki alfanumeryczne i kreski i nie może zaczynać się od liczby.
    Lokalizacja myFunctionRegion Region, w którym utworzono aplikację funkcji.
    Warstwa cenowa Podstawowa Podstawowa warstwa usługi Service Bus.
  4. Wybierz pozycję Przejrzyj i utwórz. Po zakończeniu walidacji wybierz pozycję Utwórz.

  5. Po zakończeniu wdrażania wybierz pozycję Przejdź do zasobu.

  6. W nowej przestrzeni nazw usługi Service Bus wybierz pozycję + Kolejka , aby dodać kolejkę.

  7. Wpisz myinputqueue nazwę nowej kolejki i wybierz pozycję Utwórz.

Teraz, gdy masz kolejkę, dodasz przypisanie roli do tożsamości zarządzanej aplikacji funkcji.

Konfigurowanie wyzwalacza usługi Service Bus przy użyciu tożsamości zarządzanej

Aby używać wyzwalaczy usługi Service Bus z połączeniami opartymi na tożsamościach, należy dodać przypisanie roli Azure Service Bus Odbiornik danych do tożsamości zarządzanej w aplikacji funkcji. Ta rola jest wymagana w przypadku korzystania z tożsamości zarządzanych w celu wyzwolenia z przestrzeni nazw usługi Service Bus. Możesz również dodać własne konto do tej roli, co umożliwia nawiązanie połączenia z przestrzenią nazw usługi Service Bus podczas testowania lokalnego.

Uwaga

Wymagania dotyczące ról dotyczące korzystania z połączeń opartych na tożsamościach różnią się w zależności od usługi i sposobu nawiązywania z nią połączenia. Potrzeby różnią się w zależności od wyzwalaczy, powiązań wejściowych i powiązań wyjściowych. Aby uzyskać więcej informacji na temat konkretnych wymagań dotyczących roli, zapoznaj się z dokumentacją wyzwalacza i powiązania usługi.

  1. W utworzonej przestrzeni nazw usługi Service Bus wybierz pozycję Access Control (Zarządzanie dostępem i tożsamościami). W tym miejscu można wyświetlać i konfigurować, kto ma dostęp do zasobu.

  2. Kliknij pozycję Dodaj i wybierz pozycję Dodaj przypisanie roli.

  3. Wyszukaj Azure Service Bus Odbiornik danych, wybierz go, a następnie kliknij przycisk Dalej.

  4. Na karcie Członkowie w obszarze Przypisz dostęp do wybierz pozycję Tożsamość zarządzana

  5. Kliknij pozycję Wybierz członków , aby otworzyć panel Wybieranie tożsamości zarządzanych .

  6. Upewnij się, że subskrypcja jest subskrypcją, w której zostały utworzone wcześniej zasoby.

  7. W selektorze tożsamości zarządzanej wybierz pozycję Aplikacja funkcji z kategorii Tożsamość zarządzana przypisana przez system . Obok etykiety "Aplikacja funkcji" może znajdować się liczba nawiasów wskazująca liczbę aplikacji w subskrypcji z tożsamościami przypisanymi przez system.

  8. Aplikacja powinna pojawić się na liście poniżej pól wejściowych. Jeśli go nie widzisz, możesz użyć pola Wybierz , aby przefiltrować wyniki przy użyciu nazwy aplikacji.

  9. Kliknij aplikację. Powinna zostać przeniesiona w dół do sekcji Wybrane elementy członkowskie . Kliknij pozycję Wybierz.

  10. Po powrocie do ekranu Dodawanie przypisania roli kliknij pozycję Przejrzyj i przypisz. Przejrzyj konfigurację, a następnie kliknij pozycję Przejrzyj i przypisz.

Udzielono aplikacji funkcji dostępu do przestrzeni nazw usługi Service Bus przy użyciu tożsamości zarządzanych.

Nawiązywanie połączenia z usługą Service Bus w aplikacji funkcji

  1. W portalu wyszukaj aplikację funkcji utworzoną w poprzednim samouczku lub przejdź do niej na stronie Aplikacja funkcji .

  2. W aplikacji funkcji wybierz pozycję Konfiguracja w obszarze Ustawienia.

  3. W obszarze Ustawienia aplikacji wybierz pozycję + Nowe ustawienie aplikacji , aby utworzyć nowe ustawienie w poniższej tabeli.

    Nazwa Wartość Opis
    ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net To ustawienie łączy aplikację funkcji z usługą Service Bus przy użyciu połączenia opartego na tożsamości zamiast wpisów tajnych.
  4. Po utworzeniu tych dwóch ustawień wybierz pozycję Zapisz>potwierdź.

Uwaga

W przypadku używania Azure App Configuration lub Key Vault w celu zapewnienia ustawień dla połączeń tożsamości zarządzanej nazwy ustawień powinny używać prawidłowego separatora kluczy, takiego jak : lub / zamiast elementu __ , aby zapewnić prawidłowe rozpoznawanie nazw.

Na przykład ServiceBusConnection:fullyQualifiedNamespace.

Po przygotowaniu aplikacji funkcji do nawiązania połączenia z przestrzenią nazw usługi Service Bus przy użyciu tożsamości zarządzanej możesz dodać nową funkcję, która używa wyzwalacza usługi Service Bus do projektu lokalnego.

Dodawanie funkcji wyzwalanej przez usługę Service Bus

  1. Uruchom następujące func init polecenie, aby utworzyć projekt funkcji w folderze o nazwie LocalFunctionProj z określonym środowiskiem uruchomieniowym:

    func init LocalFunctionProj --dotnet
    
  2. Przejdź do folderu projektu:

    cd LocalFunctionProj
    
  3. W głównym folderze projektu uruchom następujące polecenia:

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

    Spowoduje to zastąpienie domyślnej wersji pakietu rozszerzenia usługi Service Bus wersją, która obsługuje tożsamości zarządzane.

  4. Uruchom następujące polecenie, aby dodać funkcję wyzwalaną przez usługę Service Bus do projektu:

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    Spowoduje to dodanie kodu nowego wyzwalacza usługi Service Bus i odwołania do pakietu rozszerzenia. Musisz dodać ustawienie połączenia przestrzeni nazw usługi Service Bus dla tego wyzwalacza.

  5. Otwórz nowy plik projektu ServiceBusTrigger.cs i zastąp klasę ServiceBusTrigger następującym kodem:

    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}");
        }
    }
    

    Ten przykładowy kod aktualizuje nazwę kolejki do myinputqueue, która jest taka sama jak utworzona wcześniej kolejka. Ustawia również nazwę połączenia usługi Service Bus na ServiceBusConnection. Jest to przestrzeń nazw usługi Service Bus używana przez połączenie ServiceBusConnection__fullyQualifiedNamespace oparte na tożsamości skonfigurowane w portalu.

Uwaga

Jeśli spróbujesz uruchomić funkcje przy użyciu polecenia , func start zostanie wyświetlony błąd. Jest to spowodowane tym, że nie masz zdefiniowanego lokalnie połączenia opartego na tożsamościach. Jeśli chcesz uruchomić funkcję lokalnie, ustaw ustawienie ServiceBusConnection__fullyQualifiedNamespace aplikacji w local.settings.json sposób opisany w poprzedniej sekcji. Ponadto należy przypisać rolę do tożsamości dewelopera. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą tworzenia lokalnego za pomocą połączeń opartych na tożsamościach.

Uwaga

W przypadku używania Azure App Configuration lub Key Vault w celu zapewnienia ustawień dla połączeń tożsamości zarządzanej nazwy ustawień powinny używać prawidłowego separatora kluczy, takiego jak : lub / zamiast elementu __ , aby zapewnić prawidłowe rozpoznawanie nazw.

Na przykład ServiceBusConnection:fullyQualifiedNamespace.

Publikowanie zaktualizowanego projektu

  1. Uruchom następujące polecenie, aby lokalnie wygenerować pliki wymagane dla pakietu wdrożeniowego:

    dotnet publish --configuration Release
    
  2. Przejdź do podfolderu \bin\Release\netcoreapp3.1\publish i utwórz plik .zip na podstawie jego zawartości.

  3. Opublikuj plik .zip, uruchamiając następujące polecenie, zastępując FUNCTION_APP_NAMEodpowiednio parametry , RESOURCE_GROUP_NAMEi PATH_TO_ZIP :

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

Po zaktualizowaniu aplikacji funkcji przy użyciu nowego wyzwalacza możesz sprawdzić, czy działa ona przy użyciu tożsamości.

Weryfikowanie zmian

  1. W portalu wyszukaj Application Insights i wybierz pozycję Application Insights w obszarze Usługi.

  2. W usłudze Application Insights wyszukaj lub wyszukaj nazwane wystąpienie.

  3. W twoim wystąpieniu wybierz pozycję Metryki na żywo w obszarze Zbadaj.

  4. Pozostaw poprzednią kartę otwartą i otwórz Azure Portal na nowej karcie. Na nowej karcie przejdź do przestrzeni nazw usługi Service Bus, wybierz pozycję Kolejki w bloku po lewej stronie.

  5. Wybierz kolejkę o nazwie myinputqueue.

  6. Wybierz pozycję Eksplorator usługi Service Bus w bloku po lewej stronie.

  7. Wyślij wiadomość testową.

  8. Wybierz otwartą kartę Live Metrics (Metryki na żywo ) i zobacz wykonywanie kolejki usługi Service Bus.

Gratulacje! Pomyślnie skonfigurowaliśmy wyzwalacz kolejki usługi Service Bus z tożsamością zarządzaną.

Czyszczenie zasobów

W poprzednich krokach utworzono zasoby platformy Azure w grupie zasobów. Jeśli nie będziesz już potrzebować tych zasobów w przyszłości, możesz je usunąć przez usunięcie grupy zasobów.

W menu Azure Portal lub na stronie głównej wybierz pozycję Grupy zasobów. Następnie na stronie Grupy zasobów wybierz pozycję myResourceGroup.

Na stronie myResourceGroup upewnij się, że wymienione zasoby są tymi, które chcesz usunąć.

Wybierz pozycję Usuń grupę zasobów, wpisz myResourceGroup w polu tekstowym, aby potwierdzić, a następnie wybierz pozycję Usuń.

Następne kroki

W tym samouczku utworzono aplikację funkcji z połączeniami opartymi na tożsamościach.

Skorzystaj z poniższych linków, aby dowiedzieć się więcej Azure Functions z połączeniami opartymi na tożsamościach: