Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a cikkben egy Linux-tárolóban futó függvényalkalmazást hoz létre, és üzembe helyezi azt az Azure Functionsben.
A függvénykód tárolóban való üzembe helyezéséhez prémium szintű csomag vagy dedikált (App Service-) csomag üzemeltetése szükséges. A cikk elvégzése néhány amerikai dollárnyi költséget jelent az Azure-fiókjában, amelyet az erőforrások tisztításával minimalizálhat, ha végzett.
Tipp.
Ha az eseményvezérelt függvényeket az Azure-ban kell futtatnia ugyanabban a környezetben, mint más mikroszolgáltatások, API-k, webhelyek, munkafolyamatok vagy bármely tároló által üzemeltetett program, fontolja meg inkább a tárolóalapú függvényalkalmazások azure Container Appsben való üzemeltetését. A Functions integrált támogatást nyújt a tárolóalapú függvényalkalmazások fejlesztéséhez, üzembe helyezéséhez és kezeléséhez a Container Appsben. További információ: Azure Functionst üzemeltető Azure Container Apps.
Fejlesztési nyelv kiválasztása
Először az Azure Functions-eszközökkel hozza létre a projektkódot függvényalkalmazásként egy Docker-tárolóban egy nyelvspecifikus Linux-alaprendszerkép használatával. Ügyeljen arra, hogy a cikk tetején válassza ki a választott nyelvet.
A Core Tools automatikusan létrehoz egy Docker-fájlt a projekthez, amely a függvénynyelvhez a megfelelő alaprendszerkép legfrissebb verzióját használja. Rendszeresen frissítenie kell a tárolót a legújabb alaprendszerképről, és újból üzembe kell helyeznie a tároló frissített verziójából. További információ: Tárolóalapú függvényalkalmazások létrehozása.
Előfeltételek
A kezdés előtt a következő követelményekkel kell rendelkeznie:
Telepítse a .NET 8.0 SDK-t.
Telepítse az Azure Functions Core Tools 4.0.5198-es vagy újabb verzióját.
- Telepítse az Azure Functions Core Tools 4.x-es verzióját.
- Telepítse az Azure Functions által támogatott Node.jsverzióját.
- Telepítse az Azure Functions által támogatott Python-verziót.
- Telepítse a .NET 6 SDK-t.
Telepítse az Azure Functions által támogatott Java Developer Kit-verziót.
Telepítse az Apache Maven 3.0-s vagy újabb verzióját.
- Az Azure CLI 2.4-es vagy újabb verziója.
Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.
A tárolóregisztrációs adatbázisban létrehozott tárolóalapú függvényalkalmazás-rendszerkép közzétételéhez a helyi számítógépen futó Docker-azonosítóra és Dockerre van szükség. Ha nem rendelkezik Docker-azonosítóval, létrehozhat egy Docker-fiókot.
A beállításjegyzék-példány létrehozásához a Tárolóregisztrációs adatbázis gyorsútmutatójának Tárolóregisztrációs adatbázis létrehozása szakaszát is be kell fejeznie. Jegyezze fel a teljes bejelentkezési kiszolgáló nevét.
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 további parancsot futtat.
A helyi függvényprojekt létrehozása és tesztelése
Egy terminálban vagy parancssorban futtassa a következő parancsot a választott nyelvhez egy függvényalkalmazás-projekt létrehozásához az aktuális mappában:
func init --worker-runtime dotnet-isolated --docker
func init --worker-runtime node --language javascript --docker
func init --worker-runtime powershell --docker
func init --worker-runtime python --docker
func init --worker-runtime node --language typescript --docker
Egy üres mappában futtassa a következő parancsot a Functions-projekt Maven-archetípusból való létrehozásához:
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8 -Ddocker
A -DjavaVersion paraméter közli a Functions futtatókörnyezetével, hogy melyik Java-verziót használja. Használja a -DjavaVersion=11 kapcsolót, ha a függvényeket Java 11-en szeretné futtatni. Ha nem adja meg -DjavaVersion, a Maven alapértelmezés szerint Java 8 lesz. További információ: Java-verziók.
Fontos
A JAVA_HOME cikk elvégzéséhez a környezeti változót a JDK megfelelő verziójának telepítési helyére kell állítani.
A Maven a projekt üzembe helyezéshez szükséges értékeit kéri. Kövesse az utasításokat, és adja meg a következő információkat:
| Felszólítás | Érték | Leírás |
|---|---|---|
| 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. |
| verzió | 1.0-SNAPSHOT |
Válassza ki az alapértelmezett értéket. |
| csomag | com.fabrikam.functions |
Egy érték, amely a létrehozott függvénykód Java-csomagja. Használja az alapértelmezettet. |
Írja be Y vagy nyomja le az Enter billentyűt a megerősítéshez.
A Maven egy artifactId nevű új mappában hozza létre a projektfájlokat, amely ebben a példában az fabrikam-functions.
A --docker beállítás létrehoz egy Docker-fájlt a projekthez, amely egy megfelelő tárolót határoz meg az Azure Functionsben és a kiválasztott futtatókörnyezetben való használatra.
Navigáljon a projektmappába:
cd fabrikam-functions
Az alábbi paranccsal hozzáadhat egy függvényt a projekthez, ahol az --name argumentum a függvény egyedi neve, az --template argumentum pedig a függvény eseményindítóját határozza meg.
func new C#-kódfájlt hoz létre a projektben.
func new --name HttpExample --template "HTTP trigger"
Az alábbi paranccsal hozzáadhat egy függvényt a projekthez, ahol az --name argumentum a függvény egyedi neve, az --template argumentum pedig a függvény eseményindítóját határozza meg.
func newlétrehoz egy function.json nevű konfigurációs fájlt tartalmazó függvénynévnek megfelelő almappát.
func new --name HttpExample --template "HTTP trigger"
A függvény helyi teszteléséhez indítsa el a helyi Azure Functions futtatókörnyezet-gazdagépet a projektmappa gyökerében.
func start
func start
npm install
npm start
mvn clean package
mvn azure-functions:run
Miután látta a HttpExample kimenetre írt végpontot, lépjen erre a végpontra. A válasz kimenetében egy üdvözlő üzenetnek kell megjelennie.
Miután látta a HttpExample kimenetre írt végpontot, lépjen a következőre http://localhost:7071/api/HttpExample?name=Functions: . A böngészőnek meg kell jelennie egy "hello" üzenetnek, amely visszaköszön Functionsa lekérdezési paraméterhez megadott értékre name .
A gazdagép leállításához nyomja le a Ctrl C billentyűkombinációt+(macOS rendszeren a C parancsot).+
A tárolólemezkép létrehozása és helyi ellenőrzése
(Nem kötelező) Vizsgálja meg a Dockerfile-t a projektmappa gyökerében. A Dockerfile leírja a függvényalkalmazás Linuxon való futtatásához szükséges környezetet. Az Azure Functions támogatott alaprendszerképeinek teljes listája az Azure Functions alaprendszerkép oldalán található.
A gyökérprojekt mappában futtassa a docker buildelési parancsot, adjon meg egy nevet azurefunctionsimage, és címkézze a következőt v1.0.0: . A <DOCKER_ID> helyére a Docker Hub-fiók azonosítóját írja. Ez a parancs létrehozza a tároló Docker-rendszerképét.
docker build --tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 .
A parancs befejeződésekor helyileg futtathatja az új tárolót.
A build ellenőrzéséhez futtassa a lemezképet egy helyi tárolóban a Docker-futtatási paranccsal, cserélje le <DOCKER_ID> ismét a Docker Hub-fiók azonosítójára, és adja hozzá a portok argumentumát a következőként -p 8080:80:
docker run -p 8080:80 -it <DOCKER_ID>/azurefunctionsimage:v1.0.0
Miután a rendszerkép a helyi tárolóban kezdődött, keresse meg http://localhost:8080/api/HttpExamplea következőt, amelynek ugyanazt az üdvözlő üzenetet kell megjelenítenie, mint korábban. Mivel a létrehozott HTTP-aktivált függvény névtelen hitelesítést használ, meghívhatja a tárolóban futó függvényt anélkül, hogy hozzáférési kulcsot kellene beszereznie. További információ: engedélyezési kulcsok.
Miután a rendszerkép a helyi tárolóban kezdődött, keresse meg http://localhost:8080/api/HttpExample?name=Functionsa következőt, amelynek ugyanazt a "hello" üzenetet kell megjelenítenie, mint korábban. Mivel a létrehozott HTTP-aktivált függvény névtelen hitelesítést használ, meghívhatja a tárolóban futó függvényt anélkül, hogy hozzáférési kulcsot kellene beszereznie. További információ: engedélyezési kulcsok.
Miután ellenőrizte a függvényalkalmazást a tárolóban, a végrehajtás leállításához nyomja le a Ctrl C billentyűkombinációt+(macOS-en a C parancsot).+
A tárolólemezkép közzététele egy beállításjegyzékben
Ha elérhetővé szeretné tenni a tárolólemezképet egy üzemeltetési környezetben való üzembe helyezéshez, le kell küldenie egy tárolóregisztrációs adatbázisba. Ajánlott biztonsági eljárásként egy Azure Container Registry-példányt kell használnia, és felügyelt identitásalapú kapcsolatokat kell kikényszerítenie. A Docker Hub megköveteli, hogy közös titkos kódokkal hitelesítse magát, ami sebezhetőbbé teszi az üzemelő példányokat.
Az Azure Container Registry egy privát beállításjegyzék-szolgáltatás a tárolólemezképek és a kapcsolódó összetevők létrehozásához, tárolásához és kezeléséhez. A tárolók Azure-szolgáltatásokban való közzétételéhez magánregisztrációs szolgáltatást kell használnia.
Ezzel a paranccsal jelentkezzen be a beállításjegyzék-példányba a jelenlegi Azure-hitelesítő adataival:
az acr login --name <REGISTRY_NAME>Az előző parancsban cserélje le
<REGISTRY_NAME>a Container Registry-példány nevét.Ezzel a paranccsal címkézheti meg a rendszerképet a regisztrációs adatbázis bejelentkezési kiszolgálójának teljes nevével:
docker tag <DOCKER_ID>/azurefunctionsimage:v1.0.0 <LOGIN_SERVER>/azurefunctionsimage:v1.0.0Cserélje le
<LOGIN_SERVER>a regisztrációs adatbázis bejelentkezési kiszolgálójának teljes nevét és<DOCKER_ID>a Docker-azonosítóját.Ezzel a paranccsal leküldheti a tárolót a beállításjegyzék-példányba:
docker push <LOGIN_SERVER>/azurefunctionsimage:v1.0.0
Támogató Azure-erőforrások létrehozása a függvényhez
Mielőtt üzembe helyezheti a tárolót 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.
Fontos
Ez a cikk jelenleg bemutatja, hogyan csatlakozhat az Azure Storage-fiókhoz és a tárolóregisztrációs adatbázishoz kapcsolati sztring és más megosztott titkos hitelesítő adatok használatával. A legjobb biztonság érdekében ehelyett csak felügyelt identitásalapú kapcsolatot kell használnia a tárfiókhoz és az Azure Container Registryhez Microsoft Entra-hitelesítéssel. További információkért tekintse meg a Functions fejlesztői útmutatóját.
Ezeket az elemeket az alábbi parancsokkal hozhatja létre. Az Azure CLI és a PowerShell is támogatott. Az Azure-erőforrások Azure PowerShell-lel való létrehozásához szükség van az 5.9.0-s vagy újabb verziójú Az PowerShell-modulra is.
Ha még nem tette meg, jelentkezzen be az Azure-ba.
az loginA
az loginparancs bejelentkezik az Azure-fiókjába.Hozzon létre egy erőforráscsoportot
AzureFunctionsContainers-rga kiválasztott régióban.az group create --name AzureFunctionsContainers-rg --location <REGION>A
az group createparancs 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.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 AzureFunctionsContainers-rg --sku Standard_LRSA
az storage account createparancs 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 tárneveknek csak 3–24 karakterből álló számokat és kisbetűket kell tartalmazniuk.Standard_LRSa Functions által támogatott általános célú fiókot határoz meg.A paranccsal prémium csomagot hozhat létre az Azure Functionshez
myPremiumPlanaz Elastic Premium 1 tarifacsomagban (--sku EP1), az Önben<REGION>és egy Linux-tárolóban (--is-linux).az functionapp plan create --resource-group AzureFunctionsContainers-rg --name myPremiumPlan --location <REGION> --number-of-workers 1 --sku EP1 --is-linuxItt a Prémium csomagot használjuk, amely igény szerint méretezhető. Az üzemeltetéssel kapcsolatos további információkért tekintse meg az Azure Functions üzemeltetési terveinek összehasonlítását. A költségek kiszámításáról további információt a Functions díjszabási oldalán talál.
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. A példány nem jár költségekkel, amíg nem aktiválja.
Függvényalkalmazás létrehozása és konfigurálása az Azure-ban a rendszerképpel
Az Azure-beli függvényalkalmazás felügyeli a függvények végrehajtását az Azure Functions üzemeltetési csomagjában. Ebben a szakaszban az előző szakasz Azure-erőforrásait használva létrehoz egy függvényalkalmazást egy tárolóregisztrációs adatbázis rendszerképéből, és konfigurálja egy kapcsolati sztring az Azure Storage-ba.
A tárolóregisztrációs adatbázistól függően hozzon létre egy függvényalkalmazást a következő paranccsal:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --resource-group AzureFunctionsContainers-rg --plan myPremiumPlan --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD>Ebben a példában cserélje le
<STORAGE_NAME>a tárfiók előző szakaszában használt nevet. Cserélje le<APP_NAME>az Önnek<DOCKER_ID>megfelelő globálisan egyedi nevet, illetve<LOGIN_SERVER>a Docker Hub-fiókazonosítót vagy a Container Registry-kiszolgálót. Egyéni tárolóregisztrációs adatbázisból történő üzembe helyezéskor a rendszerkép neve a beállításjegyzék URL-címét jelzi.A függvényalkalmazás első létrehozásakor a rendszer lekéri a kezdeti képet a Docker Hubról. A tárolóregisztrációs adatbázisból is engedélyezheti a folyamatos üzembe helyezést az Azure-ban.
Tipp.
A host.json fájlban található beállítással
DisableColormegakadályozhatja, hogy az ANSI vezérlőkarakterek a tárolónaplókba legyenek írva.A következő paranccsal kérje le a létrehozott tárfiók kapcsolati sztring:
az storage account show-connection-string --resource-group AzureFunctionsContainers-rg --name <STORAGE_NAME> --query connectionString --output tsvA tárfiók kapcsolati sztring a parancs használatával
az storage account show-connection-stringadja vissza.Fontos
Ez a cikk jelenleg bemutatja, hogyan csatlakozhat az alapértelmezett tárfiókhoz egy kapcsolati sztring használatával. A legjobb biztonság érdekében ehelyett egy felügyelt identitásalapú kapcsolatot kell létrehoznia az Azure Storage-hoz Microsoft Entra-hitelesítéssel. További információkért tekintse meg a Functions fejlesztői útmutatóját.
Cserélje le
<STORAGE_NAME>a korábban létrehozott tárfiók nevére.A következő paranccsal adja hozzá a beállítást a függvényalkalmazáshoz:
az functionapp config appsettings set --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --settings AzureWebJobsStorage=<CONNECTION_STRING>A
az functionapp config appsettings setparancs létrehozza a beállítást.Ebben a parancsban cserélje le
<APP_NAME>a függvényalkalmazás nevére és<CONNECTION_STRING>az előző lépés kapcsolati sztring. A kapcsolatnak egy hosszú kódolt sztringnek kell lennie, amely a következővelDefaultEndpointProtocol=kezdődik: .A függvény most már használhatja ezt a kapcsolati sztring a tárfiók eléréséhez.
A függvények ellenőrzése az Azure-ban
Az Azure-ban a függvényalkalmazásban üzembe helyezett rendszerkép használatával mostantól HTTP-kérésekkel hívhatja meg a függvényt.
Futtassa a következő
az functionapp function showparancsot az új függvény URL-címének lekéréséhez:az functionapp function show --resource-group AzureFunctionsContainers-rg --name <APP_NAME> --function-name HttpExample --query invokeUrlTemplateCserélje le
<APP_NAME>a függvényalkalmazás nevére.
- Használja az imént beszerzett URL-címet a
HttpExamplefüggvényvégpont meghívásához a lekérdezési sztring?name=Functionshozzáfűzésével.
- Használja az imént beszerzett URL-címet a függvényvégpont meghívásához
HttpExample.
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.
Az erőforrások eltávolítása
Ha továbbra is használni szeretné az Azure-függvényt a cikkben létrehozott erőforrások használatával, ezeket az erőforrásokat a helyén hagyhatja. Mivel prémium szintű csomagot hozott létre az Azure Functionshez, napi egy vagy két USD-t kell számolnia a folyamatos költségekkel.
A folyamatos költségek elkerülése érdekében törölje az erőforráscsoportot a AzureFunctionsContainers-rg csoport összes erőforrásának törléséhez:
az group delete --name AzureFunctionsContainers-rg