Kodowanie i testowanie usługi Azure Functions lokalnie

Chociaż możesz opracowywać i testować usługę Azure Functions w witrynie Azure Portal, wielu deweloperów preferuje lokalne środowisko programistyczne. W przypadku korzystania z usługi Functions korzystanie z ulubionego edytora kodu i narzędzi programistycznych do tworzenia i testowania funkcji na komputerze lokalnym staje się łatwiejsze. Funkcje lokalne mogą łączyć się z usługami platformy Azure na żywo i debugować je na komputerze lokalnym przy użyciu pełnego środowiska uruchomieniowego usługi Functions.

Ten artykuł zawiera linki do konkretnych środowisk deweloperskich dla preferowanego języka. Zawiera również pewne udostępnione wskazówki dotyczące programowania lokalnego, takie jak praca z plikiem local.settings.json.

Lokalne środowiska deweloperskie

Sposób opracowywania funkcji na komputerze lokalnym zależy od preferencji języka i narzędzi. Środowiska w poniższej tabeli obsługują programowanie lokalne:

Środowisko Języki opis
Visual Studio Code C# (proces)
C# (izolowany proces roboczy)
JavaScript
Program PowerShell
Python
Rozszerzenie usługi Azure Functions dla programu VS Code dodaje obsługę usługi Functions do programu VS Code. Wymaga narzędzi Core Tools. Obsługuje programowanie w systemach Linux, macOS i Windows w przypadku korzystania z wersji 2.x narzędzi Core Tools. Aby dowiedzieć się więcej, zobacz Tworzenie pierwszej funkcji przy użyciu programu Visual Studio Code.
Wiersz polecenia lub terminal C# (proces)
C# (izolowany proces roboczy)
JavaScript
Program PowerShell
Python
Narzędzia Azure Functions Core Tools udostępniają podstawowe środowisko uruchomieniowe i szablony do tworzenia funkcji, które umożliwiają programowanie lokalne. Wersja 2.x obsługuje programowanie w systemach Linux, macOS i Windows. Wszystkie środowiska korzystają z narzędzi Core Tools dla lokalnego środowiska uruchomieniowego usługi Functions.
Program Visual Studio C# (proces)
C# (izolowany proces roboczy)
Narzędzia usługi Azure Functions są uwzględnione w obciążeniu programistycznym platformy Azure programu Visual Studio, począwszy od programu Visual Studio 2019. Umożliwia kompilowanie funkcji w bibliotece klas i publikowanie .dll na platformie Azure. Zawiera narzędzia Core Tools do testowania lokalnego. Aby dowiedzieć się więcej, zobacz Tworzenie usługi Azure Functions przy użyciu programu Visual Studio.
Maven (różne) Java Archetyp narzędzia Maven obsługuje narzędzia Core Tools w celu umożliwienia tworzenia funkcji Języka Java. Wersja 2.x obsługuje programowanie w systemach Linux, macOS i Windows. Aby dowiedzieć się więcej, zobacz Create your first function with Java and Maven (Tworzenie pierwszej funkcji przy użyciu języków Java i Maven). Obsługuje również programowanie przy użyciu środowiska Eclipse i środowiska IntelliJ IDEA.

Uwaga

Ze względu na ograniczenia dotyczące edytowania kodu funkcji w witrynie Azure Portal należy opracowywać funkcje lokalnie i publikować projekt kodu w aplikacji funkcji na platformie Azure. Aby uzyskać więcej informacji, zobacz Ograniczenia programistyczne w witrynie Azure Portal

Każde z tych lokalnych środowisk deweloperskich umożliwia tworzenie projektów aplikacji funkcji i używanie wstępnie zdefiniowanych szablonów funkcji do tworzenia nowych funkcji. Każda z nich używa narzędzi Core Tools, dzięki czemu można testować i debugować funkcje względem rzeczywistego środowiska uruchomieniowego usługi Functions na własnej maszynie tak samo jak każda inna aplikacja. Możesz również opublikować projekt aplikacji funkcji z dowolnego z tych środowisk na platformę Azure.

Pliki projektów lokalnych

Katalog projektu usługi Functions zawiera następujące pliki w folderze głównym projektu, niezależnie od języka:

Nazwa pliku opis
host.json Aby dowiedzieć się więcej, zobacz dokumentację host.json.
local.settings.json Ustawienia używane przez narzędzia Core Tools podczas uruchamiania lokalnego, w tym ustawień aplikacji. Aby dowiedzieć się więcej, zobacz plik ustawień lokalnych.
.gitignore Zapobiega przypadkowemu opublikowaniu pliku local.settings.json w repozytorium Git. Aby dowiedzieć się więcej, zobacz plik ustawień lokalnych.
.vscode\extensions.json Ustawienia plik używany podczas otwierania folderu projektu w programie Visual Studio Code.

Inne pliki w projekcie zależą od języka i określonych funkcji. Aby uzyskać więcej informacji, zobacz przewodnik dla deweloperów dotyczący języka.

Plik ustawień lokalnych

Plik local.settings.json przechowuje ustawienia aplikacji i ustawienia używane przez lokalne narzędzia programistyczne. Ustawienia w pliku local.settings.json są używane tylko w przypadku lokalnego uruchamiania projektu. Podczas publikowania projektu na platformie Azure należy również dodać wszystkie wymagane ustawienia do ustawień aplikacji dla aplikacji funkcji.

Ważne

Ponieważ local.settings.json może zawierać wpisy tajne, takie jak parametry połączenia, nigdy nie należy przechowywać ich w repozytorium zdalnym. Narzędzia obsługujące funkcje zapewniają sposoby synchronizowania ustawień w pliku local.settings.json z ustawieniami aplikacji w aplikacji funkcji, do której wdrożono projekt.

Plik ustawień lokalnych ma następującą strukturę:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<language worker>",
    "AzureWebJobsStorage": "<connection-string>",
    "MyBindingConnection": "<binding-connection-string>",
    "AzureWebJobs.HttpExample.Disabled": "true"
  },
  "Host": {
    "LocalHttpPort": 7071,
    "CORS": "*",
    "CORSCredentials": false
  },
  "ConnectionStrings": {
    "SQLConnectionString": "<sqlclient-connection-string>"
  }
}

Te ustawienia są obsługiwane podczas lokalnego uruchamiania projektów:

Ustawienie opis
IsEncrypted Gdy to ustawienie ma wartość true, wszystkie wartości są szyfrowane przy użyciu klucza komputera lokalnego. Używane z func settings poleceniami. Wartość domyślna to false. Możesz zaszyfrować plik local.settings.json na komputerze lokalnym, gdy zawiera wpisy tajne, takie jak parametry połączenia usługi. Host automatycznie odszyfrowuje ustawienia podczas jego uruchamiania. Użyj polecenia przed próbą func settings decrypt odczytania ustawień zaszyfrowanych lokalnie.
Values Kolekcja ustawień aplikacji używanych podczas lokalnego uruchamiania projektu. Te pary klucz-wartość (ciąg-ciąg) odpowiadają ustawieniu aplikacji w aplikacji funkcji na platformie Azure, na przykład AzureWebJobsStorage. Wiele wyzwalaczy i powiązań ma właściwość odwołującą się do ustawienia aplikacji parametry połączenia, na przykład Connection dla wyzwalacza usługi Blob Storage. W przypadku tych właściwości potrzebne jest ustawienie aplikacji zdefiniowane w tablicy Values . Zobacz kolejną tabelę, aby zapoznać się z listą często używanych ustawień.
Wartości muszą być ciągami, a nie obiektami JSON ani tablicami. Nazwy ustawień nie mogą zawierać podwójnego podkreślenia (__) i nie powinny zawierać dwukropka (:). Podwójne podkreślenie znaków jest zarezerwowane przez środowisko uruchomieniowe, a dwukropek jest zarezerwowany do obsługi wstrzykiwania zależności.
Host Ustawienia w tej sekcji dostosuj proces hosta usługi Functions podczas lokalnego uruchamiania projektów. Te ustawienia są oddzielone od ustawień host.json, które mają zastosowanie również podczas uruchamiania projektów na platformie Azure.
LocalHttpPort Ustawia domyślny port używany podczas uruchamiania lokalnego hosta usługi Functions (func host start i func run). Opcja --port wiersza polecenia ma pierwszeństwo przed tym ustawieniem. Na przykład podczas uruchamiania w środowisku IDE programu Visual Studio można zmienić numer portu, przechodząc do okna "Właściwości projektu —> debugowanie" i jawnie określając numer portu w host start --port <your-port-number> poleceniu, które można podać w polu "Argumenty aplikacji".
CORS Definiuje źródła dozwolone dla współużytkowania zasobów między źródłami (CORS). Źródła są dostarczane jako lista rozdzielona przecinkami bez spacji. Wartość wieloznaczny (*) jest obsługiwana, co umożliwia żądania z dowolnego źródła.
CORSCredentials Gdy jest ustawiona wartość true, zezwala na withCredentials żądania.
ConnectionStrings Kolekcja. Nie używaj tej kolekcji dla parametry połączenia używanych przez powiązania funkcji. Ta kolekcja jest używana tylko przez struktury, które zazwyczaj pobierają parametry połączenia z ConnectionStrings sekcji pliku konfiguracji, takiego jak Entity Framework. ciągi Połączenie ion w tym obiekcie są dodawane do środowiska z typem dostawcy System.Data.SqlClient. Elementy w tej kolekcji nie są publikowane na platformie Azure z innymi ustawieniami aplikacji. Te wartości należy jawnie dodać do Connection strings kolekcji ustawień aplikacji funkcji. Jeśli tworzysz element SqlConnection w kodzie funkcji, zapisz wartość parametry połączenia z innymi połączeniami w aplikacji Ustawienia w portalu.

Następujące ustawienia aplikacji można uwzględnić w tablicy podczas uruchamiania lokalnego Values :

Ustawienie Wartości opis
AzureWebJobsStorage parametry połączenia konta magazynu lub
UseDevelopmentStorage=true
Zawiera parametry połączenia dla konta usługi Azure Storage. Wymagane w przypadku korzystania z wyzwalaczy innych niż HTTP. Aby uzyskać więcej informacji, zobacz dokumentację AzureWebJobsStorage .
Po zainstalowaniu emulatora Azurite lokalnie i ustawieniu AzureWebJobsStorageUseDevelopmentStorage=truena wartość , narzędzia Core Tools używają emulatora. Aby uzyskać więcej informacji, zobacz Emulator magazynu lokalnego.
AzureWebJobs.<FUNCTION_NAME>.Disabled true|false Aby wyłączyć funkcję podczas uruchamiania lokalnie, dodaj "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" do kolekcji, gdzie <FUNCTION_NAME> jest nazwą funkcji. Aby dowiedzieć się więcej, zobacz Jak wyłączyć funkcje w usłudze Azure Functions.
FUNCTIONS_WORKER_RUNTIME dotnet
dotnet-isolated
node
java
powershell
python
Wskazuje docelowy język środowiska uruchomieniowego usługi Functions. Wymagana dla wersji 2.x i nowszej środowiska uruchomieniowego usługi Functions. To ustawienie jest generowane dla projektu przez narzędzia Core Tools. Aby dowiedzieć się więcej, zobacz dokumentację FUNCTIONS_WORKER_RUNTIME .
FUNCTIONS_WORKER_RUNTIME_VERSION ~7 Wskazuje, że używasz programu PowerShell 7 podczas uruchamiania lokalnego. Jeśli nie zostanie ustawiona, zostanie użyty program PowerShell Core 6. To ustawienie jest używane tylko w przypadku uruchamiania lokalnego. Wersja środowiska uruchomieniowego programu PowerShell jest określana przez ustawienie konfiguracji lokacji po uruchomieniu powerShellVersion na platformie Azure, które można ustawić w portalu.

Synchronizowanie ustawień

Podczas lokalnego opracowywania funkcji wszystkie ustawienia lokalne wymagane przez aplikację muszą być również obecne w ustawieniach aplikacji funkcji, do której wdrożono kod. Może być również konieczne pobranie bieżących ustawień z aplikacji funkcji do projektu lokalnego. Chociaż możesz ręcznie skonfigurować ustawienia aplikacji w witrynie Azure Portal, następujące narzędzia umożliwiają również synchronizowanie ustawień aplikacji z ustawieniami lokalnymi w projekcie:

Wyzwalacze i powiązania

Podczas lokalnego opracowywania funkcji należy wziąć pod uwagę zachowania wyzwalacza i powiązania. W przypadku wyzwalaczy HTTP można po prostu wywołać punkt końcowy HTTP na komputerze lokalnym przy użyciu polecenia http://localhost/. W przypadku funkcji wyzwalanych przez protokół HTTP istnieje kilka opcji uruchamiania lokalnie:

  • Najprostszym sposobem testowania powiązań podczas programowania lokalnego jest użycie parametry połączenia przeznaczonych dla aktywnych usług platformy Azure. Usługi na żywo można kierować, dodając odpowiednie ustawienia parametry połączenia w Values tablicy w pliku local.settings.json. Gdy to zrobisz, lokalne wykonania podczas testowania wpływają na dane usługi na żywo. W związku z tym rozważ skonfigurowanie oddzielnych usług do użycia podczas programowania i testowania, a następnie przełączenie się do różnych usług podczas produkcji.
  • W przypadku wyzwalaczy opartych na magazynie można użyć lokalnego emulatora magazynu.
  • Funkcje wyzwalacza inne niż HTTP można uruchamiać ręcznie przy użyciu specjalnych punktów końcowych administratora. Aby uzyskać więcej informacji, zobacz Ręczne uruchamianie funkcji niezwolonej przez protokół HTTP.

Podczas testowania lokalnego należy uruchomić hosta dostarczonego przez narzędzia Core Tools (func.exe) lokalnie. Aby uzyskać więcej informacji, zobacz Podstawowe narzędzia usługi Azure Functions.

Emulator magazynu lokalnego

Podczas programowania lokalnego można użyć lokalnego emulatora usługi Azurite podczas testowania funkcji za pomocą powiązań usługi Azure Storage (Queue Storage, Blob Storage i Table Storage), bez konieczności nawiązywania połączenia z zdalnymi usługami magazynu. Rozwiązanie Azurite integruje się z programem Visual Studio Code i programem Visual Studio, a także można uruchomić je z poziomu wiersza polecenia przy użyciu narzędzia npm. Aby uzyskać więcej informacji, zobacz Use the Azurite emulator for local Azure Storage development (Używanie emulatora Azurite do lokalnego programowania w usłudze Azure Storage).

Następujące ustawienie w Values kolekcji pliku local.settings.json informuje lokalnego hosta usługi Functions o użyciu Azurite dla domyślnego AzureWebJobsStorage połączenia:

"AzureWebJobsStorage": "UseDevelopmentStorage=true"

Przy użyciu tej wartości ustawienia dowolny wyzwalacz lub powiązanie usługi Azure Storage, które jest używane AzureWebJobsStorage jako połączenie, łączy się z usługą Azurite podczas uruchamiania lokalnie. Należy pamiętać o tych kwestiach podczas korzystania z emulacji magazynu podczas wykonywania lokalnego:

  • Musisz mieć zainstalowaną i uruchomioną aplikację Azurite.
  • Przed opublikowaniem na platformie Azure należy przetestować rzeczywiste połączenie magazynu z usługami platformy Azure.
  • Podczas publikowania projektu nie należy publikować AzureWebJobsStorage ustawienia jako UseDevelopmentStorage=true. Na AzureWebJobsStorage platformie Azure ustawienie musi zawsze być parametry połączenia konta magazynu używanego przez aplikację funkcji. Aby uzyskać więcej informacji, zobacz AzureWebJobsStorage.

Następne kroki