Szybki start: tworzenie funkcji programu PowerShell na platformie Azure z poziomu wiersza polecenia
W tym artykule użyjesz narzędzi wiersza polecenia, aby utworzyć funkcję programu PowerShell, która odpowiada na żądania HTTP. Po przetestowaniu kodu lokalnie należy wdrożyć go w środowisku bezserwerowym usługi Azure Functions.
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.
Ten artykuł zawiera również wersję opartą na programie Visual Studio Code.
Przed rozpoczęciem musisz mieć następujące elementy:
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Jednym z następujących narzędzi do tworzenia zasobów platformy Azure:
Moduł Azure Az programu PowerShell w wersji 9.4.0 lub nowszej.
Interfejs wiersza polecenia platformy Azure w wersji 2.4 lub nowszej.
Zestaw SDK platformy .NET 6.0
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 dystrybucji Ubuntu/Debian Linux przy użyciu narzędzia APT . W przypadku innych dystrybucji systemu Linux zobacz plik readme narzędzi Core Tools.
Zainstaluj klucz GPG repozytorium pakietów firmy Microsoft, aby zweryfikować integralność pakietu:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
Skonfiguruj listę źródłową APT przed wykonaniem aktualizacji APT.
Ubuntu
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs 2>/dev/null)-prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
Debian
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs 2>/dev/null | cut -d'.' -f 1)/prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
/etc/apt/sources.list.d/dotnetdev.list
Sprawdź plik pod kątem jednego z odpowiednich ciągów wersji systemu Linux w poniższej tabeli:Dystrybucja systemu Linux Wersja Debian 12 bookworm
Debian 11 bullseye
Debian 10 buster
Debian 9 stretch
Ubuntu 22.04 jammy
Ubuntu 20.04 focal
Ubuntu 19.04 disco
Ubuntu 18.10 cosmic
Ubuntu 18.04 bionic
Ubuntu 17.04 zesty
Ubuntu 16.04/Linux Mint 18 xenial
Uruchom aktualizację źródłową APT:
sudo apt-get update
Zainstaluj pakiet Core Tools:
sudo apt-get install azure-functions-core-tools-4
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 --powershell
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 podfolder pasujący do nazwy funkcji zawierającej plik kodu odpowiedni dla wybranego języka projektu i pliku konfiguracji o nazwie function.json.
W razie potrzeby możesz przejść do sekcji Uruchamianie funkcji lokalnie i później zbadać zawartość pliku.
Run.ps1 definiuje skrypt funkcji wyzwalany zgodnie z konfiguracją w function.json.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$name = $Request.Query.Name
if (-not $name) {
$name = $Request.Body.Name
}
$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
if ($name) {
$body = "Hello, $name. This HTTP triggered function executed successfully."
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $body
})
W przypadku wyzwalacza HTTP funkcja odbiera dane żądania przekazane do parametru zdefiniowanego $Request
w function.json. Obiekt zwracany, zdefiniowany w Response
function.json, jest przekazywany do Push-OutputBinding
polecenia cmdlet jako odpowiedzi.
function.json to plik konfiguracji, który definiuje dane wejściowe i wyjściowe bindings
dla funkcji, w tym typ wyzwalacza.
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
}
]
}
Każde powiązanie wymaga kierunku, typu i unikatowej nazwy. Wyzwalacz HTTP ma powiązanie wejściowe typu httpTrigger
i powiązania wyjściowego typu http
.
Uruchom funkcję, uruchamiając lokalny host środowiska uruchomieniowego usługi Azure Functions z folderu LocalFunctionProj .
func start
Na końcu danych wyjściowych muszą pojawić się następujące wiersze:
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 HTTP z tych danych wyjściowych do przeglądarki i dołącz ciąg
?name=<YOUR_NAME>
zapytania , tworząc pełny adres URL, taki jakhttp://localhost:7071/api/HttpExample?name=Functions
. W przeglądarce powinien zostać wyświetlony komunikat odpowiedzi, który zwraca wartość ciągu zapytania. Terminal, w którym rozpoczęto projekt, pokazuje również dane wyjściowe dziennika podczas wysyłania żądań.Po zakończeniu naciśnij Ctrl + C i wpisz
y
, aby zatrzymać hosta 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 powershell --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 aprowizuje 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.
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
Ponieważ funkcja używa wyzwalacza HTTP, należy go wywołać, wysyłając żądanie HTTP do jego adresu URL w przeglądarce lub za pomocą narzędzia takiego jak curl.
Skopiuj pełny adres URL wywołania widoczny w danych wyjściowych polecenia publikowania na pasku adresu przeglądarki, dołączając parametr ?name=Functions
zapytania . Przeglądarka powinna wyświetlać 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.
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