Rychlý start: Vytvoření funkce v Azure z příkazového řádku

V tomto článku použijete místní nástroje příkazového řádku k vytvoření funkce, která reaguje na požadavky HTTP. Po místním ověření kódu ho nasadíte do plánu hostování Flex Consumption bez serveru ve službě Azure Functions.

Při dokončení tohoto rychlého startu vzniknou ve vašem účtu Azure náklady ve výši několika málo centů či méně.

Nezapomeňte vybrat upřednostňovaný vývojový jazyk v horní části článku.

Important

Podpora go pro Azure Functions je aktuálně ve verzi Public Preview. V předběžné verzi jsou aplikace funkcí v jazyce Go podporovány pouze v plánu Flex Consumption.

Prerequisites

  • Java 17 Developer Kit
    • Pokud používáte jinou podporovanou verzi Javy, musíte aktualizovat soubor pom.xml projektu.
    • Proměnná JAVA_HOME prostředí musí být nastavená na umístění instalace správné verze sady Java Development Kit (JDK).
  • Apache Maven 3.8.x
  • Rust nástrojový řetězec využívající rustup. Pomocí příkazu rustc --version zkontrolujte svou verzi.

Instalace nástrojů Azure Functions Core

Doporučený způsob instalace nástrojů Core Tools závisí na operačním systému místního vývojového počítače.

Následující kroky používají instalační službu systému Windows (MSI) k instalaci nástrojů Core Tools verze 4.x. Další informace o dalších instalačních programech založených na balíčcích najdete v souboru readme nástroje Core Tools.

Stáhněte a spusťte instalační program Core Tools na základě vaší verze Windows:

Pokud jste dříve použili instalační službu systému Windows (MSI) k instalaci nástrojů Core Tools ve Windows, měli byste před instalací nejnovější verze odinstalovat starou verzi z nástroje Přidat odebrat programy.

Návod

Pokud chcete nainstalovat Core Tools na subsystému Windows pro Linux (WSL), postupujte podle pokynů na kartě Linux.

Vytvoření a aktivace virtuálního prostředí

V vhodné složce spusťte následující příkazy pro vytvoření a aktivaci virtuálního prostředí s názvem .venv. Nezapomeňte použít některou z verzí Pythonu podporovaných službou Azure Functions.

python -m venv .venv
source .venv/bin/activate

Pokud Python nenainstaloval balíček venv do distribuce Linuxu, spusťte následující příkaz:

sudo apt-get install python3-venv

V tomto aktivovaném virtuálním prostředí spustíte všechny následující příkazy.

Vytvořte místní projekt kódu a funkci

Ve službě Azure Functions je projekt kódu aplikace, která obsahuje jednu nebo více jednotlivých funkcí, které každý reaguje na konkrétní aktivační událost. Všechny funkce v projektu sdílejí stejné konfigurace a nasazují se jako jednotka do Azure. V této části vytvoříte projekt kódu, který obsahuje jednu funkci.

  1. Spuštěním func init příkazu vytvořte projekt funkcí Go:

    func init MyGoFunctionApp --worker-runtime go
    

    Tento příkaz vytvoří složku projektu s názvem MyGoFunctionApp , která obsahuje následující soubory:

    Soubor Description
    host.json Konfigurace hostitele pro aplikaci funkcí
    local.settings.json Nastavení použitá při místním spuštění.
    main.go Vstupní bod s ukázkovou funkcí aktivovanou protokolem HTTP.
    go.mod Soubor modulu Go pro správu závislostí
    go.sum Soubor kontrolního součtu modulu Go
  2. Přejděte do složky projektu:

    cd MyGoFunctionApp
    
  3. Otevřete, main.go abyste zkontrolovali vygenerovaný kód. Obsahuje ukázkovou funkci aktivovanou protokolem HTTP:

    package main
    
    import (
        "log"
        "net/http"
    
        "github.com/azure/azure-functions-golang-worker/sdk"
        "github.com/azure/azure-functions-golang-worker/worker"
    )
    
    // HTTPTriggerHandler handles standard HTTP requests
    func HTTPTriggerHandler(w http.ResponseWriter, r *http.Request) {
        log.Printf("Processing HTTP Trigger for %s", r.URL.Path)
        w.WriteHeader(http.StatusOK)
        w.Write([]byte("Hello from Go Worker!"))
    }
    
    func main() {
        app := sdk.FunctionApp()
        app.HTTP("hello", HTTPTriggerHandler,
            sdk.WithMethods("GET", "POST"),
            sdk.WithAuth("anonymous"),
        )
        worker.Start(app)
    }
    

    Funkce Go používají standardní net/http typy (http.ResponseWriter a *http.Request) pro triggery HTTP. Funkce jsou registrovány v main() pomocí sady Go Worker SDK a funkcionálních voleb a nejsou potřeba žádné soubory function.json.

  1. V terminálu nebo příkazovém řádku spusťte tento func init příkaz a vytvořte projekt aplikace funkcí v aktuální složce:

    func init --worker-runtime dotnet-isolated 
    
  1. V terminálu nebo příkazovém řádku spusťte tento func init příkaz a vytvořte projekt aplikace funkcí v aktuální složce:

    func init --worker-runtime node --language javascript 
    
  1. V terminálu nebo příkazovém řádku spusťte tento func init příkaz a vytvořte projekt aplikace funkcí v aktuální složce:

    func init --worker-runtime powershell 
    
  1. V terminálu nebo příkazovém řádku spusťte tento func init příkaz a vytvořte projekt aplikace funkcí v aktuální složce:

    func init --worker-runtime python 
    
  1. V terminálu nebo příkazovém řádku spusťte tento func init příkaz a vytvořte projekt aplikace funkcí v aktuální složce:

    func init --worker-runtime node --language typescript 
    
  1. V terminálu nebo příkazovém řádku spusťte tento func init příkaz a vytvořte projekt aplikace funkcí v aktuální složce:

    func init --worker-runtime custom 
    
  1. V prázdné složce spusťte tento mvn příkaz, který vygeneruje projekt kódu z archetypu Azure Functions Maven:

    mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17
    

    Important

    • Pokud chcete funkce spouštět ve verzi Java 11, použijte -DjavaVersion=11. Další informace najdete v tématu Verze Javy.
    • Nastavte proměnnou JAVA_HOME prostředí na umístění instalace správné verze sady JDK a dokončete tento článek.
  2. Maven vás požádá o hodnoty potřebné k dokončení generování projektu při nasazení.
    Po zobrazení výzvy zadejte následující hodnoty:

    Prompt Value Description
    groupId com.fabrikam Hodnota, která jednoznačně identifikuje váš projekt ve všech projektech podle pravidel pojmenování balíčků pro Javu.
    artifactId fabrikam-functions Hodnota, která je názvem souboru JARu bez čísla verze.
    version 1.0-SNAPSHOT Zvolte výchozí hodnotu.
    package com.fabrikam Hodnota, která je balíčkem Java pro vygenerovaný kód funkce. Použijte výchozí hodnotu.
  3. Potvrďte zadáním Y nebo stisknutím klávesy Enter.

    Maven vytvoří soubory projektu v nové složce s názvem artifactId, který je fabrikam-functionsv tomto příkladu .

  4. Přejděte do složky projektu:

    cd fabrikam-functions
    

    V Function.java v adresáři projektu \src\main\java\com\fabrikam můžete zkontrolovat kód vygenerovaný šablonou pro novou funkci triggeru HTTP.

  1. Pomocí tohoto func new příkazu přidejte do projektu funkci:

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

    Do projektu se přidá nový soubor kódu. V tomto případě --name je argument jedinečným názvem vaší funkce (HttpExample) a --template argument určuje trigger HTTP.

Kořenová složka projektu obsahuje různé soubory projektu, včetně konfiguračních 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 .

Vytvoření a sestavení funkce

Soubor function.json ve složce HttpExample deklaruje funkci triggeru HTTP. Funkci dokončíte přidáním obslužné rutiny a jeho kompilací do spustitelného souboru.

  1. Stisknutím kombinace kláves Ctrl + Shift + ' nebo vyberte Nový terminál z nabídky Terminál a otevřete nový integrovaný terminál v editoru VS Code.

  2. V kořenovém adresáři aplikace funkcí (stejná složka jako host.json) inicializujte projekt Rust s názvem handler.

    cargo init --name handler
    
  3. V souboru Cargo.toml přidejte následující závislosti potřebné k dokončení tohoto rychlého startu. Příklad používá architekturu webového serveru warp .

    [dependencies]
    warp = "0.3"
    tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread"] }
    
  4. Do souboru src/main.rs přidejte následující kód a soubor uložte. Toto je vaše vlastní obslužná funkce v Rustu.

    use std::collections::HashMap;
    use std::env;
    use std::net::Ipv4Addr;
    use warp::{http::Response, Filter};
    
    #[tokio::main]
    async fn main() {
        let example1 = warp::get()
            .and(warp::path("api"))
            .and(warp::path("HttpExample"))
            .and(warp::query::<HashMap<String, String>>())
            .map(|p: HashMap<String, String>| match p.get("name") {
                Some(name) => Response::builder().body(format!("Hello, {}. This HTTP triggered function executed successfully.", name)),
                None => Response::builder().body(String::from("This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.")),
            });
    
        let port_key = "FUNCTIONS_CUSTOMHANDLER_PORT";
        let port: u16 = match env::var(port_key) {
            Ok(val) => val.parse().expect("Custom Handler port is not a number!"),
            Err(_) => 3000,
        };
    
        warp::serve(example1).run((Ipv4Addr::LOCALHOST, port)).await
    }
    
  5. Zkompilujte binární soubor pro vlastní obslužnou rutinu. Spustitelný soubor s názvem handler (handler.exe v systému Windows) se vytvoří v kořenové složce funkční aplikace.

    cargo build --release
    cp target/release/handler .
    

Nakonfigurujte aplikaci funkcí

Hostitel funkce musí být nakonfigurovaný tak, aby při spuštění spustil binární soubor vlastní obslužné rutiny.

  1. Otevřete host.json.

  2. V části customHandler.description nastavte hodnotu defaultExecutablePath na handler (v systému Windows ji nastavte na handler.exe).

  3. customHandler V části přidejte vlastnost s názvem enableForwardingHttpRequest a nastavte její hodnotu na true. U funkcí, které se skládají pouze z triggeru HTTP, toto nastavení zjednodušuje programování tím, že vám umožňuje pracovat s běžným požadavkem HTTP místo s datovou částí požadavku vlastní obslužné rutiny request payload.

  4. Potvrďte, že sekce customHandler vypadá jako v tomto příkladu. Uložte soubor.

    "customHandler": {
      "description": {
        "defaultExecutablePath": "handler",
        "workingDirectory": "",
        "arguments": []
      },
      "enableForwardingHttpRequest": true
    }
    

Aplikace Function App je nakonfigurována tak, aby při spuštění spustila spustitelný soubor vlastní obslužné rutiny.

Místní spuštění funkce

Ověřte novou funkci spuštěním projektu místně a voláním koncového bodu funkce.

  1. Pomocí tohoto příkazu spusťte místního hostitele modulu runtime Azure Functions v kořenové složce projektu:

    func start  
    
    npm install
    npm start
    
    mvn clean package  
    mvn azure-functions:run
    

    Na konci výstupu se zobrazí 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
     ...
    
     

    Na konci výstupu se zobrazí koncový bod HTTP pro vaši funkci:

     Functions:
    
             hello: [GET,POST] http://localhost:7071/api/hello
     
  2. Voláním koncového bodu funkce ověřte, že funguje:

    Zkopírujte adresu URL funkce HttpExample z tohoto výstupu do prohlížeče a přejděte na adresu URL funkce. Měli byste obdržet úspěšnou odpověď se zprávou "ahoj svět".

    Note

    Protože se autorizace přístupového klíče nevynucuje při místním spuštění, vrácená adresa URL funkce neobsahuje hodnotu přístupového klíče a k volání funkce ji nepotřebujete.

    Když je funkce spuštěná místně, otevřete prohlížeč a přejděte na následující adresu URL:

    http://localhost:7071/api/hello
    

    Měla by se zobrazit následující odpověď:

    Hello from Go Worker!
    
  3. Až budete hotovi, pomocí kláves Ctrl+C vyberte y a zastavte hostitele funkcí.

Vytvoření podpůrných prostředků Azure pro vaši funkci

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

  • Skupina prostředků, což je logický kontejner pro související prostředky.
  • Výchozí účet úložiště, který používá hostitel služby Functions k udržování stavu a dalších informací o vašich funkcích.
  • Spravovaná identita přiřazená uživatelem, kterou hostitel služby Functions používá k připojení k výchozímu účtu úložiště.
  • Aplikace funkcí, která poskytuje prostředí pro spouštění kódu funkce. Funkční aplikace se přiřazuje k vašemu místnímu projektu funkcí a umožňuje seskupování funkcí jako logické jednotky pro jednodušší správu, nasazení a sdílení prostředků.

Pomocí příkazů Azure CLI v těchto krocích vytvořte požadované prostředky.

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

    az login
    

    Příkaz az login vás přihlásí ke svému účtu Azure. Tento krok přeskočte při spuštění v Azure Cloud Shellu.

  2. Pokud jste to ještě neudělali, pomocí tohoto az extension add příkazu nainstalujte rozšíření Application Insights:

    az extension add --name application-insights
    
  3. Pomocí tohoto příkazu az group create vytvořte skupinu prostředků pojmenovanou AzureFunctionsQuickstart-rg ve zvolené oblasti:

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

    V tomto příkladu nahraďte <REGION> oblastí blízko vás, která podporuje plán Flex Consumption. Pomocí příkazu az functionapp list-flexconsumption-locations zobrazte seznam aktuálně podporovaných oblastí.

  4. Pomocí tohoto příkazu az storage account create 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" --allow-blob-public-access false --allow-shared-key-access false
    

    V tomto příkladu nahraďte <STORAGE_NAME> názvem, který je vhodný pro vás a jedinečný v Azure Storage. Názvy musí obsahovat jenom číslice se třemi až 24 znaky a malými písmeny. Standard_LRS určuje účet pro obecné účely, který služba Functions podporuje. K tomuto novému účtu je možné získat přístup pouze pomocí identit ověřených microsoftem Entra, které mají udělená oprávnění ke konkrétním prostředkům.

  5. Pomocí tohoto skriptu vytvořte spravovanou identitu přiřazenou uživatelem, parsujte vrácené vlastnosti JSON objektu pomocí jqa udělte Storage Blob Data Owner oprávnění ve výchozím účtu úložiště:

    output=$(az identity create --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" --location <REGION> \
    --query "{userId:id, principalId: principalId, clientId: clientId}" -o json)
    
    userId=$(echo $output | jq -r '.userId')
    principalId=$(echo $output | jq -r '.principalId')
    clientId=$(echo $output | jq -r '.clientId')
    
    storageId=$(az storage account show --resource-group "AzureFunctionsQuickstart-rg" --name <STORAGE_NAME> --query 'id' -o tsv)
    az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal \
    --role "Storage Blob Data Owner" --scope $storageId
    

    Pokud nemáte jq nástroj v místním prostředí Bash, je k dispozici ve službě Azure Cloud Shell. V tomto příkladu nahraďte <STORAGE_NAME> za výchozí název účtu úložiště a <REGION> za oblast.

    Příkaz az identity create vytvoří identitu s názvem func-host-storage-user. Vrácená hodnota principalId slouží k přiřazení oprávnění k této nové identitě ve výchozím účtu úložiště pomocí příkazu az role assignment create. Příkaz az storage account show slouží k získání ID účtu úložiště.

  6. Pomocí tohoto příkazu az functionapp create vytvořte aplikaci funkcí v Azure:

    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime dotnet-isolated --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime java --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime node --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime other --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    

    V tomto příkladu nahraďte tyto zástupné symboly příslušnými hodnotami:

    • <APP_NAME>: Globálně jedinečný název, který je pro vás vhodný. <APP_NAME> je také výchozí doména DNS pro aplikaci funkcí.
    • <STORAGE_NAME>: název účtu, který jste použili v předchozím kroku.
    • <REGION>: vaše aktuální oblast.
    • <LANGUAGE_VERSION>: Pokud je to možné, použijte stejnou podporovanou verzi sady jazyků , kterou jste ověřili místně.

    Tento příkaz vytvoří aplikaci funkcí, která běží ve vámi specifikovaném jazykovém runtime modulu na Linuxu v plánu Flex Consumption, který je zdarma pro úroveň využití, kterou zde vyčerpejte. Příkaz také vytvoří přidruženou instanci Aplikace Azure Insights ve stejné skupině prostředků, pomocí které můžete monitorovat spouštění aplikací funkcí a zobrazovat protokoly. Další informace naleznete v tématu Monitor Azure Functions. Žádné náklady nejsou účtovány, dokud instanci neaktivujete.

  7. Pomocí tohoto skriptu přidejte spravovanou identitu přiřazenou uživatelem do role Vydavatel metrik monitorování v instanci Application Insights:

    appInsights=$(az monitor app-insights component show --resource-group "AzureFunctionsQuickstart-rg" \
        --app <APP_NAME> --query "id" --output tsv)
    principalId=$(az identity show --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" \
        --query principalId -o tsv)
    az role assignment create --role "Monitoring Metrics Publisher" --assignee $principalId --scope $appInsights
    

    V tomto příkladu nahraďte <APP_NAME> názvem vaší aplikace funkcí. Příkaz az role assignment create přidá uživatele do role. ID prostředku vaší instance Application Insights a hlavní ID uživatele se získávají pomocí příkazu az monitor app-insights component show a příkazů az identity show.

Aktualizace nastavení aplikace

Pokud chcete hostiteli Functions povolit připojení k výchozímu účtu úložiště pomocí sdílených tajných kódů, nahraďte nastavení připojovacího AzureWebJobsStorage řetězce několika nastaveními, která mají předponu AzureWebJobsStorage__. Tato nastavení definují složité nastavení, které vaše aplikace používá k připojení k úložišti a Application Insights pomocí spravované identity přiřazené uživatelem.

  1. Pomocí tohoto skriptu získáte ID klienta spravované identity přiřazené uživatelem a použije ho k definování připojení spravovaných identit k úložišti i Application Insights:

    clientId=$(az identity show --name func-host-storage-user \
        --resource-group AzureFunctionsQuickstart-rg --query 'clientId' -o tsv)
    az functionapp config appsettings set --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" \
        --settings AzureWebJobsStorage__accountName=<STORAGE_NAME> \
        AzureWebJobsStorage__credential=managedidentity AzureWebJobsStorage__clientId=$clientId \
        APPLICATIONINSIGHTS_AUTHENTICATION_STRING="ClientId=$clientId;Authorization=AAD"
    

    V tomto skriptu nahraďte <APP_NAME> a <STORAGE_NAME> názvy vaší funkční aplikace a účtu úložiště, respektive.

  2. Spuštěním příkazu az functionapp config appsettings delete odeberte stávající AzureWebJobsStorage nastavení připojovacího řetězce, které obsahuje sdílený tajný klíč:

    az functionapp config appsettings delete --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" --setting-names AzureWebJobsStorage
    

    V tomto příkladu nahraďte <APP_NAME> názvy vaší funkční aplikace.

V tomto okamžiku se hostitel Functions může bezpečně připojit k účtu úložiště pomocí spravovaných identit místo sdílených tajných kódů. Kód projektu teď můžete nasadit do prostředků Azure.

Vytvoření podpůrných prostředků Azure pro vaši funkci

Než budete moct nasadit kód funkce do Azure, musíte vytvořit skupinu prostředků, účet úložiště a aplikaci funkcí. Pomocí příkazů Azure CLI v těchto krocích vytvořte požadované prostředky.

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

    az login
    

    Příkaz az login vás přihlásí ke svému účtu Azure. Tento krok přeskočte při spuštění v Azure Cloud Shellu.

  2. az group create Pomocí příkazu vytvořte skupinu prostředků s názvem AzureFunctionsQuickstart-rg ve zvolené oblasti:

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

    V tomto příkladu nahraďte <REGION> oblastí blízko vás, která podporuje plán Flex Consumption. az functionapp list-flexconsumption-locations Pomocí příkazu zobrazíte seznam aktuálně podporovaných oblastí.

  3. az storage account create Pomocí příkazu 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
    

    V tomto příkladu nahraďte <STORAGE_NAME> globálně jedinečným názvem. Názvy musí obsahovat tři až 24 znaků a pouze malá písmena a číslice.

  4. Vytvoření aplikace funkcí v Azure:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime go --runtime-version 1.0 --functions-version 4
    

    Nahraďte <APP_NAME> globálně jedinečným názvem a <STORAGE_NAME> názvem účtu, který jste použili v předchozím kroku. Tento příkaz také vytvoří přidruženou instanci Aplikace Azure Insights ve stejné skupině prostředků, pomocí které můžete monitorovat aplikaci funkcí a zobrazit protokoly. Další informace naleznete v tématu Monitor Azure Functions.

  5. Zakažte protokol HTTP/2 ve funkční aplikaci, což je během veřejné verze Preview pro Go vyžadováno:

    az resource update --resource-group AzureFunctionsQuickstart-rg --resource-type Microsoft.Web/sites --name <APP_NAME> --set properties.siteConfig.http20Enabled=false
    

Nasazení projektu funkce do Azure

Po úspěšném vytvoření aplikace funkcí v Azure jste nyní připraveni nasadit svůj projekt místních funkcí pomocí příkazu func azure functionapp publish.

  1. Ve složce kořenového projektu spusťte tento func azure functionapp publish příkaz:

    func azure functionapp publish <APP_NAME>
    

    V tomto příkladu nahraďte <APP_NAME> názvem vaší aplikace. Úspěšné nasazení ukazuje výsledky podobné následujícímu výstupu (zkráceně kvůli jednoduchosti):

     ...
    
     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
     
  2. V místním terminálu nebo příkazovém řádku spusťte tento příkaz a získejte hodnotu koncového bodu adresy URL, včetně přístupového klíče:

    func azure functionapp list-functions <APP_NAME> --show-keys
    

    V tomto příkladu znovu nahraďte <APP_NAME> názvem vaší aplikace.

  3. Zkopírujte vrácenou adresu URL a klíč koncového bodu, který použijete k vyvolání koncového bodu funkce.

Aktualizace souboru pom.xml

Po úspěšném vytvoření aplikace funkcí v Azure aktualizujte pom.xml soubor, aby se Maven mohl nasadit do nové aplikace. V opačném případě Maven během nasazování vytvoří novou sadu prostředků Azure.

  1. V Azure Cloud Shellu pomocí tohoto az functionapp show příkazu získejte adresu URL kontejneru nasazení a ID nové spravované identity přiřazené uživatelem:

    az functionapp show --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg  \
        --query "{userAssignedIdentityResourceId: properties.functionAppConfig.deployment.storage.authentication.userAssignedIdentityResourceId, \
        containerUrl: properties.functionAppConfig.deployment.storage.value}"
    

    V tomto příkladu nahraďte <APP_NAME> názvy vaší funkční aplikace.

  2. V kořenovém adresáři projektu otevřete soubor pom.xml v textovém editoru, vyhledejte properties prvek a aktualizujte tyto konkrétní hodnoty vlastností:

    Název vlastnosti Value
    java.version Použijte stejnou podporovanou verzi sady jazyků , kterou jste ověřili místně, například 17.
    azure.functions.maven.plugin.version 1.37.1
    azure.functions.java.library.version 3.1.0
    functionAppName Název vaší aplikace funkcí v Azure
  3. configuration Vyhledejte část oddílu azure-functions-maven-plugin a nahraďte ho tímto fragmentem XML:

    <configuration>
        <appName>${functionAppName}</appName>
        <resourceGroup>AzureFunctionsQuickstart-rg</resourceGroup>
        <pricingTier>Flex Consumption</pricingTier>
        <region>....</region>
        <runtime>
            <os>linux</os>
            <javaVersion>${java.version}</javaVersion>
        </runtime>
        <deploymentStorageAccount>...</deploymentStorageAccount>
        <deploymentStorageResourceGroup>AzureFunctionsQuickstart-rg</deploymentStorageResourceGroup>
        <deploymentStorageContainer>...</deploymentStorageContainer>
        <storageAuthenticationMethod>UserAssignedIdentity</storageAuthenticationMethod>
        <userAssignedIdentityResourceId>...</userAssignedIdentityResourceId>
        <appSettings>
            <property>
                <name>FUNCTIONS_EXTENSION_VERSION</name>
                <value>~4</value>
            </property>
        </appSettings>
    </configuration>
    
  4. V novém configuration prvku proveďte tyto konkrétní výměny výpustky (...) hodnot:

    Configuration Value
    region Kód oblasti vaší stávající aplikace funkcí, například eastus.
    deploymentStorageAccount Název vašeho účtu úložiště.
    deploymentStorageContainer Název sdílené složky nasazení, který následuje za hodnotou \ ve containerUrl, kterou jste získali.
    userAssignedIdentityResourceId Plně kvalifikovaný identifikátor prostředku vaší spravované identity, který jste získali.
  5. Uložte změny do souborupom.xml .

Teď můžete pomocí Mavenu nasadit projekt kódu do existující aplikace.

Nasazení projektu funkce do Azure

  1. Na příkazovém řádku spusťte tento příkaz:

    mvn clean package azure-functions:deploy
    
  2. Po úspěšném nasazení spusťte tento příkaz Core Tools a získejte hodnotu koncového bodu adresy URL, včetně přístupového klíče:

    func azure functionapp list-functions <APP_NAME> --show-keys
    

    V tomto příkladu znovu nahraďte <APP_NAME> názvem vaší aplikace.

  3. Zkopírujte vrácenou adresu URL a klíč koncového bodu, který použijete k vyvolání koncového bodu funkce.

Nasazení projektu funkce do Azure

Po úspěšném vytvoření aplikace funkcí v Azure jste připraveni nasadit projekt místních funkcí. Pomocí příkazu func azure functionapp publish nasaďte projekt do Azure:

func azure functionapp publish <APP_NAME>

Nahraďte <APP_NAME> názvem vaší funkční aplikace.

Vyvolání funkce v Azure

Vzhledem k tomu, že vaše funkce používá trigger HTTP a podporuje požadavky GET, vyvoláte ji tak, že na její adresu URL vytvoříte požadavek HTTP pomocí přístupového klíče na úrovni funkce. Nejjednodušší je spustit požadavek GET v prohlížeči.

Vložte adresu URL a přístupový klíč, který jste zkopírovali do adresního řádku prohlížeče.

Adresa URL koncového bodu by měla vypadat přibližně takto:

https://contoso-app.azurewebsites.net/api/httpexample?code=aabbccdd...

V takovém případě musíte v řetězci dotazu zadat také přístupový klíč při vytváření požadavku GET na adresu URL koncového bodu. Použití přístupového klíče se doporučuje omezit přístup z náhodných klientů. Při vytváření požadavku POST pomocí klienta HTTP byste měli místo toho zadat přístupový klíč v x-functions-key hlavičce.

Když přejdete na tuto adresu URL, prohlížeč by měl zobrazit podobný výstup jako při místním spuštění funkce.

Vyvolání funkce v Azure

Po dokončení nasazení otevřete v prohlížeči následující adresu URL a ověřte, že se funkce spouští v Azure:

https://<APP_NAME>.azurewebsites.net/api/hello

Měla by se zobrazit stejná Hello from Go Worker! odpověď, jakou jste viděli při místním spuštění funkce.

Vyčistěte zdroje

Pokud budete pokračovat k dalšímu kroku a přidáte výstupní vazbu fronty Azure Storage, ponechte všechny prostředky na místě, protože budete vycházet z toho, co jste už udělali.

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

az group delete --name AzureFunctionsQuickstart-rg

Vyčistěte zdroje

Pokud budete pokračovat k dalšímu kroku, ponechte všechny prostředky na místě při vytváření toho, co jste už vytvořili.

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

az group delete --name AzureFunctionsQuickstart-rg