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ó: az Azure Container Apps Azure Functions üzemeltetése.
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 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ámogatottNode.js verzióját.
- Telepítse az Azure Functions által támogatott Python-verziót.
- Telepítse a .NET SDK-t.
Telepítse az Azure Functions által támogatottJava Developer Kit-verziót.
Telepítse az Apache Maven 3.0-s vagy újabb verzióját.
- Telepítse az Azure CLI 2.4-es vagy újabb verzióját.
Ha még nincs Azure-előfizetése, kezdés előtt hozzon létre egy ingyenes fiókot.
A tárolóalapú függvényalkalmazás tárolóregisztrációs adatbázisában létrehozott rendszerképének közzétételéhez a helyi számítógépen futó Docker-azonosítóra és Docker Desktopra van szükség. Ha nem rendelkezik Docker-azonosítóval, létrehozhat egy Docker-fiókot.
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 teljesen minősített 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ésként a Java 8-at választja. 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 kéri a projekt generálásának befejezéséhez szükséges értékeket, ami az üzembe helyezéshez szükséges. 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.
Annak érdekében, hogy a függvény később meghívható legyen a Dockerben való üzemeltetéskor, ellenőrizze, hogy az engedélyezési szint be van-e állítva AuthorizationLevel.Anonymous, vagy ha még nincs konfigurálva.
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 végpont kimenetre írását, navigáljon a http://localhost:7071/api/HttpExample?name=Functions oldalra. A böngészőnek meg kell jelenítenie egy "hello" üzenetet, amely visszaküldi a lekérdezési paraméter számára megadott Functions értéket name.
A gazdagép leállításához nyomja meg a Ctrl+C billentyűt (Command+C macOS rendszeren).
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 build parancsot, adjon meg egy nevet azurefunctionsimage, és adjon meg egy címké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 elindult a helyi tárolóban, navigáljon a http://localhost:8080/api/HttpExample-hez, 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 elindul a helyi tárolóban, böngésszen a(z) http://localhost:8080/api/HttpExample?name=Functions-ra, 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 konténerkép közzététele egy regisztrációs adatbázisban
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 megosztott titkos kódokkal azonosítsa magát, ami sebezhetőbbé teszi a telepítéseket.
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 regisztrációs példányba a jelenlegi Azure-hitelesítő adataival. Cserélje le
<REGISTRY-NAME>az Container Registry-példányának nevére.az acr login --name <REGISTRY-NAME>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. Cserélje le
<LOGIN-SERVER>a regisztrációs kiszolgáló teljesen meghatározott nevére és<DOCKER-ID>a Docker-azonosítójára.docker tag <DOCKER-ID>/azurefunctionsimage:v1.0.0 <LOGIN-SERVER>/azurefunctionsimage:v1.0.0Ezzel a paranccsal feltöltheti a konténert a regisztrációs adatbázis példányába:
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 a<REGION>-t az Önhöz legközelebbi régióra, a az account list-locations parancs által visszaadott elérhető régiókódok közül.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 parancs használatával hozza létre az Azure Functions számára a(z)
myPremiumPlannevű Premium csomagot, az Elastic Premium 1 díjkategóriában (--sku EP1), az Ön<REGION>-jében és egy Linux-konténerben (--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 addig nem jár költségekkel, amíg ön 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 function app-ot egy tárolóregisztráció rendszerképéből, és konfigurálja egy Azure Storage-ra mutató kapcsolatstréágettel.
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 a
<STORAGE_NAME>-t a tárolófiók nevére, amelyet az előző szakaszban használt. Cserélje le a<APP_NAME>elemet egy Ön számára megfelelő globálisan egyedi névre, valamint a<DOCKER_ID>vagy<LOGIN_SERVER>elemet a Docker Hub-fiókazonosítójára vagy a Container Registry-kiszolgálójára. 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 az általad létrehozott tárfiók kapcsolati karakterláncát:
az storage account show-connection-string --resource-group AzureFunctionsContainers-rg --name <STORAGE_NAME> --query connectionString --output tsvA tárfiók kapcsolati karakterlánca a
az storage account show-connection-stringparancs használatával kerül visszaadásra.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>az függvényalkalmazás nevére és<CONNECTION_STRING>az előző lépésből származó kapcsolati sztringre. 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 rendezése
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