Udostępnij za pośrednictwem


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

W tym samouczku pokazano, jak skonfigurować usługę Azure Functions do łączenia się z kolejkami usługi Azure Service Bus przy użyciu tożsamości zarządzanych, a nie wpisów tajnych przechowywanych w ustawieniach aplikacji funkcji. Samouczek jest kontynuacją samouczka Tworzenie aplikacji funkcji bez domyślnych wpisów tajnych magazynu w ramach jego 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.
  • Skonfiguruj aplikację funkcji przy użyciu tożsamości zarządzanej.
  • Utwórz przypisanie roli udzielające tej tożsamości uprawnienia do odczytu z kolejki usługi Service Bus.
  • Tworzenie i wdrażanie aplikacji funkcji za pomocą wyzwalacza usługi Service Bus.
  • Sprawdź połączenie oparte na tożsamościach z usługą Service Bus.

Warunek wstępny

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

Tworzenie przestrzeni nazw i kolejki usługi Service Bus

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

  2. Na stronie Tworzenie zasobu wyszukaj i wybierz pozycję Service Bus, a następnie wybierz pozycję Utwórz.

  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órego 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 Podstawowy 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. Wprowadź nazwę myinputqueue jako nazwę nowej kolejki i wybierz pozycję Utwórz.

Teraz, gdy masz kolejkę, możesz dodać 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 Odbiornik danych usługi Azure Service Bus 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 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 określonych wymagań dotyczących roli, zobacz dokumentację wyzwalacza i powiązania usługi.

  1. W utworzonej przestrzeni nazw usługi Service Bus wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami). Na tej stronie można wyświetlić i skonfigurować, kto ma dostęp do zasobu.

  2. Wybierz pozycję + Dodaj i wybierz pozycję Dodaj przypisanie roli.

  3. Wyszukaj pozycję Odbiornik danych usługi Azure Service Bus, wybierz go, a następnie wybierz przycisk Dalej.

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

  5. Wybierz 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. Etykieta Aplikacja funkcji może zawierać liczbę nawiasów obok niej wskazującą 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. Wybierz aplikację. Powinna zostać przeniesiona w dół do sekcji Wybrane elementy członkowskie . Wybierz pozycję Wybierz.

  10. Po powrocie na ekranie Dodawanie przypisania roli wybierz pozycję Przejrzyj i przypisz. Przejrzyj konfigurację, a następnie wybierz 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 rozwiń węzeł Ustawienia, a następnie wybierz pozycję Zmienne środowiskowe.

  3. Na karcie Ustawienia aplikacji wybierz pozycję + Dodaj, aby utworzyć ustawienie. Użyj informacji w poniższej tabeli, aby wprowadzić nazwę i wartość dla nowego ustawienia:

    Nazwa/nazwisko 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. Wybierz pozycję Zastosuj, a następnie wybierz pozycję Zastosuj i potwierdź, aby zapisać zmiany i ponownie uruchomić funkcję aplikacji.

Uwaga

Jeśli używasz aplikacja systemu Azure 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 , aby upewnić się, że nazwy są poprawnie rozpoznawane.

Na przykład ServiceBusConnection:fullyQualifiedNamespace.

Teraz, gdy aplikacja funkcji została przygotowana 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 folderze głównym projektu uruchom następujące polecenie:

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

    To polecenie zastępuje domyślną wersję pakietu rozszerzenia usługi Service Bus wersją, która obsługuje tożsamości zarządzane.

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

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    To polecenie dodaje kod nowego wyzwalacza usługi Service Bus i odwołanie 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 na myinputqueue, która jest taka sama jak utworzona wcześniej kolejka. Ustawia również nazwę połączenia usługi Service Bus z .ServiceBusConnection Ta nazwa 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 teraz uruchomić funkcje przy użyciu polecenia func start, zostanie wyświetlony błąd. Dzieje się tak, ponieważ nie masz zdefiniowanego lokalnie połączenia opartego na tożsamościach. Jeśli chcesz uruchomić funkcję lokalnie, ustaw ustawienie ServiceBusConnection__fullyQualifiedNamespace aplikacji w sposób opisany w local.settings.json [poprzedniej sekcji](#connect-to-the service-bus-in-your-function-app). Ponadto musisz przypisać rolę do tożsamości dewelopera. Aby uzyskać więcej informacji, zobacz programowanie lokalne z połączeniami opartymi na tożsamościach.

Uwaga

W przypadku używania aplikacja systemu Azure 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 upewnić się, że nazwy są poprawnie rozpoznawane.

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 FUNCTION_APP_NAMEnastępujące polecenie, zastępując odpowiednio parametry , RESOURCE_GROUP_NAMEi PATH_TO_ZIP :

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

Teraz, gdy aplikacja funkcji została zaktualizowana przy użyciu nowego wyzwalacza, możesz sprawdzić, czy działa 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 otwartą poprzednią kartę i otwórz witrynę Azure Portal na nowej karcie. Na nowej karcie przejdź do przestrzeni nazw usługi Service Bus, wybierz pozycję Kolejki z menu po lewej stronie.

  5. Wybierz kolejkę o nazwie myinputqueue.

  6. Wybierz pozycję Eksplorator usługi Service Bus z menu po lewej stronie.

  7. Wyślij wiadomość testową.

  8. Wybierz otwartą kartę 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 witryny 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.

Przejdź do następnego artykułu, aby dowiedzieć się, jak zarządzać tożsamością.