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

Ebben a cikkben parancssori eszközökkel hoz létre egy TypeScript-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.

Fontos

A cikk tartalma a Node.js programozási modell választásától függően változik a lap tetején található választóban. A v4-modell általánosan elérhető, és úgy lett kialakítva, hogy rugalmasabb és intuitívabb felhasználói élményt nyújtson JavaScript- és TypeScript-fejlesztők számára. A migrálási útmutatóban további információt olvashat a v3 és a v4 közötti különbségekről.

Ennek a rövid útmutatónak a befejezése néhány USD cent vagy annál kisebb költséggel jár az Azure-fiókjában.

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

A helyi környezet konfigurálása

A kezdés előtt a következő előfeltételekkel kell rendelkeznie:

  • Node.js 14-es vagy újabb verzió.

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.

  • Győződjön meg arról, hogy a Core Tools 4.0.5382-es vagy újabb verzióját telepíti.

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. Egy megfelelő mappában futtassa az func init alábbi parancsot egy TypeScript Node.js v3-projekt létrehozásához az aktuális mappában:

    func init --typescript --model V3
    

    Ez a mappa mostantól különböző fájlokat tartalmaz a projekthez, 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.

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

index.ts

Az index.ts exportál egy függvényt, amely a function.json konfigurációja szerint aktiválódik.

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    context.log('HTTP trigger function processed a request.');
    const name = (req.query.name || (req.body && req.body.name));
    const responseMessage = name
        ? "Hello, " + name + ". This HTTP triggered function executed successfully."
        : "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.";

    context.res = {
        // status: 200, /* Defaults to 200 */
        body: responseMessage
    };

};

export default httpTrigger;

HTTP-eseményindító esetén a függvény a függvény.jsonban meghatározott HttpRequest típusú változóban reqfogadja a kérelemadatokat. A függvény.json függvényben $return definiált visszatérési objektum a válasz.

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": "req",
            "methods": [
                "get",
                "post"
            ]
        },
        {
            "type": "http",
            "direction": "out",
            "name": "res"
        }
    ]
}

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.

  1. Egy megfelelő mappában futtassa az func init alábbi parancsot egy TypeScript Node.js v4-projekt létrehozásához az aktuális mappában:

    func init --typescript
    

    Ez a mappa mostantól különböző fájlokat tartalmaz a projekthez, 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. A szükséges npm-csomagok a node_modules is telepítve vannak.

  2. 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 HttpExample.ts nevű fájlt az src/functions könyvtárban, amely tartalmazza a függvény kódját.

  3. Adja hozzá az Azure Storage kapcsolati adatait a local.settings.json webhelyen.

    {
        "Values": {       
            "AzureWebJobsStorage": "<Azure Storage connection information>",
            "FUNCTIONS_WORKER_RUNTIME": "node"
        }
    }
    
  4. (Nem kötelező) Ha többet szeretne megtudni egy adott függvényről, például HTTP-eseményindítóról, futtassa a következő parancsot:

    func help httptrigger
    

Függvény helyi futtatása

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

    npm install
    npm start
    
    npm start
    

    A kimenet vége felé a következő naplóknak kell megjelennie:

    Screenshot of terminal window output when running function locally.

    Megjegyzés:

    Ha a HttpExample nem jelenik meg a naplókban 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, keresse meg a projekt gyökérmappáját, és futtassa újra az előző parancsot.

  2. Másolja a függvény URL-címét HttpExample 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 a következőhöz hasonló üzenetet kell megjelenítenie Hello Functions:

    Result of the function run locally in the browser

    Az a terminál, amelyben elindította a projektet, a naplókimenetet is megjeleníti a kérések során.

  3. Ha elkészült, a Ctrl c billentyűkombinációval +állítsa le a függvény gazdagépét az y billentyűkombinációval.

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 node --runtime-version 18 --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. Javasoljuk, hogy a Node.js legújabb verzióját használja, amely jelenleg 18. A verziót a következő beállítással --runtime-version18adhatja meg: .

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

Mielőtt a Core Tools használatával üzembe helyezheti a projektet az Azure-ban, a TypeScript-forrásfájlokból éles üzemre kész JavaScript-fájlokat hozhat létre.

  1. A TypeScript-projekt üzembe helyezésre való előkészítéséhez használja az alábbi parancsot:

    npm run build
    
  2. A szükséges erőforrásokkal most már készen áll a helyi függvényprojekt üzembe helyezésére az Azure-beli függvényalkalmazásban a közzétételi paranccsal. Az alábbi példában cserélje le <APP_NAME> az alkalmazás nevét.

    func azure functionapp publish <APP_NAME>
    

    Ha a következő hibaüzenet jelenik meg: "Nem találja az alkalmazást ...", várjon néhány másodpercet, és próbálkozzon újra, mivel előfordulhat, hogy az Azure nem inicializálta teljesen az alkalmazást az előző az functionapp create parancs után.

    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?code=KYHrydo4GFe9y0000000qRgRJ8NdLFKpkakGJQfC3izYVidzzDN4gQ==
     

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