Rychlý Start: vytvoření funkce jazyka C# v Azure z příkazového řádku

V tomto článku použijete nástroje příkazového řádku k vytvoření funkce jazyka C#, která reaguje na požadavky HTTP. Po místním testování kódu ho nasadíte do prostředí Azure Functions bez serveru.

Tento článek podporuje vytváření obou typů kompilovaných funkcí jazyka C#:

Model spouštění Description
V procesu Kód funkce se spouští ve stejném procesu jako hostitelský proces Functions. Podporuje .NET Core 3,1 i .NET 6,0. Další informace naleznete v tématu vývoj funkcí knihovny tříd C# pomocí Azure Functions.
Izolovaný proces Kód vaší funkce se spouští v samostatném pracovním procesu .NET. Podporuje rozhraní .NET 5,0 i .NET 6,0. Další informace najdete v tématu vývoj funkcí izolovaného procesu v jazyce C#.

Tento článek vytvoří funkci aktivovanou protokolem HTTP, která běží na platformě .NET 6,0. k dispozici je také Visual Studio Codeá verze tohoto článku.

Po dokončení tohoto rychlého startu dojde v účtu Azure k malým nákladům na několik centů nebo méně.

Konfigurace místního prostředí

Než začnete, musíte mít následující:

Potřebujete také účet Azure s aktivním předplatným. Vytvořte si účet zdarma.

Kontrola požadovaných součástí

ověřte požadavky, které závisí na tom, jestli pro vytváření prostředků azure používáte azure CLI nebo Azure PowerShell:

  • V terminálu nebo příkazovém okně spusťte příkaz func --version a ověřte, zda Azure Functions Core Tools jsou verze 4. x.

  • Spusťte dotnet --list-sdks a ověřte, zda jsou nainstalovány požadované verze.

  • Spusťte az --version a ověřte, jestli je verze Azure CLI 2,4 nebo novější.

  • Spusťte az login , abyste se přihlásili do Azure a ověřili aktivní předplatné.

Vytvoření projektu místní funkce

V Azure Functions je projekt funkce kontejnerem pro jednu nebo více jednotlivých funkcí, které každý reaguje na konkrétní Trigger. Všechny funkce v projektu sdílejí stejné místní konfigurace a konfigurace hostování. V této části vytvoříte projekt funkce, který obsahuje jedinou funkci.

  1. Spusťte func init příkaz následujícím způsobem a vytvořte projekt Functions ve složce s názvem LocalFunctionProj se zadaným modulem runtime:

    func init LocalFunctionProj --dotnet
    
  2. Přejděte do složky projektu:

    cd LocalFunctionProj
    

    Tato složka obsahuje různé soubory pro projekt, včetně konfigurací souborů s názvem Local. Settings. JSON a Host. JSON. Protože Local. Settings. JSON může obsahovat tajné kódy stažené z Azure, soubor je ve výchozím nastavení vyloučený ze správy zdrojového kódu v souboru . gitignore .

  3. Do projektu přidejte funkci pomocí následujícího příkazu, kde --name argument je jedinečný název vaší funkce (HttpExample) a --template argument určuje aktivační událost funkce (http).

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    func new Vytvoří soubor kódu HttpExample. cs.

Volitelné Kontrola obsahu souboru

V případě potřeby můžete přeskočit, aby se funkce spouštěla místně , a prohlédnout si obsah souboru později.

HttpExample. cs

Kód funkce vygenerovaný ze šablony závisí na typu zkompilovaného projektu C#.

HttpExample. cs obsahuje Run metodu, která přijímá data žádosti v req proměnné je HttpRequest , který je upravený pomocí HttpTriggerAttribute, který definuje chování triggeru.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;

namespace LocalFunctionProj
{
    public static class HttpExample
    {
        [FunctionName("HttpExample")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string name = req.Query["name"];

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            name = name ?? data?.name;

            return name != null
                ? (ActionResult)new OkObjectResult($"Hello, {name}")
                : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }
    }
}

Návratový objekt je ActionResult , který vrací zprávu odpovědi buď jako OkObjectResult (200), nebo jako BadRequestObjectResult (400).

Další informace najdete v tématu Azure Functions triggerů http a vazeb.

Místní spuštění funkce

  1. Spusťte funkci spuštěním místního hostitele modulu runtime Azure Functions ze složky LocalFunctionProj :

    func start
    

    Ke konci výstupu by se měly zobrazit následující řádky:

     ...
    
     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
     ...
    
     

    Poznámka

    Pokud se HttpExample nezobrazí, jak je uvedeno výše, pravděpodobně jste spustili hostitele mimo kořenovou složku projektu. V takovém případě pomocí kombinace kláves CTRL + + C zastavte hostitele, přejděte do kořenové složky projektu a spusťte předchozí příkaz znovu.

  2. Zkopírujte adresu URL vaší HttpExample funkce z tohoto výstupu do prohlížeče:

    Do adresy URL funkce přidejte řetězec dotazu ?name=<YOUR_NAME> , jako je třeba celá adresa URL http://localhost:7071/api/HttpExample?name=Functions . V prohlížeči by se měla zobrazit zpráva odpovědi, která vrací zpět hodnotu řetězce dotazu. Terminál, ve kterém jste spustili projekt, také zobrazuje výstup protokolu při provádění požadavků.

  3. Až budete hotovi, použijte CTRL + C a vyberte možnost y zastavit hostitele funkcí.

Vytvoření podpory prostředků Azure pro vaši funkci

Než budete moct nasadit kód funkce do Azure, musíte vytvořit tři prostředky:

  • Skupina prostředků, což je logický kontejner pro související prostředky.
  • účet Storage, který slouží k údržbě stavu a dalších informací o vašich funkcích.
  • Aplikace Function App, která poskytuje prostředí pro spuštění kódu vaší funkce. Aplikace Function App se mapuje na váš místní projekt funkce a umožňuje seskupit funkce jako logickou jednotku pro snadnější správu, nasazování a sdílení prostředků.

Tyto položky vytvoříte pomocí následujících příkazů. Podporují se rozhraní příkazového řádku Azure a PowerShellu.

  1. Pokud jste to ještě neudělali, přihlaste se k Azure:

    az login
    

    Příkaz AZ Login vás přihlásí k účtu Azure.

  2. Vytvořte skupinu prostředků s názvem AzureFunctionsQuickstart-rg ve zvolené oblasti:

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    Pomocí příkazu AZ Group Create se vytvoří skupina prostředků. Ve výše uvedeném příkazu nahraďte <REGION> oblastí poblíž a pomocí dostupného kódu oblasti vráceného pomocí příkazu AZ Account list-Locations .

  3. Vytvořte účet úložiště pro obecné účely ve vaší skupině prostředků a oblasti:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
    

    Příkaz AZ Storage Account Create vytvoří účet úložiště.

    V předchozím příkladu nahraďte <STORAGE_NAME> názvem, který je vhodný pro vás a jedinečný v Azure Storage. Názvy musí obsahovat tři až 24 znaků a jenom malá písmena. Standard_LRS Určuje účet pro obecné účely, který je podporován funkcemi.

  1. Vytvoření aplikace Function App v Azure:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime dotnet --functions-version 3 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    Příkazem AZ functionapp Create se vytvoří aplikace Function App v Azure.

    Poznámka

    Tento příkaz vytvoří aplikaci funkcí pomocí verze 3. x modulu runtime Azure Functions. func azure functionapp publishPříkaz, který spustíte později, aktualizuje aplikaci na verzi 4. x.

    V předchozím příkladu nahraďte <STORAGE_NAME> názvem účtu, který jste použili v předchozím kroku, a nahraďte <APP_NAME> globálně jedinečným názvem vhodným pro vás. <APP_NAME> je také výchozí doména DNS pro aplikaci funkcí.

    Tento příkaz vytvoří aplikaci Function App spuštěnou v zadaném jazykovém modulu runtime v rámci plánu Azure Functions spotřeby, který je zdarma pro množství využití, které se vám bude účtovat. příkaz taky zřídí přidruženou instanci služby Azure Application Insights ve stejné skupině prostředků, pomocí které můžete monitorovat aplikaci function app a zobrazovat protokoly. Další informace najdete v tématu monitorování Azure Functions. Instance nenese žádné náklady, dokud ji neaktivujete.

Nasazení projektu funkce do Azure

Po úspěšném vytvoření aplikace Function App v Azure jste teď připraveni nasadit svůj místní projekt Functions pomocí příkazu Func Azure functionapp Publish .

V následujícím příkladu nahraďte <APP_NAME> názvem vaší aplikace.

func azure functionapp publish <APP_NAME>

Příkaz publikovat zobrazuje výsledky podobné následujícímu výstupu (zkrácený pro zjednodušení):

...

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

Vyvolání funkce v Azure

Vzhledem k tomu, že funkce používá Trigger HTTP a podporuje žádosti GET, vyvoláte ji tak, že na adresu URL vytvoříte požadavek HTTP. K tomu je nejjednodušší v prohlížeči.

Zkopírujte úplnou adresu URL pro vyvolání zobrazenou ve výstupu příkazu publikovat do adresního řádku prohlížeče a přidejte parametr dotazu ?name=Functions . Když přejdete na tuto adresu URL, v prohlížeči by se měl zobrazit podobný výstup jako při spuštění funkce místně.

Spuštěním následujícího příkazu zobrazíte protokoly streamovánítéměř v reálném čase:

func azure functionapp logstream <APP_NAME> 

V samostatném okně terminálu nebo v prohlížeči zavolejte vzdálenou funkci znovu. Podrobný protokol provádění funkce v Azure je zobrazený v terminálu.

Vyčištění prostředků

Pokud budete pokračovat k dalšímu kroku a přidáte výstupní vazbu fronty Azure Storage, zachovejte všechny prostředky na místě, jak budete vytvářet informace o tom, co jste už provedli.

Jinak pomocí následujícího příkazu odstraňte skupinu prostředků a všechny její obsažené prostředky, abyste se vyhnuli vzniku dalších nákladů.

az group delete --name AzureFunctionsQuickstart-rg

Další kroky