3. rész: Példa külső API-implementációra

Előző rész: Hitelesítési követelmények

A példaforgatókönyvben a fő alkalmazás egy külső API-t használ, amely hozzáférési kulccsal van védve. Ez a szakasz a Azure Functions használó API-t mutatja be, de ugyanazok az alapelvek érvényesek az API implementálásának módjától és helyszínétől függetlenül, függetlenül attól, hogy az alkalmazást egy másik felhőszolgáltatón vagy egy hagyományos webkiszolgálón üzemelteti.

A fő szempont az, hogy a védett végpontra irányuló ügyfélkéréseknek tartalmazniuk kell a hozzáférési kulcsot, amelyet az alkalmazásnak biztonságosan kell kezelnie. Ez a szakasz áttekintést nyújt arról, hogyan implementálhat egy ilyen API-t az Azure Functions használatával, de az alapelveket az ön igényeihez igazíthatja.

Példa külső API-implementációra

A külső API példa egy egyszerű végpont, amely egy véletlenszerű számot ad vissza 1 és 999 között. Az API-t egy hozzáférési kulccsal védik, amelyet a végpont elérésére vonatkozó kérésben meg kell adnia. Bemutató célokra ez az API a végponton https://msdocs-example-api.azurewebsites.net/api/RandomNumbervan üzembe helyezve. Az API meghívásához azonban meg kell adnia a hozzáférési kulcsot d0c5atM1cr0s0ft egy ?code= URL-paraméterben vagy a HTTP-fejléc egyik 'x-functions-key' tulajdonságában. Az alkalmazás és az API üzembe helyezése után például próbálja ki ezt az URL-címet egy böngészőben vagy curlben: https://msdocs-example-api.azurewebsites.net/api/RandomNumber?code=d0c5atM1cr0s0ft.

Ha a hozzáférési kulcs érvényes, a végpont egy olyan JSON-választ ad vissza, amely egyetlen tulajdonságot ("value") tartalmaz, amelynek értéke egy 1 és 999 közötti szám, például {"value": 959}.

A végpont Pythonban van implementálva, és az Azure Functionsben van üzembe helyezve. A kód a következő:

import logging
import random
import json

import azure.functions as func


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('RandomNumber invoked via HTTP trigger.')

    random_value = random.randint(1, 1000)
    dict = { "value" : random_value }
    return func.HttpResponse(json.dumps(dict))

A mintaadattárban ez a kód a third_party_api/RandomNumber/__init__.py alatt található. A RandomNumber nevű mappa megadja a függvény nevét, és __init__.py tartalmazza a kódot. Egy másik fájl a mappában, function.json, leírja, hogy mikor kerül sor a függvény aktiválására. A third_party_api szülőmappájában található egyéb fájlok a függvényt üzemeltető Azure-függvényalkalmazás részleteit adják meg.

A kód üzembe helyezéséhez a minta kiépítési szkriptje a következő lépéseket hajtja végre:

  1. Hozzon létre egy háttértárfiókot az Azure Functions számára az Azure CLI paranccsal az az storage account create állapot és a belső műveletek kezeléséhez.

  2. Azure Functions-alkalmazás létrehozása az Azure CLI paranccsal. az function app create

  3. Miután 60 másodpercet várt a gazdagép teljes kiépítésére, telepítse a kódot az Azure Functions Core Tools paranccsal. func azure functionapp publish

  4. Rendelje hozzá a hozzáférési kulcsot d0c5atM1cr0s0fta függvényhez. (A függvénykulcsok hátterét az Azure Functions biztonságossá tétele című témakörben talál.)

    A kiépítési szkriptben ezt a lépést az az functionapp function keys set Azure CLI-parancs segítségével hajtják végre.

    A megjegyzések bemutatják, hogyan hajthatja végre ezt a lépést egy REST API-híváson keresztül a Functions Key Management API-hoz , ha szükséges. A REST API meghívásához először egy másik REST API-hívást kell végrehajtani a függvényalkalmazás főkulcsának lekéréséhez.

Hozzáférési kulcsokat az Azure Portalon is hozzárendelhet. A Functions alkalmazás lapján válassza a Functions elemet, majd válassza ki a biztonságossá tenni kívánt függvényt (amely ebben a példában szerepel RandomNumber ). A függvény lapján válassza a Függvénykulcsok lehetőséget a lap megnyitásához, ahol létrehozhatja és kezelheti ezeket a kulcsokat.