Rövid útmutató: Függvény létrehozása az Azure-ban a parancssorból

Ebben a cikkben helyi parancssori eszközökkel hoz létre egy HTTP-kérelmekre reagáló függvényt. A kód helyi ellenőrzése után üzembe helyezi azt egy kiszolgáló nélküli Flex Consumption üzemeltetési csomagban az Azure Functionsben.

A gyorsindítás elvégzése néhány USD cent vagy még kevesebb költséggel járhat az Azure-fiókjában.

Ügyeljen arra, hogy a cikk tetején válassza ki az előnyben részesített fejlesztési nyelvet.

Important

A Azure Functions támogatása jelenleg nyilvános előzetes verzióban érhető el. Az előzetes verzióban a Go függvényalkalmazások csak a Rugalmas használat csomagban támogatottak.

Prerequisites

  • Go 1.24 vagy újabb.

  • Azure Functions Core Tools verzió 4.12 vagy újabb. Futtassa func --version a telepített verzió ellenőrzéséhez.

  • Azure CLI verzió 2.87.0 vagy újabb. Futtassa az version a telepített verzió ellenőrzéséhez.

  • Rust eszközkészlet a rustup használatával. Használja a rustc --version parancsot verziójának ellenőrzéséhez.

Az Azure Functions Core Tools telepítése

A Core Tools telepítésének ajánlott módja a helyi fejlesztőszámítógép operációs rendszerétől függ.

Az alábbi lépések windowsos telepítővel (MSI) telepítik a Core Tools v4.x-et. További információ más csomagalapú telepítőkről a Core Tools readme-ben található.

Töltse le és futtassa a Core Tools telepítőt a Windows-verzió alapján:

Ha korábban windowsos telepítőt (MSI) használt a Core Tools windowsos telepítéséhez, a legújabb verzió telepítése előtt el kell távolítania a régi verziót a Programok eltávolítása bővítményből.

Jótanács

A Core Tools linuxos Windows-alrendszerre (WSL) való telepítéséhez kövesse a Linux lapon található utasításokat.

Virtuális környezet létrehozása és aktiválása

Egy megfelelő mappában futtassa az alábbi parancsokat egy virtuális környezet .venvlétrehozásához és aktiválásához. Mindenképpen használja az Azure Functions által támogatott Python-verziókat .

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

Ha a Python nem telepítette a venv-csomagot a Linux-disztribúcióra, futtassa a következő parancsot:

sudo apt-get install python3-venv

Ebben az aktivált virtuális környezetben minden utána következő parancsot futtat.

Helyi kódprojekt és függvény létrehozása

Az Azure Functionsben a kódprojekt egy olyan alkalmazás, amely egy vagy több egyedi függvényt tartalmaz, amelyek mindegyike egy adott eseményindítóra válaszol. A projekt összes függvénye ugyanazokkal a konfigurációkkal rendelkezik, és egységként van üzembe helyezve az Azure-ban. Ebben a szakaszban egy kódprojektet hoz létre, amely egyetlen függvényt tartalmaz.

  1. Futtassa a func init parancsot egy Go-függvényprojekt létrehozásához:

    func init MyGoFunctionApp --worker-runtime go
    

    Ez a parancs létrehoz egy projektmappát, MyGoFunctionApp amely a következő fájlokat tartalmazza:

    File Description
    host.json A függvényalkalmazás gazdagépkonfigurációja.
    local.settings.json Helyi futtatáskor használt beállítások.
    main.go Belépési pont egy HTTP által aktivált mintafüggvénnyel.
    go.mod Go modulfájl függőségkezeléshez.
    go.sum Go modul ellenőrzőösszegfájlja.
  2. Keresse meg a projektmappát:

    cd MyGoFunctionApp
    
  3. Nyissa meg main.go a létrehozott kód áttekintéséhez. Egy HTTP által aktivált mintafüggvényt tartalmaz:

    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)
    }
    

    A Go függvények a HTTP-eseményindítók standard net/http típusait (http.ResponseWriter és *http.Request) használják. A függvények a Go Worker SDK és a funkcionális beállítások használatával a main() alatt vannak regisztrálva, és nincs szükség function.json fájlokra.

  1. Egy terminálban vagy parancssorban futtassa ezt a func init parancsot egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

    func init --worker-runtime dotnet-isolated 
    
  1. Egy terminálban vagy parancssorban futtassa ezt a func init parancsot egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

    func init --worker-runtime node --language javascript 
    
  1. Egy terminálban vagy parancssorban futtassa ezt a func init parancsot egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

    func init --worker-runtime powershell 
    
  1. Egy terminálban vagy parancssorban futtassa ezt a func init parancsot egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

    func init --worker-runtime python 
    
  1. Egy terminálban vagy parancssorban futtassa ezt a func init parancsot egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

    func init --worker-runtime node --language typescript 
    
  1. Egy terminálban vagy parancssorban futtassa ezt a func init parancsot egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:

    func init --worker-runtime custom 
    
  1. Egy üres mappában futtassa ezt a mvn parancsot a kódprojekt létrehozásához egy Azure Functions Maven-archetípusból:

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

    Important

    • Használja a -DjavaVersion=11 kapcsolót, ha a függvényeket Java 11-en szeretné futtatni. További információ: Java-verziók.
    • A cikk elvégzéséhez állítsa a JAVA_HOME környezeti változót a JDK megfelelő verziójának telepítési helyére.
  2. A Maven kéri azokat az értékeket, amelyek szükségesek a projekt generálásának befejezéséhez az üzembe helyezés során.
    Amikor a rendszer kéri, adja meg a következő értékeket:

    Prompt Value Description
    groupId com.fabrikam Olyan érték, amely egyedileg azonosítja a projektet az összes projektben, a Java csomagelnevezési szabályait követve.
    artifactId fabrikam-functions Olyan érték, amely a jar neve, verziószám nélkül.
    version 1.0-SNAPSHOT Válassza ki az alapértelmezett értéket.
    package com.fabrikam Egy érték, amely a létrehozott függvénykód Java-csomagja. Használja az alapértelmezettet.
  3. Írja be Y vagy nyomja le az Enter billentyűt a megerősítéshez.

    A Maven egy új mappában hozza létre a projektfájlokat az artifactId nevű mappában, amely ebben a példában az fabrikam-functions.

  4. Navigáljon a projektmappába:

    cd fabrikam-functions
    

    Az új HTTP trigger függvény sablon által létrehozott kódját a Function.java fájlban találja a \src\main\java\com\fabrikam projektkönyvtárban.

  1. Ezzel a func new paranccsal adhat hozzá egy függvényt a projekthez:

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

    A program hozzáad egy új kódfájlt a projekthez. Ebben az esetben az --name argumentum a függvény egyedi neve (HttpExample) és az --template argumentum egy HTTP-eseményindítót határoz meg.

A projekt gyökérmappája különböző fájlokat tartalmaz a projekthez, beleértve a local.settings.json és host.jsonnevű konfigurációs fájlokat. Mivel a local.settings.json fájl titkokat tartalmazhat, amelyeket az Azure-ból töltöttek le, a fájl alapértelmezés szerint a .gitignore fájlban ki van zárva a forrásvezérlésből.

A függvény létrehozása és felépítése

A HttpExample mappa function.json fájlja HTTP-eseményindító függvényt deklarál. A függvényt egy kezelő hozzáadásával és végrehajthatóvá alakításával hajthatja végre.

  1. Nyomja le a Ctrl + Shift+ billentyűkombinációt, vagy a Terminál menü Új terminál elemétválasztva nyisson meg egy új integrált terminált a VS Code-ban.

  2. A függvényalkalmazás gyökérmappájában (ugyanaz a mappa, mint host.json) inicializáljon egy Rust nevű handlerprojektet.

    cargo init --name handler
    
  3. A Cargo.toml fájlban adja hozzá a rövid útmutató elvégzéséhez szükséges alábbi függőségeket. A példa a warp webkiszolgáló-keretrendszert használja.

    [dependencies]
    warp = "0.3"
    tokio = { version = "1", features = ["rt", "macros", "rt-multi-thread"] }
    
  4. Az src/main.rs fájlban adja hozzá a következő kódot, és mentse a fájlt. Ez a te egyéni Rust-kezelőd.

    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. Állítson össze egy bináris fájlt az egyéni kezelőhöz. A függvényalkalmazás gyökérmappájában egy handler nevű végrehajtható fájl jön létre (handler.exe Windows rendszeren).

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

A függvényalkalmazás konfigurálása

A függvénygazdát úgy kell konfigurálni, hogy induláskor futtassa az egyéni kezelő binárisát.

  1. Nyissa meg a host.json.

  2. A customHandler.description szakaszban állítsa a(z) defaultExecutablePath értékét handler-re (Windows rendszeren állítsa handler.exe-ra).

  3. customHandler A szakaszban adjon hozzá egy elnevezett enableForwardingHttpRequest tulajdonságot, és állítsa az értékét a következőretrue: . A csak HTTP-eseményindítóból álló függvények esetében ez a beállítás leegyszerűsíti a programozást, mivel lehetővé teszi, hogy az egyéni kezelőkérés hasznos adatai helyett egy tipikus HTTP-kéréssel dolgozzon.

  4. Győződjön meg arról, hogy a customHandler szakasz az alábbi példához hasonlóan néz ki. Mentse a fájlt.

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

A függvényalkalmazás úgy van konfigurálva, hogy elindítsa az egyéni kezelőprogram futtatható fájlját.

A függvény helyi futtatása

Ellenőrizze az új függvényt a projekt helyi futtatásával és a függvényvégpont meghívásával.

  1. Ezzel a paranccsal indítsa el a helyi Azure Functions-futtatókörnyezet-gazdagépet a projektmappa gyökerében:

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

    A kimenet vége felé a következő sorok jelennek meg:

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

    A kimenet vége felé megjelenik a függvény HTTP-végpontja:

     Functions:
    
             hello: [GET,POST] http://localhost:7071/api/hello
     
  2. Hívja meg a függvényvégpontot annak ellenőrzéséhez, hogy működik-e:

    Másolja a függvény URL-címét HttpExample ebből a kimenetből egy böngészőbe, és keresse meg a függvény URL-címét. A "hello world" üzenettel sikeres választ kell kapnia.

    Note

    Mivel a hozzáférési kulcs engedélyezése helyi futtatáskor nincs kényszerítve, a visszaadott függvény URL-címe nem tartalmazza a hozzáférési kulcs értékét, és nincs rá szüksége a függvény meghívásához.

    Ha a függvény helyileg fut, nyisson meg egy böngészőt, és keresse meg a következő URL-címet:

    http://localhost:7071/api/hello
    

    A következő választ kell látnia:

    Hello from Go Worker!
    
  3. Ha elkészült, használja Ctrl+C, és állítsa le a függvénygazdát.

Támogató Azure-erőforrások létrehozása a függvényhez

Mielőtt üzembe helyezheti a függvénykódot az Azure-ban, létre kell hoznia az alábbi erőforrásokat:

  • Egy erőforráscsoport, amely a kapcsolódó erőforrások logikai tárolója.
  • Egy alapértelmezett Storage-fiók, amelyet a Functions-gazdagép használ az állapot és a függvényekkel kapcsolatos egyéb információk fenntartásához.
  • A felhasználó által kijelölt felügyelt identitás, amelyet a Functions-gazdagép az alapértelmezett tárfiókkal való csatlakozáshoz használ.
  • Egy függvényalkalmazás, amely a függvénykód végrehajtásához biztosítja a környezetet. A függvényalkalmazások leképezik a helyi függvényprojektet, és lehetővé teszi a függvények logikai egységként való csoportosítását az erőforrások egyszerűbb kezelése, üzembe helyezése és megosztása érdekében.

Az alábbi lépésekben az Azure CLI-parancsokkal hozhatja létre a szükséges erőforrásokat.

  1. Ha még nem tette meg, jelentkezzen be az Azure-ba:

    az login
    

    A az login parancs bejelentkezteti Önt az Azure-fiókjába. Hagyja ki ezt a lépést az Azure Cloud Shellben való futtatáskor.

  2. Ha még nem tette meg, a az extension add következő paranccsal telepítse az Application Insights bővítményt:

    az extension add --name application-insights
    
  3. Ezzel az az group create paranccsal hozzon létre egy, a kiválasztott régióban elnevezett AzureFunctionsQuickstart-rg erőforráscsoportot:

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

    Ebben a példában cserélje le <REGION> egy Önhöz közeli régióra, amely támogatja a Flex Consumption csomagot. Az az functionapp list-flexconsumption-locations paranccsal megtekintheti a jelenleg támogatott régiók listáját.

  4. Ezzel az az storage account create paranccsal hozzon létre egy általános célú tárfiókot az erőforráscsoportban és a régióban:

    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
    

    ** Ebben a példában cserélje le a <STORAGE_NAME>-t egy olyan névre, amely megfelelő Önnek és egyedi az Azure Storage-ban. A neveknek csak három-24 karakterből álló számokat és kisbetűket kell tartalmazniuk. Standard_LRS egy általános célú fiókot határoz meg, amelyet a Functions támogat. Ez az új fiók csak olyan Microsoft Entra által hitelesített identitások használatával érhető el, amelyek adott erőforrásokhoz kaptak engedélyeket.

  5. Ezzel a szkripttel hozzon létre egy felhasználó által hozzárendelt felügyelt identitást, elemezje az objektum visszaadott JSON-tulajdonságait a használatával jq, és adjon Storage Blob Data Owner engedélyeket az alapértelmezett tárfiókban:

    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
    

    Ha nincs meg a jq segédprogram a helyi Bash rendszerhéjában, az elérhető az Azure Cloud Shellben. Ebben a példában cserélje ki a <STORAGE_NAME> helyére az alapértelmezett tárfiók nevét, és a <REGION> helyére a régiót.

    Az az identity create parancs létrehoz egy identitást.func-host-storage-user A visszaadott principalId parancs használatával engedélyeket rendelhet ehhez az új identitáshoz az alapértelmezett tárfiókban az role assignment create . A az storage account show parancs a tárfiók azonosítójának lekérésére szolgál.

  6. Ezzel az az functionapp create paranccsal hozza létre a függvényalkalmazást az Azure-ban:

    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"
    

    Ebben a példában cserélje le ezeket a helyőrzőket a megfelelő értékekre:

    • <APP_NAME>: az Ön számára megfelelő globálisan egyedi név. Az <APP_NAME> egyben a függvényalkalmazás alapértelmezett DNS-tartományaként is szolgál,
    • <STORAGE_NAME>: az előző lépésben használt fiók neve.
    • <REGION>: az aktuális régió.
    • <LANGUAGE_VERSION>: használja ugyanazt a támogatott nyelvi verzióját, amelyet helyben tesztelt, amikor alkalmazható.

    Ez a parancs létrehoz egy függvényalkalmazást, amely a megadott linuxos nyelvi futtatókörnyezetben fut a Rugalmas használat csomagban, amely ingyenes az itt felmerülő használatért. A parancs egy társított Azure-alkalmazás Insights-példányt is létrehoz ugyanabban az erőforráscsoportban, amellyel figyelheti a függvényalkalmazások végrehajtását és megtekintheti a naplókat. További információ: Az Azure Functions monitorozása. Az instance nem okoz költségeket addig, amíg nem aktiválja.

  7. Ezzel a szkripttel hozzáadhatja a felhasználó által hozzárendelt felügyelt identitást a Monitorozási metrikák közzétevője szerepkörhöz az Application Insights-példányban:

    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
    

    Ebben a példában cserélje le a(z) <APP_NAME> elemet a függvényalkalmazás nevére. Az az role assignment create parancs hozzáadja a felhasználót a szerepkörhöz. Az Application Insights-példány erőforrás-azonosítóját és a felhasználó főazonosítóját az az monitor app-insights komponens show és az identity show parancsok használatával szerezheti be.

Alkalmazásbeállítások frissítése

Ha engedélyezni szeretné a Functions-gazdagép számára, hogy megosztott titkos kódokkal csatlakozzon az alapértelmezett tárfiókhoz, cserélje le a AzureWebJobsStorage kapcsolati sztringbeállítást több előtaggal ellátott beállításra AzureWebJobsStorage__. Ezek a beállítások egy összetett beállítást határoznak meg, amelyet az alkalmazás a tárolóhoz és az Application Insightshoz való csatlakozáshoz használ egy felhasználó által hozzárendelt felügyelt identitással.

  1. Ezzel a szkripttel lekérheti a felhasználó által hozzárendelt felügyelt identitás ügyfél-azonosítóját, és használatával definiálhat felügyelt identitáskapcsolatokat a Storage és az Application Insights számára is:

    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"
    

    Ebben a szkriptben cserélje le a <APP_NAME> és <STORAGE_NAME> helyőrzőket a függvényalkalmazás és a tárfiók nevére, ennek sorrendjében.

  2. Futtassa az az functionapp config appsettings delete parancsot a meglévő AzureWebJobsStorage kapcsolati karakterlánc beállítás eltávolításához, amely egy megosztott titkos kulcsot tartalmaz:

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

    Ebben a példában cserélje le <APP_NAME> a függvényalkalmazás nevére.

Ezen a ponton a Functions-gazdagép biztonságosan csatlakozhat a tárfiókhoz a megosztott titkos kódok helyett felügyelt identitások használatával. Most már üzembe helyezheti a projektkódot az Azure-erőforrásokban.

Támogató Azure-erőforrások létrehozása a függvényhez

Mielőtt üzembe helyezheti a függvénykódot Azure, létre kell hoznia egy erőforráscsoportot, egy tárfiókot és egy függvényalkalmazást. Az alábbi lépésekben az Azure CLI-parancsokkal hozhatja létre a szükséges erőforrásokat.

  1. Ha még nem tette meg, jelentkezzen be az Azure-ba:

    az login
    

    A az login parancs bejelentkezteti Önt az Azure-fiókjába. Hagyja ki ezt a lépést az Azure Cloud Shellben való futtatáskor.

  2. az group create A parancs használatával hozzon létre egy, a kiválasztott régióban elnevezett AzureFunctionsQuickstart-rg erőforráscsoportot:

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

    Ebben a példában cserélje le <REGION> egy Önhöz közeli régióra, amely támogatja a Flex Consumption csomagot. az functionapp list-flexconsumption-locations A parancs használatával megtekintheti az aktuálisan támogatott régiók listáját.

  3. az storage account create A paranccsal hozzon létre egy általános célú tárfiókot az erőforráscsoportban és a régióban:

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

    Ebben a példában cserélje le a(z) <STORAGE_NAME> elemet egy globálisan egyedi névre. A neveknek 3–24 karaktert kell tartalmazniuk, és csak kisbetűket és számokat kell tartalmazniuk.

  4. A függvényalkalmazás létrehozása az Azure-ban:

    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
    

    Cserélje le <APP_NAME> egy globálisan egyedi névre és <STORAGE_NAME> az előző lépésben használt fióknévre. Ez a parancs egy társított Azure-alkalmazás Insights-példányt is létrehoz ugyanabban az erőforráscsoportban, amellyel figyelheti a függvényalkalmazást, és megtekintheti a naplókat. További információ: Az Azure Functions monitorozása.

  5. Tiltsa le a HTTP/2-t a függvényalkalmazásban, amely a Go nyilvános előzetes verziójában szükséges:

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

A függvényprojekt üzembe helyezése az Azure-ban

Miután sikeresen létrehozta a függvényalkalmazást az Azure-ban, készen áll a helyi függvényprojekt üzembe helyezésére a func azure functionapp publish parancs használatával.

  1. A gyökérprojekt mappájában futtassa ezt a func azure functionapp publish parancsot:

    func azure functionapp publish <APP_NAME>
    

    Ebben a példában cserélje le a <APP_NAME> karaktert az alkalmazás nevére. A sikeres üzembe helyezés az alábbi kimenethez hasonló eredményeket jelenít meg (az egyszerűség kedvéért csonkolt):

     ...
    
     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. A helyi terminálban vagy parancssorban futtassa ezt a parancsot az URL-végpont értékének lekéréséhez, beleértve a hozzáférési kulcsot is:

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

    Ebben a példában ismét cserélje le a <APP_NAME> elemet az alkalmazása nevére.

  3. Másolja ki a visszaadott végpont URL-címét és kulcsát, amelyet a függvényvégpont meghívásához használ.

A pom.xml fájl frissítése

Miután sikeresen létrehozta a függvényalkalmazást az Azure-ban, frissítse a pom.xml fájlt, hogy a Maven üzembe helyezhesse az új alkalmazásban. Ellenkező esetben a Maven új Azure-erőforrásokat hoz létre az üzembe helyezés során.

  1. Az Azure Cloud Shellben ezzel a az functionapp show paranccsal szerezheti be az üzembehelyezési tároló URL-címét és azonosítóját az új, felhasználó által hozzárendelt felügyelt identitáshoz:

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

    Ebben a példában cserélje le <APP_NAME> a függvényalkalmazás nevére.

  2. A projekt gyökérkönyvtárában nyissa meg a pom.xml fájlt egy szövegszerkesztőben, keresse meg az properties elemet, és frissítse az alábbi tulajdonságértékeket:

    Tulajdonság megnevezése Value
    java.version Használja ugyanazt a támogatott nyelvi veremverziót , amelyet helyileg ellenőrzött, például 17.
    azure.functions.maven.plugin.version 1.37.1
    azure.functions.java.library.version 3.1.0
    functionAppName A függvény-alkalmazás neve az Azure-ban.
  3. Keresse meg a configuration szakaszt azure-functions-maven-plugin , és cserélje le erre az XML-töredékre:

    <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. Az új configuration elemben hajtsa végre az ellipszis (...) értékeinek konkrét cseréjét.

    Configuration Value
    region A meglévő függvényalkalmazás régiókódja, például eastus.
    deploymentStorageAccount A tárfiók neve.
    deploymentStorageContainer Az üzembe helyezési megosztás neve, amely a megszerzett \ értéket követi containerUrl után.
    userAssignedIdentityResourceId A felügyelt identitásod teljes erőforrás-azonosítója, amelyet beszereztél.
  5. Mentse a módosításokat a pom.xml fájlba.

Mostantól a Maven használatával üzembe helyezheti a kódprojektet a meglévő alkalmazásban.

A függvényprojekt üzembe helyezése az Azure-ban

  1. A parancssorból futtassa a következő parancsot:

    mvn clean package azure-functions:deploy
    
  2. Az üzembe helyezés sikerességét követően futtassa ezt a Core Tools parancsot az URL-végpont értékének lekéréséhez, beleértve a hozzáférési kulcsot is:

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

    Ebben a példában ismét cserélje le a <APP_NAME> elemet az alkalmazása nevére.

  3. Másolja ki a visszaadott végpont URL-címét és kulcsát, amelyet a függvényvégpont meghívásához használ.

A függvényprojekt üzembe helyezése az Azure-ban

Miután sikeresen létrehozta a függvényalkalmazást Azure, készen áll a helyi függvényprojekt üzembe helyezésére. A func azure functionapp publish paranccsal helyezze üzembe a projektet Azure:

func azure functionapp publish <APP_NAME>

Cserélje le <APP_NAME> a függvényalkalmazás nevére.

A függvény meghívása az Azure-ban

Mivel a függvény HTTP-eseményindítót használ, és támogatja a GET kéréseket, a függvényszintű hozzáférési kulccsal http-kérést kell küldenie az URL-címére. A GET-kérések böngészőben való végrehajtása a legegyszerűbb.

Illessze be a böngésző címsorába másolt URL-címet és hozzáférési kulcsot.

A végpont URL-címének a következő példához hasonlóan kell kinéznie:

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

Ebben az esetben meg kell adnia egy hozzáférési kulcsot is a lekérdezési sztringben, amikor GET kérést küld a végpont URL-címére. A hozzáférési kulcs használata ajánlott a véletlenszerű ügyfelek hozzáférésének korlátozásához. HA POST-kérést küld HTTP-ügyféllel, ehelyett a fejlécben kell megadnia a x-functions-key hozzáférési kulcsot.

Ha erre az URL-címre lép, a böngészőnek hasonló kimenetet kell megjelenítenie, mint a függvény helyi futtatásakor.

A függvény meghívása az Azure-ban

Az üzembe helyezés befejezése után nyissa meg a következő URL-címet egy böngészőben annak ellenőrzéséhez, hogy a függvény Azure fut-e:

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

Ugyanazt Hello from Go Worker! a választ kell látnia, amelyet a függvény helyi futtatásakor látott.

Erőforrások tisztítása

Ha folytatja a következő lépésre, és hozzáad egy Azure Storage-üzenetsor kimeneti kötést, tartsa az összes erőforrást a helyén, miközben a már elvégzett feladatokra épít.

Ellenkező esetben a következő paranccsal törölje az erőforráscsoportot és annak összes benne foglalt erőforrását, hogy elkerülje a további költségek felmerülését.

az group delete --name AzureFunctionsQuickstart-rg

Erőforrások tisztítása

Ha folytatja a következő lépést, tartsa a helyén az összes erőforrást, miközben a már létrehozottakra épít.

Ellenkező esetben a következő paranccsal törölje az erőforráscsoportot és annak összes benne foglalt erőforrását, hogy elkerülje a további költségek felmerülését.

az group delete --name AzureFunctionsQuickstart-rg

Következő lépések

A Go-függvények fejlesztésével kapcsolatos további információkért tekintse meg a következő forrásokat: