Udostępnij za pośrednictwem


Azure Functions — przewodnik dla deweloperów

W usłudze Azure Functions wszystkie funkcje mają pewne podstawowe pojęcia techniczne i składniki, niezależnie od preferowanego języka lub środowiska programistycznego. Ten artykuł jest specyficzny dla języka. Wybierz preferowany język w górnej części artykułu.

W tym artykule założono, że znasz już omówienie usługi Azure Functions.

Jeśli wolisz przejść bezpośrednio, możesz ukończyć samouczek Szybki start przy użyciu programu Visual Studio, programu Visual Studio Code lub wiersza polecenia.

Jeśli wolisz przejść bezpośrednio, możesz ukończyć samouczek Szybki start przy użyciu narzędzia Maven (wiersza polecenia), Eclipse, IntelliJ IDEA, Gradle, Quarkus, Spring Cloud lub Visual Studio Code.

Jeśli wolisz przejść bezpośrednio, możesz ukończyć samouczek Szybki start przy użyciu programu Visual Studio Code lub z poziomu wiersza polecenia.

Jeśli wolisz przejść bezpośrednio, możesz ukończyć samouczek Szybki start przy użyciu programu Visual Studio Code lub z poziomu wiersza polecenia.

Jeśli wolisz przejść bezpośrednio, możesz ukończyć samouczek Szybki start przy użyciu programu Visual Studio Code lub z poziomu wiersza polecenia.

Jeśli wolisz przejść bezpośrednio, możesz ukończyć samouczek Szybki start przy użyciu programu Visual Studio Code lub z poziomu wiersza polecenia.

Projekt kodu

Podstawowym elementem usługi Azure Functions jest projekt kodu specyficzny dla języka, który implementuje co najmniej jedną jednostki wykonywania kodu o nazwie functions. Funkcje to po prostu metody uruchamiane w chmurze platformy Azure na podstawie zdarzeń, w odpowiedzi na żądania HTTP lub zgodnie z harmonogramem. Projekt kodu usługi Azure Functions można traktować jako mechanizm organizowania, wdrażania i zbiorowego zarządzania poszczególnymi funkcjami w projekcie podczas ich uruchamiania na platformie Azure. Aby uzyskać więcej informacji, zobacz Organizowanie funkcji.

Sposób układania projektu kodu i sposobu wskazywania metod w projekcie zależy od języka programowania projektu. Aby uzyskać szczegółowe wskazówki dotyczące języka, zobacz przewodnik deweloperów języka C#.

Sposób układania projektu kodu i sposobu wskazywania metod w projekcie zależy od języka programowania projektu. Aby uzyskać wskazówki specyficzne dla języka, zobacz Przewodnik dla deweloperów języka Java.

Sposób układania projektu kodu i sposobu wskazywania metod w projekcie zależy od języka programowania projektu. Aby uzyskać wskazówki specyficzne dla języka, zobacz przewodnik dla deweloperów Node.js.

Sposób układania projektu kodu i sposobu wskazywania metod w projekcie zależy od języka programowania projektu. Aby uzyskać wskazówki specyficzne dla języka, zobacz Przewodnik deweloperów programu PowerShell.

Sposób układania projektu kodu i sposobu wskazywania metod w projekcie zależy od języka programowania projektu. Aby uzyskać wskazówki specyficzne dla języka, zobacz Przewodnik dla deweloperów języka Python.

Wszystkie funkcje muszą mieć wyzwalacz, który definiuje sposób uruchamiania funkcji i może udostępniać dane wejściowe funkcji. Funkcje mogą opcjonalnie definiować powiązania wejściowe i wyjściowe. Te powiązania upraszczają połączenia z innymi usługami bez konieczności pracy z zestawami SDK klienta. Aby uzyskać więcej informacji, zobacz Pojęcia powiązań i wyzwalaczy usługi Azure Functions.

Usługa Azure Functions udostępnia zestaw szablonów projektów i funkcji specyficznych dla języka, które ułatwiają tworzenie nowych projektów kodu i dodawanie funkcji do projektu. Do generowania nowych aplikacji i funkcji przy użyciu tych szablonów można użyć dowolnego z narzędzi, które obsługują tworzenie usługi Azure Functions.

