Az Azure Functions tárolási szempontjai

Függvényalkalmazás-példány létrehozásakor az Azure Functionsnek Azure Storage-fiókra van szüksége. A függvényalkalmazás a következő tárolási szolgáltatásokat használhatja:

Storage-szolgáltatás Függvények használata
Azure Blob Storage Kötések állapotának és függvénykulcsainakkarbantartása 1.
Alapértelmezés szerint a Durable Functions feladatközpontjaihoz használatos.
Használható függvényalkalmazás-kód tárolására a Linux Consumption távoli buildjéhez vagy külső csomag URL-példányainak részeként.
Azure Files2 A függvényalkalmazás kódjának tárolására és futtatására használt fájlmegosztás használati csomagban és prémium csomagban.
Azure Queue Storage Alapértelmezés szerint a Durable Functions feladatközpontjaihoz használatos. Adott Azure Functions-eseményindítók meghibásodására és újrapróbálkozására szolgál. A Blob Storage-eseményindító objektumkövetéséhez használatos.
Azure Table storage Alapértelmezés szerint a Durable Functions feladatközpontjaihoz használatos.

1 A blobtároló a függvénykulcsok alapértelmezett tárolója, de konfigurálhat másik tárolót is.

A 2 Azure Files alapértelmezés szerint be van állítva, de bizonyos feltételek mellett azure Files nélkül is létrehozhat alkalmazásokat.

Fontos tényezők

A függvényalkalmazások által használt tárfiókokkal kapcsolatban a következő tényeket kell figyelembe vennie:

  • Ha a függvényalkalmazás a Használati csomagban vagy a Prémium csomagban van üzemeltetve, a függvénykódokat és a konfigurációs fájlokat a társított tárfiókban lévő Azure Files tárolja. A tárfiók törlésekor a tartalom törlődik, és nem állítható helyre. További információ: Storage-fiók törlése

  • A fontos adatok, például a függvénykód, a hozzáférési kulcsok és más fontos szolgáltatással kapcsolatos adatok megőrizhetők a tárfiókban. A függvényalkalmazások által használt tárfiókokhoz való hozzáférést gondosan kell kezelnie a következő módokon:

    • Az alkalmazások és a felhasználók hozzáférésének naplózása és korlátozása a tárfiókhoz egy minimális jogosultsági modell alapján. A tárfiókra vonatkozó engedélyek a hozzárendelt szerepkör adatműveleteiből vagy a listKeys művelet végrehajtására vonatkozó engedélyből származhatnak.

    • Figyelje a vezérlősík tevékenységeit (például a kulcsok lekérését) és az adatsík műveleteit (például egy blobba való írást) a tárfiókban. Fontolja meg a tárolási naplók karbantartását az Azure Storage-on kívüli helyen. További információ: Tárolási naplók.

Tárfiókra vonatkozó követelmények

Az Azure Portalon a függvényalkalmazás létrehozási folyamatának részeként létrehozott tárfiókok garantáltan együttműködnek az új függvényalkalmazással. Ha meglévő tárfiókot használ, a megadott lista nem tartalmaz bizonyos nem támogatott tárfiókokat. A függvényalkalmazás által használt tárfiókokra az alábbi korlátozások vonatkoznak, ezért meg kell győződnie arról, hogy egy meglévő tárfiók megfelel az alábbi követelményeknek:

  • A fióktípusnak támogatnia kell a Blob, a Queue és a Table Storage függvényt. Egyes tárfiókok nem támogatják az üzenetsorokat és a táblákat. Ilyen fiókok például a csak blobokhoz használható tárfiókok és az Azure Premium Storage-fiókok. A tárfiókok típusaival kapcsolatos további információkért tekintse meg a Tárfiókok áttekintését.

  • Ha függvényalkalmazást hoz létre az Azure Portalon, nem használhat már tűzfallal vagy virtuális magánhálózattal védett tárfiókot. A portál azonban jelenleg nem szűri ki ezeket a biztonságos tárfiókokat. Ha szeretné megtudni, hogyan használhat biztonságos tárfiókot a függvényalkalmazással, olvassa el a Biztonságos tárfiók használata az Azure Functions szolgáltatással című témakört.

  • A használatalapú csomagban üzemeltetett függvényalkalmazásokkal nem használhat biztonságos tárfiókokat.

  • A függvényalkalmazás portálon való létrehozásakor csak a létrehozott függvényalkalmazással megegyező régióban választhat meglévő tárfiókot. Ez teljesítményoptimalizálás, és nem szigorú korlátozás. További információ: Tárfiók helye.

  • Ha olyan csomagban hozza létre a függvényalkalmazást, amelyen engedélyezve van a rendelkezésre állási zóna támogatása , csak a zónaredundáns tárfiókok támogatottak.

Az üzembe helyezés automatizálásával rugalmas Prémium vagy Dedikált (App Service) csomagban is létrehozhat függvényalkalmazásokat. Az ARM-sablonban vagy a Bicep-fájlban azonban meg kell adnia bizonyos hálózati konfigurációkat. Ha nem tartalmazza ezeket a beállításokat és erőforrásokat, előfordulhat, hogy az automatizált üzembe helyezés sikertelen lesz az ellenőrzés során. További információ: Biztonságos üzemelő példányok.

Tárfiókra vonatkozó útmutató

Minden függvényalkalmazás működéséhez egy tárfiók szükséges. A fiók törlésekor a függvényalkalmazás nem fog futni. A tárterülettel kapcsolatos problémák elhárításához tekintse meg a tárterülettel kapcsolatos problémák hibaelhárítását ismertető témakört. A függvényalkalmazások által használt Storage-fiókra az alábbi egyéb szempontok vonatkoznak.

Tárfiók helye

A legjobb teljesítmény érdekében a függvényalkalmazásnak egy tárfiókot kell használnia ugyanabban a régióban, ami csökkenti a késést. Az Azure Portal kikényszeríti ezt az ajánlott eljárást. Ha valamilyen okból a függvényalkalmazástól eltérő régióban kell tárfiókot használnia, akkor a függvényalkalmazást a portálon kívül kell létrehoznia.

A tárfióknak elérhetőnek kell lennie a függvényalkalmazás számára. Ha biztonságos tárfiókot kell használnia, fontolja meg a tárfiók virtuális hálózatra való korlátozását.

Tárfiók kapcsolatbeállítása

Alapértelmezés szerint a függvényalkalmazások az AzureWebJobsStorage AzureWebJobsStorage alkalmazásbeállításában tárolt kapcsolati sztring konfigurálják a kapcsolatot, de az AzureWebJobsStorage-t úgy is konfigurálhatja, hogy titkos kód nélkül használjon identitásalapú kapcsolatot.

A használati csomagban (csak Windows) vagy rugalmas prémium csomagban (Windows vagy Linux) futó függvényalkalmazások az Azure Files használatával tárolhatják a dinamikus skálázás engedélyezéséhez szükséges lemezképeket. Ezekhez a csomagokhoz állítsa be a tárfiók kapcsolati sztring a WEBSITE_CONTENTAZUREFILECONNECTIONSTRING beállításban, valamint a fájlmegosztás nevét a WEBSITE_CONTENTSHARE beállításban. Ez általában ugyanaz a fiók, amelyet a AzureWebJobsStorage. Olyan függvényalkalmazást is létrehozhat, amely nem használja az Azure Filest, de a skálázás korlátozott lehet.

Feljegyzés

A tárfiókokat kapcsolati sztring frissíteni kell a tárkulcsok újragenerálásakor. A tárkulcsok kezeléséről itt olvashat bővebben.

Megosztott tárfiókok

Több függvényalkalmazás is megoszthatja ugyanazt a tárfiókot probléma nélkül. A Visual Studióban például több alkalmazást is fejleszthet az Azurite Storage Emulator használatával. Ebben az esetben az emulátor egyetlen tárfiókként működik. A függvényalkalmazás által használt tárfiók az alkalmazásadatok tárolására is használható. Ez a megközelítés azonban éles környezetben nem mindig jó ötlet.

Előfordulhat, hogy a gazdagépazonosító ütközéseinek elkerülése érdekében külön tárfiókokat kell használnia.

Életciklus-kezelési szabályzattal kapcsolatos szempontok

Nem szabad életciklus-kezelési szabályzatokat alkalmaznia a függvényalkalmazás által használt Blob Storage-fiókra. A Functions a Blob Storage használatával tárolja a fontos információkat, például a függvényelérési kulcsokat, és a szabályzatok eltávolíthatják a Függvények gazdagépéhez szükséges blobokat (például kulcsokat). Ha szabályzatokat kell használnia, zárja ki a Functions által használt tárolókat, amelyek előtaggal azure-webjobs vagy scm.

Tárolási naplók

Mivel a függvénykód és a kulcsok megmaradhatnak a tárfiókban, a tevékenység naplózása a tárfiókon jó módszer a jogosulatlan hozzáférés figyelésére. Az Azure Monitor erőforrásnaplói segítségével nyomon követheti az eseményeket a tárolási adatsíkon. A naplók konfigurálásáról és vizsgálatáról további információt az Azure Storage monitorozása című témakörben talál.

Az Azure Monitor tevékenységnaplója a vezérlősík eseményeit jeleníti meg, beleértve a listKeys műveletet is. Azonban a tárfiók erőforrásnaplóit is konfigurálnia kell a kulcsok vagy más identitásalapú adatsík-műveletek későbbi használatának nyomon követéséhez. Legalább a StorageWrite naplókategória engedélyezve kell lennie ahhoz, hogy azonosítani tudja az adatok módosításait a normál Functions-műveleteken kívül.

A széles hatókörű tárolási engedélyek lehetséges hatásának korlátozásához fontolja meg a nem tárolóhely használatát ezekhez a naplókhoz, például a Log Analyticshez. További információ: Az Azure Blob Storage monitorozása.

A tárolási teljesítmény optimalizálása

A teljesítmény maximalizálása érdekében minden függvényalkalmazáshoz használjon külön tárfiókot. Ez különösen akkor fontos, ha a Durable Functions vagy az Event Hub által aktivált függvények nagy mennyiségű tárolási tranzakciót generálnak. Ha az alkalmazáslogika közvetlenül (a Storage SDK használatával) vagy az egyik tárolókötésen keresztül kommunikál az Azure Storage-tal, egy dedikált tárfiókot kell használnia. Ha például egy Event Hub által aktivált függvény adatokat ír a blobtárolóba, használjon két tárfiókot – egyet a függvényalkalmazáshoz, egyet pedig a függvény által tárolt blobokhoz.

Blobok használata

A Functions egyik fő forgatókönyve a blobtárolóban lévő fájlok fájlfeldolgozása, például képfeldolgozáshoz vagy hangulatelemzéshez. További információ: Fájlfeltöltések feldolgozása.

Eseményindító blobtárolón

A függvénykódot többféleképpen is végrehajthatja a tároló blobjainak módosítása alapján. Az alábbi táblázat segítségével állapítsa meg, hogy melyik függvényindító felel meg a legjobban az igényeinek:

Szempont Blob Storage (lekérdezés) Blob Storage (eseményalapú) Queue Storage Event Grid
Késés Magas (legfeljebb 10 perc) Alacsony Közepes Alacsony
Tárfiók korlátozásai A csak blobfiókok nem támogatottak¹ általános célú v1 nem támogatott Nincs általános célú v1 nem támogatott
Bővítmény verziója Bármely Storage v5.x+ Bármelyik Bármelyik
Meglévő blobok kezelése Igen Nem Nem Nem
Szűrők Blobnévminta Eseményszűrők n.a. Eseményszűrők
Esemény-előfizetést igényel Nem Igen Nem Igen
Támogatja a nagy léptékű 2 Nem Igen Igen Igen
Leírás Az alapértelmezett eseményindító viselkedése, amely a tároló frissítéseinek lekérdezésére támaszkodik. További információkért tekintse meg a Blob Storage eseményindítójának hivatkozásában szereplő példákat. Blob storage-eseményeket használ fel egy esemény-előfizetésből. Paraméterértéket SourceEventGridigényel. További információ : Oktatóanyag: Azure Functions aktiválása blobtárolókon esemény-előfizetés használatával. A blobnév sztringje manuálisan lesz hozzáadva a tárolóhoz, amikor blobot ad hozzá a tárolóhoz. Ezt az értéket közvetlenül a Queue Storage-eseményindító továbbítja egy blobtároló bemeneti kötésének ugyanazon a függvényen. Rugalmasan aktiválhat eseményeket a tárolóból érkezők mellett. Akkor használja, ha nem tárolási események is aktiválják a függvényt. További információ: Event Grid-eseményindítók és kötések használata az Azure Functionsben.

1 A Blob Storage bemeneti és kimeneti kötései támogatják a csak blobfiókokat.
2 A nagy skálázás lazán definiálható olyan tárolókként, amelyekben több mint 100 000 blob található, vagy olyan tárfiókok, amelyek másodpercenként több mint 100 blobfrissítést használnak.

Storage-adattitkosítás

Az Azure Storage titkosítja egy inaktív tárfiók összes adatát. További információért lásd: Azure Storage titkosítás a nyugalmi adatokhoz.

Alapértelmezés szerint az adatok a Microsoft által felügyelt kulcsokkal lesznek titkosítva. A titkosítási kulcsok további szabályozásához megadhatja az ügyfél által felügyelt kulcsokat, amelyek a blob- és fájladatok titkosításához használhatók. Ezeknek a kulcsoknak jelen kell lenniük az Azure Key Vault for Functionsben ahhoz, hogy hozzáférhessenek a tárfiókhoz. További információ: Inaktív titkosítás ügyfél által felügyelt kulcsokkal.

Régión belüli adattárolás

Ha az összes ügyféladatnak egyetlen régión belül kell maradnia, a függvényalkalmazáshoz társított tárfióknak régión belüli redundanciával kell rendelkeznie. Egy régión belüli redundáns tárfiókot is használni kell az Azure Durable Functionsben.

Más platform által felügyelt ügyféladatok csak a régión belül vannak tárolva, ha belsőleg elosztott App Service-környezetben (A Standard kiadás) üzemeltetik őket. További információ: A Standard kiadás zónaredundancia.

Gazdagép-azonosítóval kapcsolatos szempontok

A Függvények egy gazdagépazonosító-értéket használnak egy adott függvényalkalmazás egyedi azonosítására a tárolt összetevőkben. Alapértelmezés szerint ez az azonosító automatikusan létrejön a függvényalkalmazás nevéből, és az első 32 karakterre csonkolja. Ezt az azonosítót akkor használja a rendszer, amikor alkalmazásonkénti korrelációs és nyomkövetési adatokat tárol a csatolt tárfiókban. Ha 32 karakternél hosszabb nevű függvényalkalmazásokkal rendelkezik, és az első 32 karakter azonos, ez a csonkolás ismétlődő gazdagépazonosító-értékeket eredményezhet. Ha két azonos gazdagépazonosítóval rendelkező függvényalkalmazás ugyanazt a tárfiókot használja, a gazdagépazonosító ütközik, mert a tárolt adatok nem csatolhatók egyedileg a megfelelő függvényalkalmazáshoz.

Feljegyzés

Ugyanez a fajta gazdagépazonosító-collison fordulhat elő egy éles pontban lévő függvényalkalmazás és az előkészítési pontban lévő ugyanaz a függvényalkalmazás között, ha mindkét pont ugyanazt a tárfiókot használja.

A Functions-futtatókörnyezet 3.x verziójától kezdve a rendszer észleli a gazdagépazonosító ütközését, és a rendszer figyelmeztetést naplóz. A 4.x verzióban a rendszer naplózza a hibát, és leállítja a gazdagépet, ami kemény hibát eredményez. A gazdagép-azonosító ütközésével kapcsolatos további részletek ebben a problémában találhatók.

A gazdagépazonosító ütközéseinek elkerülése

A gazdagépazonosító-ütközések elkerülése érdekében az alábbi stratégiákat használhatja:

  • Használjon külön tárfiókot az ütközésben érintett függvényalkalmazásokhoz vagy pontokhoz.
  • Nevezze át az egyik függvényalkalmazást 32 karakternél rövidebb értékre, amely megváltoztatja az alkalmazás számított gazdagép-azonosítóját, és eltávolítja az ütközést.
  • Adjon meg explicit gazdagépazonosítót egy vagy több ütköző alkalmazáshoz. További információ: Gazdagépazonosító felülbírálása.

Fontos

A meglévő függvényalkalmazáshoz társított tárfiók módosítása vagy az alkalmazás gazdagépazonosítójának módosítása hatással lehet a meglévő függvények viselkedésére. A Blob Storage-eseményindítók például nyomon követik, hogy az egyes blobokat feldolgozzák-e úgy, hogy visszaigazolásokat írnak egy adott gazdagép-azonosító elérési útján a tárolóban. Amikor a gazdagép azonosítója megváltozik, vagy egy új tárfiókra mutat, a korábban feldolgozott blobok újra feldolgozhatók.

A gazdagép azonosítójának felülbírálása

A beállítással AzureFunctionsWebHost__hostid explicit módon beállíthat egy adott gazdagépazonosítót a függvényalkalmazáshoz az alkalmazás beállításai között. További információ: AzureFunctionsWebHost__hostid.

Amikor az ütközés a pontok között történik, minden egyes ponthoz meg kell adnia egy adott gazdagépazonosítót, beleértve az éles pontokat is. Ezeket a beállításokat üzembehelyezési beállításként is meg kell jelölnie, hogy ne legyenek felcserélve. Az alkalmazásbeállítások létrehozásáról további információt az alkalmazásbeállítások használata című témakörben talál.

Azure Arc-kompatibilis fürtök

Ha a függvényalkalmazás egy Azure Arc-kompatibilis Kubernetes-fürtön van üzembe helyezve, előfordulhat, hogy a függvényalkalmazás nem igényel tárfiókot. Ebben az esetben a Függvények csak akkor igényelnek tárfiókot, ha a függvényalkalmazás tárterületet igénylő eseményindítót használ. Az alábbi táblázat azt jelzi, hogy mely eseményindítók igényelhetnek tárfiókot, és melyek nem.

Nem kötelező tárhelyre lehet szükség
Azure Cosmos DB
HTTP
Kafka
RabbitMQ
Service Bus
Azure SQL
Blob storage
Event Grid
Event Hubs
IoT Hub
Várólista-tároló
SendGrid
SignalR
Táblatároló
Időzítő
Twilio

Ha tárterület nélkül szeretne függvényalkalmazást létrehozni egy Azure Arc-kompatibilis Kubernetes-fürtön, az az functionapp create Azure CLI-parancsot kell használnia. Az Azure CLI verziójának tartalmaznia kell az appservice-kube bővítmény 0.1.7-es vagy újabb verzióját. az --version A parancs használatával ellenőrizze, hogy a bővítmény telepítve van-e, és hogy a megfelelő verzió-e.

A függvényalkalmazás erőforrásainak az Azure CLI-étől eltérő metódusok használatával történő létrehozásához egy meglévő tárfiókra van szükség. Ha tárfiókot igénylő eseményindítókat szeretne használni, a függvényalkalmazás létrehozása előtt létre kell hoznia a fiókot.

Alkalmazás létrehozása Azure Files nélkül

Az Azure Files alapértelmezés szerint az Elastic Premium- és nem Linux-használati csomagokhoz van beállítva, hogy nagy léptékű forgatókönyvekben közös fájlrendszerként szolgáljon. A fájlrendszert a platform bizonyos funkciókhoz, például a naplóstreameléshez használja, de elsősorban az üzembe helyezett függvény hasznos adatainak konzisztenciáját biztosítja. Ha egy alkalmazás külső csomag URL-címével van üzembe helyezve, az alkalmazás tartalma külön írásvédett fájlrendszerből lesz kézbesítve. Ez azt jelenti, hogy az Azure Files nélkül is létrehozhatja a függvényalkalmazást. Ha az Azure Files használatával hozza létre a függvényalkalmazást, a rendszer továbbra is biztosít egy írható fájlrendszert. Előfordulhat azonban, hogy ez a fájlrendszer nem minden függvényalkalmazás-példányhoz érhető el.

Ha az Azure Files nincs használatban, az alábbi követelményeknek kell megfelelnie:

  • Külső csomag URL-címéről kell üzembe helyeznie.
  • Az alkalmazás nem támaszkodhat megosztott írható fájlrendszerre.
  • Az alkalmazás nem használhatja a Functions-futtatókörnyezet 1.x verzióját.
  • Naplózza a streamelési szolgáltatásokat az ügyfelekben, például az Azure Portal alapértelmezett fájlrendszernaplóiban. Ehelyett az alkalmazásnaplókra Elemzések kell támaszkodnia.

Ha a fentiek megfelelően vannak elszámolva, létrehozhatja az alkalmazást az Azure Files nélkül. Hozza létre a függvényalkalmazást az és WEBSITE_CONTENTSHARE az WEBSITE_CONTENTAZUREFILECONNECTIONSTRING alkalmazásbeállítások megadása nélkül. Ezeket a beállításokat elkerülheti, ha létrehoz egy ARM-sablont egy szabványos üzembe helyezéshez, eltávolítja a két beállítást, majd üzembe helyezi a sablont.

Mivel a Functions az Azure Filest használja a dinamikus horizontális felskálázási folyamat egyes részeiben, a skálázás korlátozott lehet, ha az Azure Files használati és rugalmas prémium csomagok nélkül fut.

Fájlmegosztások csatlakoztatása

Ez a funkció csak Linuxon való futtatáskor érhető el.

Meglévő Azure Files-megosztásokat csatlakoztathat Linux-függvényalkalmazásaihoz. Ha egy megosztást csatlakoztat a Linux-függvényalkalmazáshoz, használhat meglévő gépi tanulási modelleket vagy más adatokat a függvényeiben. A következő paranccsal csatlakoztathat egy meglévő megosztást a Linux-függvényalkalmazáshoz.

az webapp config storage-account add

Ebben a parancsban share-name a meglévő Azure Files-megosztás neve szerepel, és custom-id bármely olyan sztring lehet, amely egyedileg határozza meg a megosztást a függvényalkalmazáshoz csatlakoztatva. Emellett az az elérési út, mount-path ahonnan a megosztás elérhető a függvényalkalmazásban. mount-path formátumnak /dir-namekell lennie, és nem kezdődhet a következővel /home: .

Egy teljes példáért tekintse meg a Python-függvényalkalmazás létrehozása és egy Azure Files-megosztás csatlakoztatása parancsfájljait.

Jelenleg csak egy storage-type támogatott AzureFiles . Csak öt megosztást csatlakoztathat egy adott függvényalkalmazáshoz. A fájlmegosztás csatlakoztatása legalább 200–300 ms-tal növelheti a hideg kezdési időt, vagy még többet, ha a tárfiók egy másik régióban található.

A csatlakoztatott megosztás a megadott helyen érhető el a mount-path függvénykód számára. Ha igen, mount-path/path/to/mountakkor például a célkönyvtárat fájlrendszer API-k segítségével érheti el, ahogyan az alábbi Python-példában is látható:

import os
...

files_in_share = os.listdir("/path/to/mount")

Következő lépések

További információ az Azure Functions üzemeltetési lehetőségeiről.