Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
- Účet Azure s aktivním předplatným. Vytvořte si bezplatný účet.
-
Java 17 Developer Kit
- Pokud používáte jinou podporovanou verzi Javy, musíte aktualizovat soubor pom.xml projektu.
- Proměnná
JAVA_HOMEprostředí musí být nastavená na umístění instalace správné verze sady Java Development Kit (JDK).
- Apache Maven 3.8.x
Přejděte na verzi 1.24 nebo novější.
Azure Functions Core Tools verze
4.12nebo novější. Spusťtefunc --versiona ověřte svou nainstalovanou verzi.Azure CLI verze
2.87.0nebo novější. Spusťteaz versiona ověřte svou nainstalovanou verzi.
- Rust nástrojový řetězec využívající rustup. Pomocí příkazu
rustc --versionzkontrolujte svou verzi.
-
Procesor
jqJSON příkazového řádku, který se používá k analýze výstupu JSON a je k dispozici také v Azure Cloud Shellu.
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:
- v4.x – Windows 64bitová verze (doporučeno. Ladění editoru Visual Studio Code vyžaduje 64bitovou verzi.)
- v4.x – Windows 32bitová verze
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.
Spuštěním
func initpříkazu vytvořte projekt funkcí Go:func init MyGoFunctionApp --worker-runtime goTento příkaz vytvoří složku projektu s názvem
MyGoFunctionApp, která obsahuje následující soubory:Soubor Description host.jsonKonfigurace hostitele pro aplikaci funkcí local.settings.jsonNastavení použitá při místním spuštění. main.goVstupní bod s ukázkovou funkcí aktivovanou protokolem HTTP. go.modSoubor modulu Go pro správu závislostí go.sumSoubor kontrolního součtu modulu Go Přejděte do složky projektu:
cd MyGoFunctionAppOtevřete,
main.goabyste 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/httptypy (http.ResponseWritera*http.Request) pro triggery HTTP. Funkce jsou registrovány vmain()pomocí sady Go Worker SDK a funkcionálních voleb a nejsou potřeba žádné souboryfunction.json.
V terminálu nebo příkazovém řádku spusťte tento
func initpříkaz a vytvořte projekt aplikace funkcí v aktuální složce:func init --worker-runtime dotnet-isolated
V terminálu nebo příkazovém řádku spusťte tento
func initpříkaz a vytvořte projekt aplikace funkcí v aktuální složce:func init --worker-runtime node --language javascript
V terminálu nebo příkazovém řádku spusťte tento
func initpříkaz a vytvořte projekt aplikace funkcí v aktuální složce:func init --worker-runtime powershell
V terminálu nebo příkazovém řádku spusťte tento
func initpříkaz a vytvořte projekt aplikace funkcí v aktuální složce:func init --worker-runtime python
V terminálu nebo příkazovém řádku spusťte tento
func initpříkaz a vytvořte projekt aplikace funkcí v aktuální složce:func init --worker-runtime node --language typescript
V terminálu nebo příkazovém řádku spusťte tento
func initpříkaz a vytvořte projekt aplikace funkcí v aktuální složce:func init --worker-runtime custom
V prázdné složce spusťte tento
mvnpříkaz, který vygeneruje projekt kódu z archetypu Azure Functions Maven:mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17Important
- 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_HOMEprostředí na umístění instalace správné verze sady JDK a dokončete tento článek.
- Pokud chcete funkce spouštět ve verzi Java 11, použijte
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.fabrikamHodnota, která jednoznačně identifikuje váš projekt ve všech projektech podle pravidel pojmenování balíčků pro Javu. artifactId fabrikam-functionsHodnota, která je názvem souboru JARu bez čísla verze. version 1.0-SNAPSHOTZvolte výchozí hodnotu. package com.fabrikamHodnota, která je balíčkem Java pro vygenerovaný kód funkce. Použijte výchozí hodnotu. Potvrďte zadáním
Ynebo stisknutím klávesy Enter.Maven vytvoří soubory projektu v nové složce s názvem artifactId, který je
fabrikam-functionsv tomto příkladu .Přejděte do složky projektu:
cd fabrikam-functionsV Function.java v adresáři projektu \src\main\java\com\fabrikam můžete zkontrolovat kód vygenerovaný šablonou pro novou funkci triggeru HTTP.
Pomocí tohoto
func newpří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ě
--nameje argument jedinečným názvem vaší funkce (HttpExample) a--templateargument 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.
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.
V kořenovém adresáři aplikace funkcí (stejná složka jako host.json) inicializujte projekt Rust s názvem
handler.cargo init --name handlerV 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"] }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 }Zkompilujte binární soubor pro vlastní obslužnou rutinu. Spustitelný soubor s názvem
handler(handler.exev 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.
Otevřete host.json.
V části
customHandler.descriptionnastavte hodnotudefaultExecutablePathnahandler(v systému Windows ji nastavte nahandler.exe).customHandlerV části přidejte vlastnost s názvemenableForwardingHttpRequesta nastavte její hodnotu natrue. 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.Potvrďte, že sekce
customHandlervypadá 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.
Pomocí tohoto příkazu spusťte místního hostitele modulu runtime Azure Functions v kořenové složce projektu:
func startnpm install npm startmvn clean package mvn azure-functions:runNa 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/helloVoláním koncového bodu funkce ověřte, že funguje:
Zkopírujte adresu URL funkce
HttpExamplez 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/helloMěla by se zobrazit následující odpověď:
Hello from Go Worker!Až budete hotovi, pomocí kláves Ctrl+C vyberte
ya 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.
Pokud jste to ještě neudělali, přihlaste se k Azure:
az loginPříkaz
az loginvás přihlásí ke svému účtu Azure. Tento krok přeskočte při spuštění v Azure Cloud Shellu.Pokud jste to ještě neudělali, pomocí tohoto
az extension addpříkazu nainstalujte rozšíření Application Insights:az extension add --name application-insightsPomocí tohoto příkazu az group create vytvořte skupinu prostředků pojmenovanou
AzureFunctionsQuickstart-rgve 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í.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 falseV 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_LRSurč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.Pomocí tohoto skriptu vytvořte spravovanou identitu přiřazenou uživatelem, parsujte vrácené vlastnosti JSON objektu pomocí
jqa udělteStorage Blob Data Owneroprá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 $storageIdPokud nemáte
jqná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á hodnotaprincipalIdslouží k přiřazení oprávnění k této nové identitě ve výchozím účtu úložiště pomocí příkazuaz role assignment create. Příkazaz storage account showslouží k získání ID účtu úložiště.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.
-
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 $appInsightsV 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.
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.Spuštěním příkazu az functionapp config appsettings delete odeberte stávající
AzureWebJobsStoragenastavení 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 AzureWebJobsStorageV 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.
Pokud jste to ještě neudělali, přihlaste se k Azure:
az loginPříkaz
az loginvás přihlásí ke svému účtu Azure. Tento krok přeskočte při spuštění v Azure Cloud Shellu.az group createPomocí příkazu vytvořte skupinu prostředků s názvemAzureFunctionsQuickstart-rgve 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-locationsPomocí příkazu zobrazíte seznam aktuálně podporovaných oblastí.az storage account createPomocí 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_LRSV 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.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 4Nahraď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.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.
Ve složce kořenového projektu spusťte tento
func azure functionapp publishpří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/httpexampleV 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-keysV tomto příkladu znovu nahraďte
<APP_NAME>názvem vaší aplikace.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.
V Azure Cloud Shellu pomocí tohoto
az functionapp showpří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.V kořenovém adresáři projektu otevřete soubor pom.xml v textovém editoru, vyhledejte
propertiesprvek a aktualizujte tyto konkrétní hodnoty vlastností:Název vlastnosti Value java.versionPoužijte stejnou podporovanou verzi sady jazyků , kterou jste ověřili místně, například 17.azure.functions.maven.plugin.version1.37.1azure.functions.java.library.version3.1.0functionAppNameNázev vaší aplikace funkcí v Azure configurationVyhledejte část oddíluazure-functions-maven-plugina 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>V novém
configurationprvku proveďte tyto konkrétní výměny výpustky (...) hodnot:Configuration Value regionKód oblasti vaší stávající aplikace funkcí, například eastus.deploymentStorageAccountNázev vašeho účtu úložiště. deploymentStorageContainerNázev sdílené složky nasazení, který následuje za hodnotou \vecontainerUrl, kterou jste získali.userAssignedIdentityResourceIdPlně kvalifikovaný identifikátor prostředku vaší spravované identity, který jste získali. 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
Na příkazovém řádku spusťte tento příkaz:
mvn clean package azure-functions:deployPo ú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-keysV tomto příkladu znovu nahraďte
<APP_NAME>názvem vaší aplikace.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
Další kroky
Další kroky
Další informace o vývoji funkcí Jazyka Go najdete v následujících zdrojích informací: