Szybki start: tworzenie funkcji języka C# na platformie Azure z poziomu wiersza polecenia
W tym artykule użyjesz narzędzi wiersza polecenia, aby utworzyć funkcję języka C#, która odpowiada na żądania HTTP. Po przetestowaniu kodu lokalnie należy wdrożyć go w środowisku bezserwerowym usługi Azure Functions.
W tym artykule opisano tworzenie funkcji wyzwalanej przez protokół HTTP działającej na platformie .NET 8 w izolowanym procesie roboczym. Aby uzyskać informacje o wersjach platformy .NET obsługiwanych dla funkcji języka C#, zobacz Obsługiwane wersje. Ten artykuł zawiera również wersję opartą na programie Visual Studio Code.
Ukończenie tego przewodnika Szybki start wiąże się z naliczeniem niewielkiej opłaty w wysokości kilku centów USD lub mniej na koncie platformy Azure.
Konfigurowanie środowiska lokalnego
Przed rozpoczęciem musisz mieć następujące elementy:
Jednym z następujących narzędzi do tworzenia zasobów platformy Azure:
Interfejs wiersza polecenia platformy Azure w wersji 2.4 lub nowszej.
Moduł Azure Az programu PowerShell w wersji 5.9.0 lub nowszej.
Potrzebujesz również konta platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Instalowanie podstawowych narzędzi usługi Azure Functions
Zalecany sposób instalowania narzędzi Core Tools zależy od systemu operacyjnego lokalnego komputera programistycznego.
Poniższe kroki umożliwiają zainstalowanie narzędzi Core Tools w wersji 4.x za pomocą Instalatora Windows (MSI). Aby uzyskać więcej informacji na temat innych instalatorów opartych na pakietach, zobacz plik readme narzędzi Core Tools.
Pobierz i uruchom instalatora narzędzi Core Tools na podstawie używanej wersji systemu Windows:
- Wersja 4.x — windows 64-bitowy (zalecane. Debugowanie programu Visual Studio Code wymaga 64-bitowej wersji).
- Wersja 4.x — windows 32-bitowy
Jeśli poprzednio użyto instalatora Windows (MSI) do zainstalowania narzędzi Core Tools w systemie Windows, przed zainstalowaniem najnowszej wersji należy odinstalować starą wersję z sekcji Dodaj usuń programy.
Tworzenie projektu funkcji lokalnej
W usłudze Azure Functions projekt funkcji jest kontenerem dla co najmniej jednej pojedynczej funkcji, która odpowiada na określony wyzwalacz. Wszystkie funkcje w projekcie współdzielą te same konfiguracje lokalne i hostujące. W tej sekcji utworzysz projekt funkcji zawierający jedną funkcję.
Uruchom następujące
func init
polecenie, aby utworzyć projekt funkcji w folderze o nazwie LocalFunctionProj z określonym środowiskiem uruchomieniowym:func init LocalFunctionProj --worker-runtime dotnet-isolated --target-framework net8.0
Przejdź do folderu projektu:
cd LocalFunctionProj
Ten folder zawiera różne pliki dla projektu, w tym pliki konfiguracji o nazwie local.settings.json i host.json. Ponieważ local.settings.json może zawierać wpisy tajne pobrane z platformy Azure, plik jest domyślnie wykluczony z kontroli źródła w pliku gitignore .
Dodaj funkcję do projektu przy użyciu następującego polecenia, gdzie
--name
argument jest unikatową nazwą funkcji (HttpExample), a--template
argument określa wyzwalacz funkcji (HTTP).func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
func new
tworzy plik kodu HttpExample.cs.
(Opcjonalnie) Sprawdzanie zawartości pliku
W razie potrzeby możesz przejść do sekcji Uruchamianie funkcji lokalnie i później zbadać zawartość pliku.
HttpExample.cs
HttpExample.cs zawiera metodęRun
, która odbiera dane żądania w zmiennej req
jako obiekt HttpRequest. Ten parametr jest ozdobiony atrybutem HttpTriggerAttribute w celu zdefiniowania zachowania wyzwalacza.
using System.Net;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace Company.Function
{
public class HttpExample
{
private readonly ILogger<HttpExample> _logger;
public HttpExample(ILogger<HttpExample> logger)
{
_logger = logger;
}
[Function("HttpExample")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.AuthLevelValue, "get", "post")] HttpRequest req)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");
return new OkObjectResult("Welcome to Azure Functions!");
}
}
}
Obiekt zwracany jest obiektem IActionResult zawierającym dane przekazane z powrotem do odpowiedzi HTTP.
Aby dowiedzieć się więcej, zobacz Wyzwalacze i powiązania HTTP usługi Azure Functions.
Lokalne uruchamianie funkcji
Uruchom funkcję, uruchamiając lokalny host środowiska uruchomieniowego usługi Azure Functions z folderu LocalFunctionProj :
func start
Na końcu danych wyjściowych powinny zostać wyświetlone następujące wiersze:
... Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample ...
Uwaga
Jeśli funkcja HttpExample nie jest wyświetlana jak pokazano powyżej, prawdopodobnie uruchomiono hosta spoza folderu głównego projektu. W takim przypadku użyj Ctrl+C, aby zatrzymać hosta, przejść do folderu głównego projektu i ponownie uruchomić poprzednie polecenie.
Skopiuj adres URL funkcji z tych danych wyjściowych
HttpExample
do przeglądarki i przejdź do adresu URL funkcji i powinien zostać wyświetlony komunikat Powitanie w usłudze Azure Functions .Gdy skończysz, użyj Ctrl+C i wybierz,
y
aby zatrzymać hosta funkcji.
Tworzenie pomocniczych zasobów platformy Azure dla funkcji
Przed wdrożeniem kodu funkcji na platformie Azure należy utworzyć trzy zasoby:
- Grupa zasobów, która jest kontenerem logicznym dla powiązanych zasobów.
- Konto magazynu, które służy do obsługi stanu i innych informacji o funkcjach.
- Aplikacja funkcji, która udostępnia środowisko do wykonywania kodu funkcji. Aplikacja funkcji mapuje na lokalny projekt funkcji i umożliwia grupowanie funkcji jako jednostki logicznej w celu łatwiejszego zarządzania, wdrażania i udostępniania zasobów.
Użyj następujących poleceń, aby utworzyć te elementy. Obsługiwane są zarówno interfejs wiersza polecenia platformy Azure, jak i program PowerShell.
Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:
az login
Polecenie az login powoduje zalogowanie się do konta platformy Azure.
Utwórz grupę zasobów o nazwie
AzureFunctionsQuickstart-rg
w wybranym regionie:az group create --name AzureFunctionsQuickstart-rg --location <REGION>
Polecenie az group create tworzy grupę zasobów. W powyższym poleceniu zastąp ciąg
<REGION>
regionem w pobliżu, używając dostępnego kodu regionu zwróconego z polecenia az account list-locations .Utwórz konto magazynu ogólnego przeznaczenia w grupie zasobów i regionie:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
Polecenie az storage account create tworzy konto magazynu.
W poprzednim przykładzie zastąp
<STORAGE_NAME>
ciąg nazwą odpowiednią dla Ciebie i unikatową w usłudze Azure Storage. Nazwy muszą zawierać od trzech do 24 znaków i tylko małe litery.Standard_LRS
określa konto ogólnego przeznaczenia, które jest obsługiwane przez funkcje.
Ważne
Konto magazynu służy do przechowywania ważnych danych aplikacji, czasami w tym samego kodu aplikacji. Należy ograniczyć dostęp z innych aplikacji i użytkowników do konta magazynu.
Utwórz aplikację funkcji na platformie Azure:
az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet-isolated --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>
Polecenie az functionapp create tworzy aplikację funkcji na platformie Azure.
W poprzednim przykładzie zastąp
<STORAGE_NAME>
ciąg nazwą konta użytego w poprzednim kroku i zastąp<APP_NAME>
ciąg globalnie unikatową nazwą odpowiednią dla Ciebie.<APP_NAME>
jest również domyślną domeną DNS aplikacji funkcji.To polecenie tworzy aplikację funkcji działającą w określonym środowisku uruchomieniowym języka w ramach planu zużycia usługi Azure Functions, która jest bezpłatna dla naliczanej ilości użycia w tym miejscu. Polecenie tworzy również skojarzone wystąpienie usługi aplikacja systemu Azure Insights w tej samej grupie zasobów, za pomocą której można monitorować aplikację funkcji i wyświetlać dzienniki. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions. Wystąpienie nie wiąże się z żadnymi kosztami do momentu jego aktywowania.
Wdrażanie projektu funkcji na platformie Azure
Po pomyślnym utworzeniu aplikacji funkcji na platformie Azure możesz przystąpić do wdrażania projektu funkcji lokalnych przy użyciu func azure functionapp publish
polecenia .
W folderze głównym projektu uruchom następujące func azure functionapp publish
polecenie:
func azure functionapp publish <APP_NAME>
W tym przykładzie zastąp <APP_NAME>
ciąg nazwą aplikacji. Pomyślne wdrożenie pokazuje wyniki podobne do następujących danych wyjściowych (obcięte dla uproszczenia):
... Getting site publishing info... Creating archive for current directory... Performing remote build for functions project. ... Deployment successful. Remote build succeeded! Syncing triggers... Functions in msdocs-azurefunctions-qs: HttpExample - [httpTrigger] Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
Wywoływanie funkcji na platformie Azure
Ponieważ funkcja używa wyzwalacza HTTP i obsługuje żądania GET, należy go wywołać, wysyłając żądanie HTTP do jego adresu URL. Najłatwiej jest to zrobić w przeglądarce.
Skopiuj pełny adres URL wywołania widoczny w danych wyjściowych polecenia publikowania na pasku adresu przeglądarki. Po przejściu do tego adresu URL przeglądarka powinna wyświetlić podobne dane wyjściowe, jak po uruchomieniu funkcji lokalnie.
Uruchom następujące polecenie, aby wyświetlić dzienniki przesyłania strumieniowego niemal w czasie rzeczywistym:
func azure functionapp logstream <APP_NAME>
W osobnym oknie terminalu lub w przeglądarce ponownie wywołaj funkcję zdalną. Pełny dziennik wykonywania funkcji na platformie Azure jest wyświetlany w terminalu.
Czyszczenie zasobów
Jeśli przejdziesz do następnego kroku i dodasz powiązanie wyjściowe kolejki usługi Azure Storage, zachowaj wszystkie zasoby na miejscu, gdy będziesz opierać się na tym, co zostało już zrobione.
W przeciwnym razie użyj następującego polecenia, aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby, aby uniknąć ponoszenia dalszych kosztów.
az group delete --name AzureFunctionsQuickstart-rg