Narzędzia programistyczne

Następujące narzędzia zapewniają zintegrowane środowisko programowania i publikowania dla usługi Azure Functions w preferowanym języku:

Te narzędzia integrują się z narzędziami Azure Functions Core Tools , aby można było uruchamiać i debugować na komputerze lokalnym przy użyciu środowiska uruchomieniowego usługi Functions. Aby uzyskać więcej informacji, zobacz Kod i testowanie usługi Azure Functions lokalnie.

W witrynie Azure Portal dostępny jest również edytor, który umożliwia aktualizowanie kodu i pliku definicji function.json bezpośrednio w portalu. Ten edytor powinien być używany tylko w przypadku niewielkich zmian lub tworzenia funkcji weryfikacji koncepcji. Zawsze należy opracowywać funkcje lokalnie, jeśli to możliwe. Aby uzyskać więcej informacji, zobacz Tworzenie pierwszej funkcji w witrynie Azure Portal.

Edytowanie portalu jest obsługiwane tylko w przypadku Node.js w wersji 3, która używa pliku function.json.

Wdrożenie

Podczas publikowania projektu kodu na platformie Azure zasadniczo wdrażasz projekt w istniejącym zasobie aplikacji funkcji. Aplikacja funkcji udostępnia kontekst wykonywania na platformie Azure, w którym działają funkcje. W związku z tym jest to jednostka wdrażania i zarządzania funkcjami. Z perspektywy zasobu platformy Azure aplikacja funkcji jest równoważna zasobowi witryny (Microsoft.Web/sites) w usłudze aplikacja systemu Azure Service, który jest odpowiednikiem aplikacji internetowej.

Aplikacja funkcji składa się z co najmniej jednej pojedynczej funkcji, która jest zarządzana, wdrażana i skalowana razem. Wszystkie funkcje w aplikacji funkcji mają ten sam plan cenowy, metodę wdrażania i wersję środowiska uruchomieniowego. Aby uzyskać więcej informacji, zobacz Jak zarządzać aplikacją funkcji.

Jeśli aplikacja funkcji i inne wymagane zasoby nie istnieją jeszcze na platformie Azure, należy najpierw utworzyć te zasoby przed wdrożeniem plików projektu. Te zasoby można utworzyć na jeden z następujących sposobów:

Oprócz publikowania opartego na narzędziach usługa Functions obsługuje inne technologie wdrażania kodu źródłowego w istniejącej aplikacji funkcji. Aby uzyskać więcej informacji, zobacz Technologie wdrażania w usłudze Azure Functions.

Łączenie z usługami

Głównym wymaganiem każdej usługi obliczeniowej opartej na chmurze jest odczytywanie danych z i zapisywanie danych w innych usługach w chmurze. Funkcje udostępnia obszerny zestaw powiązań, które ułatwiają łączenie się z usługami bez konieczności pracy z zestawami SDK klienta.

Niezależnie od tego, czy używasz rozszerzeń powiązań udostępnianych przez usługę Functions, czy bezpośrednio współpracujesz z zestawami SDK klienta, bezpiecznie przechowujesz dane połączenia i nie dołączasz ich do kodu. Aby uzyskać więcej informacji, zobacz Połączenia.

Powiązania

Usługa Functions udostępnia powiązania dla wielu usług platformy Azure i kilku usług innych firm, które są implementowane jako rozszerzenia. Aby uzyskać więcej informacji, zobacz pełną listę obsługiwanych powiązań.

Rozszerzenia powiązań mogą obsługiwać zarówno dane wejściowe, jak i wyjściowe, a wiele wyzwalaczy działa również jako powiązania wejściowe. Powiązania umożliwiają skonfigurowanie połączenia z usługami, aby host usługi Functions mógł obsłużyć dostęp do danych. Aby uzyskać więcej informacji, zobacz Pojęcia powiązań i wyzwalaczy usługi Azure Functions.

Jeśli masz problemy z błędami pochodzącymi z powiązań, zapoznaj się z dokumentacją kodów błędów powiązania usługi Azure Functions.

Zestawy SDK klienta

Chociaż funkcje udostępniają powiązania, aby uprościć dostęp do danych w kodzie funkcji, nadal możesz użyć zestawu SDK klienta w projekcie, aby bezpośrednio uzyskać dostęp do danej usługi, jeśli wolisz. Może być konieczne bezpośrednie użycie zestawów SDK klienta, jeśli funkcje wymagają funkcjonalności bazowego zestawu SDK, który nie jest obsługiwany przez rozszerzenie powiązania.

W przypadku korzystania z zestawów SDK klienta należy użyć tego samego procesu do przechowywania i uzyskiwania dostępu do parametry połączenia używanych przez rozszerzenia powiązań.

Podczas tworzenia wystąpienia zestawu SDK klienta w funkcjach należy uzyskać informacje o połączeniu wymagane przez klienta ze zmiennych środowiskowych.

Podczas tworzenia wystąpienia zestawu SDK klienta w funkcjach należy uzyskać informacje o połączeniu wymagane przez klienta ze zmiennych środowiskowych.

Podczas tworzenia wystąpienia zestawu SDK klienta w funkcjach należy uzyskać informacje o połączeniu wymagane przez klienta ze zmiennych środowiskowych.

Podczas tworzenia wystąpienia zestawu SDK klienta w funkcjach należy uzyskać informacje o połączeniu wymagane przez klienta ze zmiennych środowiskowych.

Podczas tworzenia wystąpienia zestawu SDK klienta w funkcjach należy uzyskać informacje o połączeniu wymagane przez klienta ze zmiennych środowiskowych.

Połączenia

Najlepszym rozwiązaniem w zakresie zabezpieczeń usługa Azure Functions korzysta z funkcji ustawień aplikacji usługi aplikacja systemu Azure, aby ułatwić bezpieczniejsze przechowywanie ciągów, kluczy i innych tokenów wymaganych do nawiązania połączenia z innymi usługami. Ustawienia aplikacji na platformie Azure są przechowywane jako szyfrowane i mogą być dostępne w czasie wykonywania przez aplikację jako pary zmiennych środowiskowych name value . W przypadku wyzwalaczy i powiązań, które wymagają właściwości połączenia, należy ustawić nazwę ustawienia aplikacji zamiast rzeczywistego parametry połączenia. Nie można skonfigurować powiązania bezpośrednio przy użyciu parametry połączenia lub klucza.

Rozważmy na przykład definicję connection wyzwalacza, która ma właściwość. Zamiast parametry połączenia należy ustawić connection nazwę zmiennej środowiskowej zawierającej parametry połączenia. Użycie tej strategii dostępu do wpisów tajnych sprawia, że aplikacje są bezpieczniejsze i ułatwiają zmianę połączeń między środowiskami. Aby uzyskać jeszcze więcej zabezpieczeń, można użyć połączeń opartych na tożsamościach.

Domyślny dostawca konfiguracji używa zmiennych środowiskowych. Te zmienne są definiowane w ustawieniach aplikacji podczas uruchamiania na platformie Azure i w pliku ustawień lokalnych podczas tworzenia lokalnego.

Wartości połączenia

Gdy nazwa połączenia jest rozpoznawana jako pojedyncza dokładna wartość, środowisko uruchomieniowe identyfikuje wartość jako parametry połączenia, która zazwyczaj zawiera wpis tajny. Szczegóły parametry połączenia zależą od usługi, z którą nawiązujesz połączenie.

Jednak nazwa połączenia może również odwoływać się do kolekcji wielu elementów konfiguracji, co jest przydatne do konfigurowania połączeń opartych na tożsamościach. Zmienne środowiskowe mogą być traktowane jako kolekcja przy użyciu udostępnionego prefiksu kończącego się podwójnymi podkreśleniami __. Następnie można odwoływać się do grupy, ustawiając nazwę połączenia na ten prefiks.

Na przykład connection właściwość definicji wyzwalacza obiektu blob platformy Azure może mieć wartość Storage1. Jeśli nie ma żadnej pojedynczej wartości parametrów skonfigurowanej przez zmienną środowiskową o nazwie , zmienna środowiskowa o nazwie Storage1Storage1__blobServiceUri może służyć do informowania blobServiceUri właściwości połączenia. Właściwości połączenia są różne dla każdej usługi. Zapoznaj się z dokumentacją składnika korzystającego z połączenia.

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 Storage1:blobServiceUri.

Konfigurowanie połączenia opartego na tożsamości

Niektóre połączenia w usłudze Azure Functions można skonfigurować do używania tożsamości zamiast wpisu tajnego. Obsługa zależy od wersji środowiska uruchomieniowego i rozszerzenia przy użyciu połączenia. W niektórych przypadkach w usłudze Functions może być nadal wymagana parametry połączenia, mimo że usługa, z którą nawiązujesz połączenie, obsługuje połączenia oparte na tożsamościach. Aby zapoznać się z samouczkiem dotyczącym konfigurowania aplikacji funkcji przy użyciu tożsamości zarządzanych, zobacz samouczek dotyczący tworzenia aplikacji funkcji z połączeniami opartymi na tożsamościach.

Uwaga

Podczas uruchamiania w planie Zużycie lub Elastic Premium aplikacja używa WEBSITE_AZUREFILESCONNECTIONSTRING ustawień i WEBSITE_CONTENTSHARE podczas nawiązywania połączenia z usługą Azure Files na koncie magazynu używanym przez aplikację funkcji. Usługa Azure Files nie obsługuje używania tożsamości zarządzanej podczas uzyskiwania dostępu do udziału plików. Aby uzyskać więcej informacji, zobacz Scenariusze uwierzytelniania obsługiwane przez usługę Azure Files

Połączenia oparte na tożsamościach są obsługiwane tylko w usłudze Functions 4.x. Jeśli używasz wersji 1.x, musisz najpierw przeprowadzić migrację do wersji 4.x.

Następujące składniki obsługują połączenia oparte na tożsamościach:

Źródło połączenia Obsługiwane plany Dowiedz się więcej
Wyzwalacze i powiązania obiektów blob platformy Azure wszystkie Rozszerzenie azure Blobs w wersji 5.0.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Wyzwalacze i powiązania usługi Azure Queues wszystkie Rozszerzenie usługi Azure Queues w wersji 5.0.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Tabele platformy Azure (w przypadku korzystania z usługi Azure Storage) wszystkie Rozszerzenie Azure Tables w wersji 1.0.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Azure SQL Database wszystkie Łączenie aplikacji funkcji z usługą Azure SQL przy użyciu tożsamości zarządzanej i powiązań SQL
Wyzwalacze i powiązania usługi Azure Event Hubs wszystkie Rozszerzenie usługi Azure Event Hubs w wersji 5.0.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Wyzwalacze i powiązania usługi Azure Service Bus wszystkie Rozszerzenie usługi Azure Service Bus w wersji 5.0.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Powiązanie wyjściowe usługi Azure Event Grid wszystkie Rozszerzenie usługi Azure Event Grid w wersji 3.3.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Wyzwalacze i powiązania usługi Azure Cosmos DB wszystkie Rozszerzenie usługi Azure Cosmos DB w wersji 4.0.0 lub nowszej
Pakiet rozszerzeń w wersji 4.0.2 lub nowszej
Wyzwalacze i powiązania usługi Azure SignalR wszystkie Rozszerzenie usługi Azure SignalR w wersji 1.7.0 lub nowszej
Pakiet rozszerzeń w wersji 3.6.1 lub nowszej
Dostawca magazynu durable functions (Azure Storage) wszystkie Rozszerzenie Durable Functions w wersji 2.7.0 lub nowszej
Pakiet rozszerzeń w wersji 3.3.0 lub nowszej
Magazyn wymagany przez hosta ("AzureWebJobsStorage") wszystkie Nawiązywanie połączenia z magazynem hostów przy użyciu tożsamości

W przypadku hostowania w usłudze Azure Functions połączenia oparte na tożsamościach używają tożsamości zarządzanej. Tożsamość przypisana przez system jest używana domyślnie, chociaż tożsamości przypisanej przez użytkownika można określić za credential pomocą właściwości i clientID . Należy pamiętać, że konfigurowanie tożsamości przypisanej przez użytkownika przy użyciu identyfikatora zasobu nie jest obsługiwane. W przypadku uruchamiania w innych kontekstach, takich jak programowanie lokalne, tożsamość dewelopera jest używana, chociaż można to dostosować. Zobacz Programowanie lokalne z połączeniami opartymi na tożsamościach.

Udzielanie uprawnień tożsamości

Niezależnie od używanej tożsamości musi mieć uprawnienia do wykonywania zamierzonych akcji. W przypadku większości usług platformy Azure oznacza to, że musisz przypisać rolę w kontroli dostępu opartej na rolach platformy Azure przy użyciu wbudowanych lub niestandardowych ról, które zapewniają te uprawnienia.

Ważne

Niektóre uprawnienia mogą być uwidocznione przez usługę docelową, które nie są niezbędne dla wszystkich kontekstów. Jeśli to możliwe, przestrzegaj zasady najniższych uprawnień, udzielając tożsamości tylko wymaganych uprawnień. Jeśli na przykład aplikacja musi mieć możliwość odczytu tylko ze źródła danych, użyj roli, która ma uprawnienia tylko do odczytu. Niewłaściwe byłoby przypisanie roli, która umożliwia również zapisywanie w tej usłudze, ponieważ byłoby to nadmierne uprawnienie do operacji odczytu. Podobnie należy upewnić się, że przypisanie roli jest ograniczone tylko do zasobów, które należy odczytać.

Wybierz jedną z tych kart, aby dowiedzieć się więcej o uprawnieniach dla każdego składnika:

Musisz utworzyć przypisanie roli, które zapewnia dostęp do kontenera obiektów blob w czasie wykonywania. Role zarządzania, takie jak Właściciel , nie są wystarczające. W poniższej tabeli przedstawiono wbudowane role, które są zalecane podczas korzystania z rozszerzenia usługi Blob Storage w normalnej operacji. Aplikacja może wymagać dalszych uprawnień na podstawie zapisanego kodu.

Typ powiązania Przykładowe role wbudowane
Wyzwalacz Właściciel danych obiektu blob usługi Storage i współautordanych kolejki magazynu 1

Dodatkowe uprawnienia muszą być również przyznane połączeniu AzureWebJobsStorage.2
Powiązanie wejściowe Czytelnik danych obiektu blob usługi Storage
Powiązanie wyjściowe Właściciel danych obiektu blob usługi Storage

1 Wyzwalacz obiektu blob obsługuje błąd w wielu ponownych próbach, zapisując zatrute obiekty blob do kolejki na koncie magazynu określonym przez połączenie.

2 Połączenie AzureWebJobsStorage jest używane wewnętrznie dla obiektów blob i kolejek, które umożliwiają wyzwalacz. Jeśli jest skonfigurowany do korzystania z połączenia opartego na tożsamościach, wymaga dodatkowych uprawnień poza domyślnym wymaganiem. Wymagane uprawnienia są objęte rolami Właściciel danych obiektu blob usługi Storage, Współautor danych kolejki usługi Storage i Współautor konta magazynu. Aby dowiedzieć się więcej, zobacz Nawiązywanie połączenia z magazynem hostów przy użyciu tożsamości.

Typowe właściwości połączeń opartych na tożsamościach

Połączenie oparte na tożsamości dla usługi platformy Azure akceptuje następujące typowe właściwości, gdzie <CONNECTION_NAME_PREFIX> jest wartością właściwości connection w definicji wyzwalacza lub powiązania:

Właściwości Szablon zmiennej środowiskowej opis
Poświadczenia tokenu <CONNECTION_NAME_PREFIX>__credential Definiuje sposób uzyskiwania tokenu dla połączenia. To ustawienie powinno być ustawione na managedidentity wartość , jeśli wdrożona funkcja platformy Azure zamierza używać uwierzytelniania tożsamości zarządzanej. Ta wartość jest prawidłowa tylko wtedy, gdy tożsamość zarządzana jest dostępna w środowisku hostingu.
Client ID <CONNECTION_NAME_PREFIX>__clientId Gdy credential jest ustawiona managedidentitywartość , tę właściwość można ustawić, aby określić tożsamość przypisaną przez użytkownika do użycia podczas uzyskiwania tokenu. Właściwość akceptuje identyfikator klienta odpowiadający tożsamości przypisanej przez użytkownika do aplikacji. Jest to nieprawidłowe określenie zarówno identyfikatora zasobu, jak i identyfikatora klienta. Jeśli nie zostanie określona, zostanie użyta tożsamość przypisana przez system. Ta właściwość jest używana inaczej w lokalnych scenariuszach programowania, gdy credential nie należy ich ustawiać.
Identyfikator zasobu <CONNECTION_NAME_PREFIX>__managedIdentityResourceId Gdy credential jest ustawiona managedidentitywartość , tę właściwość można ustawić, aby określić identyfikator zasobu, który ma być używany podczas uzyskiwania tokenu. Właściwość akceptuje identyfikator zasobu odpowiadający identyfikatorowi zasobu tożsamości zarządzanej zdefiniowanej przez użytkownika. Nie można określić zarówno identyfikatora zasobu, jak i identyfikatora klienta. Jeśli żadna z nich nie zostanie określona, zostanie użyta tożsamość przypisana przez system. Ta właściwość jest używana inaczej w lokalnych scenariuszach programowania, gdy credential nie należy ich ustawiać.

Inne opcje mogą być obsługiwane dla danego typu połączenia. Zapoznaj się z dokumentacją składnika tworzącego połączenie.

Zmienne środowiskowe zestawu Azure SDK

Uwaga

Korzystanie ze zmiennych środowiskowych zestawu Azure SDK EnvironmentCredential nie jest zalecane ze względu na potencjalnie niezamierzony wpływ na inne połączenia. Nie są one również w pełni obsługiwane podczas wdrażania w usłudze Azure Functions.

Zmienne środowiskowe skojarzone z zestawem EnvironmentCredential Azure SDK można również ustawić, ale nie są one przetwarzane przez usługę Functions na potrzeby skalowania w planach zużycie. Te zmienne środowiskowe nie są specyficzne dla żadnego połączenia i będą stosowane jako domyślne, chyba że odpowiednia właściwość nie jest ustawiona dla danego połączenia. Jeśli na przykład AZURE_CLIENT_ID jest ustawiona, będzie ona używana tak, jakby <CONNECTION_NAME_PREFIX>__clientId została skonfigurowana. Jawne ustawienie <CONNECTION_NAME_PREFIX>__clientId spowoduje zastąpienie tej wartości domyślnej.

Programowanie lokalne z połączeniami opartymi na tożsamościach

Uwaga

Programowanie lokalne z połączeniami opartymi na tożsamościach wymaga wersji 4.0.3904 narzędzi Azure Functions Core Tools lub nowszej.

Po uruchomieniu projektu funkcji lokalnie powyższa konfiguracja informuje środowisko uruchomieniowe o użyciu lokalnej tożsamości dewelopera. Połączenie próbuje uzyskać token z następujących lokalizacji w następującej kolejności:

  • Lokalna pamięć podręczna udostępniona między aplikacjami firmy Microsoft
  • Bieżący kontekst użytkownika w programie Visual Studio
  • Bieżący kontekst użytkownika w programie Visual Studio Code
  • Bieżący kontekst użytkownika w interfejsie wiersza polecenia platformy Azure

Jeśli żadna z tych opcji nie powiedzie się, wystąpi błąd.

Twoja tożsamość może już mieć pewne przypisania ról względem zasobów platformy Azure używanych do programowania, ale te role mogą nie zapewniać niezbędnego dostępu do danych. Role zarządzania, takie jak Właściciel , nie są wystarczające. Sprawdź dokładnie, jakie uprawnienia są wymagane dla połączeń dla każdego składnika, i upewnij się, że zostały przypisane do siebie.

W niektórych przypadkach możesz określić użycie innej tożsamości. Można dodać właściwości konfiguracji dla połączenia, które wskazują alternatywną tożsamość na podstawie identyfikatora klienta i klucza tajnego klienta dla jednostki usługi Microsoft Entra. Ta opcja konfiguracji nie jest obsługiwana w przypadku hostowania w usłudze Azure Functions. Aby użyć identyfikatora i wpisu tajnego na komputerze lokalnym, zdefiniuj połączenie z następującymi dodatkowymi właściwościami:

Właściwości Szablon zmiennej środowiskowej opis
Identyfikator dzierżawy <CONNECTION_NAME_PREFIX>__tenantId Identyfikator dzierżawy (katalogu) firmy Microsoft.
Client ID <CONNECTION_NAME_PREFIX>__clientId Identyfikator klienta (aplikacji) rejestracji aplikacji w dzierżawie.
Klucz tajny klienta <CONNECTION_NAME_PREFIX>__clientSecret Wpis tajny klienta wygenerowany na potrzeby rejestracji aplikacji.

Oto przykład local.settings.json właściwości wymaganych do połączenia opartego na tożsamościach z obiektami blob platformy Azure:

{
  "IsEncrypted": false,
  "Values": {
    "<CONNECTION_NAME_PREFIX>__blobServiceUri": "<blobServiceUri>",
    "<CONNECTION_NAME_PREFIX>__queueServiceUri": "<queueServiceUri>",
    "<CONNECTION_NAME_PREFIX>__tenantId": "<tenantId>",
    "<CONNECTION_NAME_PREFIX>__clientId": "<clientId>",
    "<CONNECTION_NAME_PREFIX>__clientSecret": "<clientSecret>"
  }
}

Nawiązywanie połączenia z magazynem hostów przy użyciu tożsamości

Host usługi Azure Functions używa połączenia magazynu ustawionego w programie w AzureWebJobsStorage celu włączenia podstawowych zachowań, takich jak koordynowanie pojedynczego wykonywania wyzwalaczy czasomierza i domyślnego magazynu kluczy aplikacji. To połączenie można również skonfigurować do używania tożsamości.

Uwaga

Inne składniki w usłudze Functions korzystają z AzureWebJobsStorage domyślnych zachowań. Nie należy przenosić go do połączenia opartego na tożsamościach, jeśli używasz starszych wersji rozszerzeń, które nie obsługują tego typu połączenia, w tym wyzwalaczy i powiązań dla obiektów blob platformy Azure, usługi Event Hubs i rozszerzenia Durable Functions. AzureWebJobsStorage Podobnie jest używany do wdrażania artefaktów podczas korzystania z kompilacji po stronie serwera w systemie Linux Consumption, a jeśli to włączysz, konieczne będzie wdrożenie za pośrednictwem zewnętrznego pakietu wdrożeniowego.

Ponadto aplikacja funkcji może ponownie używać AzureWebJobsStorage innych połączeń magazynu w wyzwalaczach, powiązaniach i/lub kodzie funkcji. Przed zmianą tego połączenia z parametry połączenia upewnij się, że wszystkie zastosowania AzureWebJobsStorage programu są w stanie używać formatu połączenia opartego na tożsamościach.

Aby użyć połączenia opartego na tożsamości dla AzureWebJobsStorageprogramu , skonfiguruj następujące ustawienia aplikacji:

Ustawienie opis Przykładowa wartość
AzureWebJobsStorage__blobServiceUri Identyfikator URI płaszczyzny danych usługi obiektów blob konta magazynu przy użyciu schematu HTTPS. <https:// storage_account_name.blob.core.windows.net>
AzureWebJobsStorage__queueServiceUri Identyfikator URI płaszczyzny danych usługi kolejki konta magazynu przy użyciu schematu HTTPS. <https:// storage_account_name.queue.core.windows.net>
AzureWebJobsStorage__tableServiceUri Identyfikator URI płaszczyzny danych usługi tabeli konta magazynu przy użyciu schematu HTTPS. <https:// storage_account_name.table.core.windows.net>

Można również ustawić typowe właściwości połączeń opartych na tożsamościach.

Jeśli konfigurujesz AzureWebJobsStorage przy użyciu konta magazynu, które używa domyślnego sufiksu DNS i nazwy usługi dla globalnej platformy Azure, https://<accountName>.[blob|queue|file|table].core.windows.net możesz zamiast tego ustawić AzureWebJobsStorage__accountName nazwę konta magazynu. Punkty końcowe dla każdej usługi magazynu są wnioskowane dla tego konta. Nie działa to, gdy konto magazynu znajduje się w suwerennej chmurze lub ma niestandardowy system DNS.

Ustawienie opis Przykładowa wartość
AzureWebJobsStorage__accountName Nazwa konta magazynu, ważna tylko wtedy, gdy konto nie znajduje się w suwerennej chmurze i nie ma niestandardowego systemu DNS. Ta składnia jest unikatowa AzureWebJobsStorage dla innych połączeń opartych na tożsamościach i nie może być używana. <storage_account_name>

Należy utworzyć przypisanie roli, które zapewnia dostęp do konta magazynu "AzureWebJobsStorage" w czasie wykonywania. Role zarządzania, takie jak Właściciel , nie są wystarczające. Rola Właściciel danych obiektu blob usługi Storage obejmuje podstawowe potrzeby magazynu hostów usługi Functions — środowisko uruchomieniowe wymaga zarówno dostępu do odczytu, jak i zapisu do obiektów blob oraz możliwości tworzenia kontenerów. Kilka rozszerzeń używa tego połączenia jako domyślnej lokalizacji dla obiektów blob, kolejek i tabel, a te zastosowania mogą dodawać wymagania, jak wspomniano w poniższej tabeli. Może być konieczne dodatkowe uprawnienia, jeśli używasz polecenia "AzureWebJobsStorage" do innych celów.

Numer wewnętrzny Wymagane role Wyjaśnienie
Brak rozszerzenia (tylko host) Właściciel danych obiektu blob usługi Storage Służy do ogólnej koordynacji, domyślnego magazynu kluczy
Obiekty blob platformy Azure (tylko wyzwalacz) Wszystkie:
Współautor konta magazynu,
Właściciel danych obiektu blob usługi Storage,
Współautor danych kolejki usługi Storage
Wyzwalacz obiektu blob wewnętrznie używa kolejek platformy Azure i zapisuje paragony obiektów blob. Używa ona usługi AzureWebJobsStorage dla tych elementów, niezależnie od połączenia skonfigurowanego dla wyzwalacza.
Azure Event Hubs (tylko wyzwalacz) (brak zmiany z wymagania domyślnego)
Właściciel danych obiektu blob usługi Storage
Punkty kontrolne są utrwalane w obiektach blob przy użyciu połączenia AzureWebJobsStorage.
Wyzwalacz czasomierza (brak zmiany z wymagania domyślnego)
Właściciel danych obiektu blob usługi Storage
Aby zapewnić jedno wykonanie na zdarzenie, blokady są wykonywane z obiektami blob przy użyciu połączenia AzureWebJobsStorage.
Trwałe funkcje Wszystkie:
Współautor danych obiektu blob usługi Storage,
Współautor danych kolejki usługi Storage,
Współautor danych tabeli usługi Storage
Rozszerzenie Durable Functions używa obiektów blob, kolejek i tabel do koordynowania funkcji działania i konserwacji stanu aranżacji. Domyślnie używa połączenia AzureWebJobsStorage dla wszystkich tych elementów, ale można określić inne połączenie w konfiguracji rozszerzenia Durable Functions.

Raportowanie problemów

Produkt opis Łącze
Środowisko uruchomieniowe Host skryptów, wyzwalacze i powiązania, obsługa języków Zgłoś problem
Szablony Problemy z kodem dotyczące szablonu tworzenia Zgłoś problem
Portal Problem z interfejsem użytkownika lub środowiskiem Zgłoś problem

Repozytoria typu open source

Kod usługi Azure Functions jest typu open source i można znaleźć kluczowe składniki w tych repozytoriach GitHub:

Następne kroki

Aby uzyskać więcej informacji, zobacz następujące zasoby: