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

Ebben a cikkben parancssori eszközökkel hoz létre egy PowerShell-függvényt, amely a HTTP-kérelmekre válaszol. A kódot a helyi tesztelését követően az Azure Functions kiszolgáló nélküli környezetében helyezheti üzembe.

A rövid útmutató elvégzése néhány cent (USD) vagy még kevesebb költséggel jár az Azure-fiókját illetően.

A cikknek van Egy Visual Studio Code-alapú verziója is.

A helyi környezet konfigurálása

Mielőtt hozzákezdene, a következőkre van szüksége:

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ó a csomagalapú telepítőkről: Core Tools readme.

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.

Helyi függvényprojekt létrehozása

Az Azure Functionsben a függvényprojekt egy tároló egy vagy több egyedi függvény számára, amelyek mindegyike egy adott eseményindítóra válaszol. A projekt összes függvénye ugyanazokkal a helyi és üzemeltetési konfigurációkkal rendelkezik. Ebben a szakaszban egy függvényprojektet hoz létre, amely egyetlen függvényt tartalmaz.

  1. Futtassa a parancsot az func init alábbiak szerint, ha egy függvényprojektet szeretne létrehozni egy LocalFunctionProj nevű mappában a megadott futtatókörnyezettel:

    func init LocalFunctionProj --powershell
    
  2. Navigáljon a projektmappába:

    cd LocalFunctionProj
    

    Ez a mappa a projekt különböző fájljait tartalmazza, beleértve a local.settings.json és a host.json nevű konfigurációs fájlokat. Mivel a local.settings.json tartalmazhat az Azure-ból letöltött titkos kulcsokat, a .gitignore fájl alapértelmezés szerint kizárja a forrásvezérlésből.

  3. Adjon hozzá egy függvényt a projekthez az alábbi paranccsal, ahol az --name argumentum a függvény egyedi neve (HttpExample), az --template argumentum pedig a függvény eseményindítóját (HTTP) adja meg.

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

    func newlétrehoz egy almappát, amely megfelel a függvény nevének, amely a projekt választott nyelvének megfelelő kódfájlt és egy function.json nevű konfigurációs fájlt tartalmaz.

(Nem kötelező) A fájl tartalmának vizsgálata

Ha szükséges, továbbléphet a függvény helyi futtatására, és később megvizsgálhatja a fájl tartalmát.

run.ps1

A run.ps1 a function.json konfigurációja szerint aktivált függvényszkriptet definiál.

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# Interact with query parameters or the body of the request.
$name = $Request.Query.Name
if (-not $name) {
    $name = $Request.Body.Name
}

$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."

if ($name) {
    $body = "Hello, $name. This HTTP triggered function executed successfully."
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $body
})

HTTP-eseményindító esetén a függvény megkapja a $Request function.jsonban definiált paramnak átadott kérésadatokat. A függvény.json fájlban definiált Response visszatérési objektumot a rendszer válaszként továbbítja a Push-OutputBinding parancsmagnak.

function.json

A function.json egy konfigurációs fájl, amely meghatározza a függvény bemenetét és kimenetét bindings , beleértve az eseményindító típusát is.

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    }
  ]
}

Minden kötéshez szükség van egy irányra, egy típusra és egy egyedi névre. A HTTP-eseményindító típus- httpTrigger és kimeneti kötéssel rendelkezik http.

Függvény helyi futtatása

  1. Futtassa a függvényt úgy, hogy elindítja a helyi Azure Functions futtatókörnyezet gazdagépét a LocalFunctionProj mappából.

    func start
    

    A kimenet vége felé a következő soroknak kell megjelennie:

    Screenshot of terminal window output when running function locally.

    Megjegyzés:

    Ha a HttpExample nem jelenik meg a fent látható módon, valószínűleg a projekt gyökérmappájából indította el a gazdagépet. Ebben az esetben a Ctrl C billentyűkombinációval +állítsa le a gazdagépet, nyissa meg a projekt gyökérmappáját, és futtassa újra az előző parancsot.

  2. Másolja a HTTP-függvény URL-címét ebből a kimenetből egy böngészőbe, és fűzze hozzá a lekérdezési sztringet ?name=<YOUR_NAME>, így a teljes URL-cím hasonló http://localhost:7071/api/HttpExample?name=Functionslesz. A böngészőnek egy válaszüzenetet kell megjelenítenie, amely visszaadja a lekérdezési sztring értékét. Az a terminál, amelyben elindította a projektet, a naplókimenetet is megjeleníti a kérések során.

  3. Ha végzett, nyomja le a Ctrl + C billentyűkombinációt, és írja be a függvénygazda y leállításához.

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, három erőforrást kell létrehoznia:

  • Egy erőforráscsoport, amely a kapcsolódó erőforrások logikai tárolója.
  • Storage-fiók, amely az állapot és a függvényekkel kapcsolatos egyéb információk fenntartására szolgá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.

Ezeket az elemeket az alábbi parancsokkal hozhatja létre. Az Azure CLI és a PowerShell is támogatott.

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

    az login
    

    Az az login parancs bejelentkezteti Az Azure-fiókjába.

  2. Hozzon létre egy erőforráscsoportot AzureFunctionsQuickstart-rg a kiválasztott régióban:

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

    Az az group create parancs létrehoz egy erőforráscsoportot. A fenti parancsban cserélje le <REGION> az Önhöz közeli régióra az az account list-locations parancsból visszaadott elérhető régiókódot.

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

    Az az storage account create parancs létrehozza a tárfiókot.

    Az előző példában cserélje le <STORAGE_NAME> az Ön számára megfelelő és az Azure Storage-ban egyedi nevet. 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.

Fontos

A tárfiók fontos alkalmazásadatok tárolására szolgál, néha magában az alkalmazáskódban is. Korlátoznia kell a hozzáférést más alkalmazásoktól és felhasználóktól a tárfiókhoz.

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

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

    Az az functionapp create parancs létrehozza a függvényalkalmazást az Azure-ban.

    Az előző példában cserélje le <STORAGE_NAME> az előző lépésben használt fiók nevére, és cserélje le <APP_NAME> az Ön számára megfelelő globálisan egyedi névre. Az <APP_NAME> egyben a függvényalkalmazás alapértelmezett DNS-tartományaként is szolgál,

    Ez a parancs létrehoz egy függvényalkalmazást, amely a megadott nyelvi futtatókörnyezetben fut az Azure Functions használati csomagjában, amely ingyenes az itt felmerülő használatért. A parancs egy társított Azure-alkalmazás Elemzések-példányt is kiépít 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. A példány nem jár költségekkel, amíg nem aktiválja.

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

Az alábbi példában cserélje le <APP_NAME> az alkalmazás nevét.

func azure functionapp publish <APP_NAME>

A közzétételi parancs 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

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

Mivel a függvény HTTP-eseményindítót használ, http-kérést küld az URL-címére a böngészőben, vagy egy olyan eszközzel, mint a curl.

Másolja a közzétételi parancs kimenetében látható teljes meghívási URL-címet egy böngészőcímsávra a lekérdezési paraméter ?name=Functionshozzáfűzésével. A böngészőnek hasonló kimenetet kell megjelenítenie, mint amikor helyileg futtatta a függvényt.

The output of the function run on Azure in a browser

Futtassa a következő parancsot a közel valós idejű streamelési naplók megtekintéséhez:

func azure functionapp logstream <APP_NAME> 

Egy külön terminálablakban vagy a böngészőben hívja újra a távoli függvényt. Az Azure-beli függvényvégrehajtás részletes naplója jelenik meg a terminálban.

Clean up resources

Ha folytatja a következő lépést , és hozzáad egy Azure Storage-üzenetsor kimeneti kötését, tartsa a helyén az összes erőforrást, 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

További lépések