Az első tárolóalapú függvények létrehozása az Azure Container Appsben
Ebben a cikkben egy Linux-tárolóban futó függvényalkalmazást hoz létre, és üzembe helyezi azt egy Azure Container Apps-környezetben egy tárolóregisztrációs adatbázisból. A Container Appsben való üzembe helyezéssel a függvényalkalmazásokat integrálhatja natív felhőbeli mikroszolgáltatásokba. További információ: Azure Functionst üzemeltető Azure Container Apps.
Ez a cikk bemutatja, hogyan hozhat létre linuxos tárolóban futó függvényeket, és hogyan helyezheti üzembe a tárolót egy Container Apps-környezetben.
Ennek a rövid útmutatónak a elvégzése az Azure-fiókjában néhány USD-cent vagy annál kisebb költséggel jár, amelyet az erőforrások tisztításával minimalizálhat, ha végzett.
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.js verzió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 .venv
lé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 new
lé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 Functions
a 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/HttpExample
a 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=Functions
a 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.
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.0
Cseré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 Log Analytics-munkaterülettel rendelkező Azure Container Apps-környezet.
Ezeket az elemeket az alábbi parancsokkal hozhatja létre.
Ha még nem tette meg, jelentkezzen be az Azure-ba.
A
az login
parancs bejelentkezik az Azure-fiókjába. Akkor használjaaz account set
, ha több előfizetése van a fiókjához társítva.Futtassa a következő parancsot az Azure CLI legújabb verziójára való frissítéséhez:
az upgrade
Ha az Azure CLI nem a legújabb verzió, elindul a telepítés. A frissítési mód az operációs rendszertől függ. A frissítés befejezése után folytathatja a műveletet.
Futtassa a következő parancsokat, amelyek frissítik az Azure Container Apps bővítményt, és regisztrálják a Container Apps által igényelt névtereket:
az extension add --name containerapp --upgrade -y az provider register --namespace Microsoft.Web az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights
Hozzon létre egy erőforráscsoportot .
AzureFunctionsContainers-rg
az group create --name AzureFunctionsContainers-rg --location eastus
Ez a
az group create
parancs létrehoz egy erőforráscsoportot az USA keleti régiójában. Ha ehelyett egy Önhöz közeli régiót szeretne használni, használja az az account list-locations parancsból visszaadott elérhető régiókódot. A következő parancsokat módosítania kell az egyéni régióeastus
helyett.Azure Container App-környezet létrehozása engedélyezett számítási feladatprofilokkal.
az containerapp env create --name MyContainerappEnvironment --enable-workload-profiles --resource-group AzureFunctionsContainers-rg --location eastus
A parancs futtatása eltarthat néhány percig.
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 eastus --resource-group AzureFunctionsContainers-rg --sku Standard_LRS
A
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 tárneveknek csak 3–24 karakterből álló számokat és kisbetűket kell tartalmazniuk.Standard_LRS
a Functions által támogatott általános célú fiókot határoz meg.
Függvényalkalmazás létrehozása és konfigurálása az Azure-ban a rendszerképpel
Az Azure-beli függvényalkalmazások felügyelik a függvények végrehajtását az Azure Container Apps-környezetben. Ebben a szakaszban az előző szakaszban szereplő Azure-erőforrások használatával hozhat létre függvényalkalmazást egy tárolóregisztrációs adatbázis lemezképéből egy Container Apps-környezetben. Emellett konfigurálja az új környezetet egy kapcsolati sztring a szükséges Azure Storage-fiókhoz.
az functionapp create
A parancs használatával függvényalkalmazást hozhat létre az Azure Container Apps által támogatott új felügyelt környezetben:
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime dotnet-isolated --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --assign-identity
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime node --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --assign-identity
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime java --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --assign-identity
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime powershell --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --assign-identity
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime python --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --assign-identity
az functionapp create --name <APP_NAME> --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --workload-profile-name "Consumption" --resource-group AzureFunctionsContainers-rg --functions-version 4 --runtime node --image <LOGIN_SERVER>/azurefunctionsimage:v1.0.0 --assign-identity
A parancsban a az functionapp create
--environment
paraméter a Container Apps környezetet adja meg, a --image
paraméter pedig a függvényalkalmazáshoz használni kívánt rendszerképet. 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 Ön számára megfelelő globálisan egyedi nevet és <LOGIN_SERVER>
a teljes mértékben minősített Container Registry-kiszolgálót.
Ha rendszer által hozzárendelt felügyelt identitást szeretne használni a tárolóregisztrációs adatbázis eléréséhez, engedélyeznie kell a felügyelt identitásokat az alkalmazásban, és hozzáférést kell adnia a rendszer által hozzárendelt felügyelt identitásnak a tárolóregisztrációs adatbázishoz. Ez a példa a felügyelt identitások alkalmazásbeli engedélyezésére és a rendszer által hozzárendelt identitásnak a ACRPull
tárolóregisztrációs adatbázisban szereplő szerepkörhöz való hozzárendelésére használja és az role assignment create
parancsot használjaaz functionapp identity assign
:
FUNCTION_APP_ID=$(az functionapp identity assign --name <APP_NAME> --resource-group AzureFunctionsContainers-rg --query principalId --output tsv)
ACR_ID=$(az acr show --name <REGISTRY_NAME> --query id --output tsv)
az role assignment create --assignee $FUNCTION_APP_ID --role AcrPull --scope $ACR_ID
Ebben a példában cserélje le és <REGISTRY_NAME>
írja be <APP_NAME>
a függvényalkalmazás és a tárolóregisztrációs adatbázis nevét.
--workload-profile-name "Consumption"
A beállítás az alapértelmezett Consumption
számítási feladatprofil használatával hozza létre az alkalmazást egy környezetben, amely ugyanúgy kerül, mint egy Container Apps Consumption-csomagban való futtatás. A függvényalkalmazás első létrehozásakor a rendszer lekéri a kezdeti lemezképet a beállításjegyzékből.
Ezen a ponton a függvények egy Container Apps-környezetben futnak, és már hozzáadták a szükséges alkalmazásbeállításokat. Szükség esetén más beállításokat is hozzáadhat a függvényalkalmazáshoz a Függvények szokásos módján. További információ: Alkalmazásbeállítások használata.
Tipp.
A függvénykód későbbi módosításakor újra kell építenie a tárolót, újra közzé kell tennie a lemezképet a beállításjegyzékben, és frissítenie kell a függvényalkalmazást az új rendszerképverzióval. További információ: Lemezkép frissítése a beállításjegyzékben
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 show
parancsot 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 invokeUrlTemplate
Cserélje le
<APP_NAME>
a függvényalkalmazás nevére.
- Használja az imént beszerzett URL-címet a
HttpExample
függvényvégpont meghívásához a lekérdezési sztring?name=Functions
hozzá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.
A kérelem URL-címének így kell kinéznie:
https://myacafunctionapp.kindtree-796af82b.eastus.azurecontainerapps.io/api/httpexample?name=functions
https://myacafunctionapp.kindtree-796af82b.eastus.azurecontainerapps.io/api/httpexample
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.
Ha végzett ezzel a függvényalkalmazás-telepítéssel, törölje az AzureFunctionsContainers-rg
erőforráscsoportot a csoport összes erőforrásának törléséhez:
az group delete --name AzureFunctionsContainers-rg