Kodowanie i testowanie usługi Azure Functions lokalnie
Chociaż możesz opracowywać i testować Azure Functions w Azure Portal, wielu deweloperów preferuje lokalne środowisko deweloperskie. Korzystanie z usługi Functions przy użyciu 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 określonych ś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 języka i preferencji narzędzi. Środowiska w poniższej tabeli obsługują programowanie lokalne:
Środowisko | Języki | Opis |
---|---|---|
Visual Studio Code | C# (biblioteka klas) Proces izolowany w języku C# (.NET 5.0) JavaScript Program PowerShell Python |
Rozszerzenie Azure Functions dla VS Code dodaje obsługę usługi Functions do 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 Visual Studio Code. |
Wiersz polecenia lub terminal | C# (biblioteka klas) Proces izolowany w języku C# (.NET 5.0) JavaScript Program PowerShell Python |
Azure Functions Core Tools udostępnia 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. |
Visual Studio 2019 | C# (biblioteka klas) Proces izolowany w języku C# (.NET 5.0) |
Narzędzia Azure Functions są uwzględnione w obciążeniu programistycznym platformy Azurew wersji Visual Studio 2019 i nowszych. Umożliwia kompilowanie funkcji w bibliotece klas i publikowanie .dll na platformie Azure. Obejmuje narzędzia Core Tools do testowania lokalnego. Aby dowiedzieć się więcej, zobacz Develop Azure Functions using Visual Studio (Tworzenie Azure Functions przy użyciu Visual Studio). |
Maven (różne) | Java | Archetyp narzędzia Maven obsługuje narzędzia Core Tools w celu umożliwienia opracowywania 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ęzyka Java i narzędzia Maven). Obsługuje również programowanie przy użyciu środowiska Eclipse i środowiska IntelliJ IDEA. |
Ważne
Nie mieszaj programowania lokalnego z programowaniem portalu w tej samej aplikacji funkcji. Podczas tworzenia i publikowania funkcji z projektu lokalnego nie należy próbować obsługiwać ani modyfikować kodu projektu w portalu.
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 jak w przypadku każdej innej aplikacji. Możesz również opublikować projekt aplikacji funkcji z dowolnego z tych środowisk na platformie Azure.
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.
Ważne
Ponieważ plik local.settings.json może zawierać wpisy tajne, takie jak parametry połączenia, nigdy nie należy przechowywać go w repozytorium zdalnym. Narzędzia, które obsługują usługę Functions, 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 jest ustawione na true wartość , 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 po uruchomieniu. 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 parametrów połączenia, na przykład Connection dla wyzwalacza usługi Blob Storage. Dla 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 (: ). Znaki podwójnego podkreślenia są 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 Visual Studio IDE można zmienić numer portu, przechodząc do okna "właściwości Project —> 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 parametrów połączenia używanych przez powiązania funkcji. Ta kolekcja jest używana tylko przez struktury, które zwykle pobierają parametry połączenia z ConnectionStrings sekcji pliku konfiguracji, takiego jak Entity Framework. Parametry połączenia 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. Należy jawnie dodać te wartości do Connection strings kolekcji ustawień aplikacji funkcji. Jeśli tworzysz element SqlConnection w kodzie funkcji, należy przechowywać wartość parametrów połączenia z innymi połączeniami w aplikacji Ustawienia w portalu. |
Podczas uruchamiania lokalnego można uwzględnić następujące ustawienia aplikacji w tablicy Values
:
Ustawienie | Wartości | Opis |
---|---|---|
AzureWebJobsStorage |
Storage parametry połączenia konta lubUseDevelopmentStorage=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 .Jeśli masz zainstalowaną lokalnie Emulator Azurite i ustawiono ją AzureWebJobsStorage na UseDevelopmentStorage=true , narzędzia Core Tools używają emulatora. Emulator jest przydatny podczas programowania, ale przed wdrożeniem należy przetestować rzeczywiste połączenie magazynu. |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true |false |
Aby wyłączyć funkcję podczas uruchamiania lokalnie, dodaj "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true" element do kolekcji, gdzie <FUNCTION_NAME> jest nazwą funkcji. Aby dowiedzieć się więcej, zobacz Jak wyłączyć funkcje w Azure Functions. |
FUNCTIONS_WORKER_RUNTIME |
dotnet 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. |
Następne kroki
- Aby dowiedzieć się więcej na temat lokalnego tworzenia skompilowanych funkcji języka C# przy użyciu Visual Studio 2019, zobacz Develop Azure Functions using Visual Studio (Tworzenie Azure Functions przy użyciu Visual Studio).
- Aby dowiedzieć się więcej na temat lokalnego tworzenia funkcji przy użyciu VS Code na komputerze Mac, Linux lub Windows, zobacz artykuł Visual Studio Code wprowadzenie do preferowanego języka:
- Aby dowiedzieć się więcej na temat tworzenia funkcji z poziomu wiersza polecenia lub terminalu, zobacz Praca z narzędziami Azure Functions Core Tools.