AWS Lambda munkafolyamatok migrálása Azure Functions-re

Az Amazon Web Services (AWS) Lambdát használó kiszolgáló nélküli számítási feladatok migrálása Azure Functions gondos tervezést és megvalósítást igényel. Ez a cikk alapvető útmutatást nyújt a segítségére:

  • Végezzen felderítési folyamatot a meglévő számítási feladaton.
  • Megtudhatja, hogyan hajthat végre olyan kulcsfontosságú migrálási tevékenységeket, mint a premigráció tervezése és a számítási feladatok felmérése.
  • Migrált számítási feladatok kiértékelése és optimalizálása.

Hatókör

Ez a cikk egy AWS Lambda-példány Azure Functions való migrálását ismerteti.

Ez a cikk nem foglalkozik a következő címmel:

  • Migrálás saját tárolókezelési megoldásba, például Azure Container Apps keresztül.
  • AWS Lambda-tárolók üzemeltetése Azure.
  • A szervezet alapvető Azure bevezetési megközelítései, például Azure célzónák vagy a felhőadaptálási keretrendszer migrate módszertanban tárgyalt egyéb témakörök.

Migrálás GitHub Copilot és Azure készségekkel

A GitHub Copilot Azure Skills beépített támogatást nyújt az AWS Lambdáról Azure Functions-ra való migrációhoz.

A Copilot használatával interaktívan automatizálhatja a legtöbb migrálási lépést, miközben a jelen cikk az architektúra-döntések, az ellenőrzés és az éles üzemkészség referenciájaként szolgál.

Ha Azure szolgáltatásokat szeretne használni a GitHub Copilottal (Visual Studio Code-ban vagy Copilot parancssorban), kövesse az alábbi lépéseket:

Előfeltételek

  • Node.js 18+ - az MCP-kiszolgálókhoz szükséges (letöltési Node.js)
  • Hozzáférés egy Azure-előfizetéshez a migrált függvényalkalmazás létrehozásához és teszteléséhez.
  • Azure CLI (az) telepített és hitelesített (Install Azure CLI) (az login)
  • Azure Fejlesztői parancssori felület (azd) telepített és hitelesített (Install Azure Developer CLI) (azd auth login)

GitHub Copilot CLI-hez

  1. Copilot parancssori felület telepítése
  2. Adja hozzá a marketplace-forrást (csak első alkalommal):
    /plugin marketplace add microsoft/azure-skills
    
  3. Telepítse a beépülő modult:
    /plugin install azure@azure-skills
    
  4. A telepítés után töltse újra az MCP-kiszolgálókat:
    /mcp reload
    
  5. A telepítés ellenőrzése:
    /mcp status
    
    Látnia kell az Azure MCP-kiszolgálót megjelölve a listában, és látnia kell, hogy fut.

Visual Studio Code

  1. Az Azure MCP-bővítmény telepítése a VS Code Marketplace-ről (bővítményazonosító: ms-azuretools.vscode-azure-mcp-server).
  2. A bővítmény automatikusan telepíti a Azure GitHub Copilot kiegészítő bővítményét, amely tartalmazza a Azure készségeket.
  3. Nyissa meg a Copilot Chat (Ctrl+Shift+I / Cmd+Shift+I).
  4. Győződjön meg arról, hogy ügynök módban van (nem Kérdezés vagy Szerkesztés módban).
  5. Nyissa meg a parancskatalógust (Ctrl+Shift+P) –> keressen rá az "MCP" kifejezésre –> ellenőrizze, hogy a kiszolgálók megjelennek-e és futnak-e.

Ezzel a parancssorsal elindíthatja és folytathatja a migrálási munkafolyamatot a Copilot:

Help me migrate my Lambda app to Azure Functions

Ez az üzenet fázisokban végigvezeti a migrálást: először részletes értékelési jelentést hoz létre, majd migrálja a kódot és a konfigurációt, végül pedig létrehozza az üzembe helyezéshez szükséges IaC-objektumokat a Azure.

Funkciók összehasonlítása

Ez a cikk az AWS Lambda funkcióit Azure Functions megfelelőkre képezi le a kompatibilitás biztosítása érdekében.

Fontos

Dönthet úgy, hogy az optimalizálás szerepel a migrálási tervben, de Microsoft kétlépéses folyamatot javasol. Először migrálja az "azonos vagy hasonló" funkciókat, majd értékelje ki az optimalizálási lehetőségeket az Azure-on.

Az optimalizálási erőfeszítéseknek folyamatosnak kell lenniük, és végig kell futniuk a számítási feladatok csapatának változásvezérlési folyamatain. A migrálás során további képességeket felvonultató migrálás kockázattal jár, és szükségtelenül meghosszabbítja a folyamatot.

Terhelés perspektívája

Ez a cikk azt ismerteti, hogyan migrálhat egy AWS Lambda-számítási feladatot Azure Functions és a kiszolgáló nélküli számítási feladatok gyakori függőségeit. Ez a folyamat több szolgáltatást is magában foglalhat, mivel a számítási feladatok számos erőforrást és folyamatot tartalmaznak az erőforrások kezeléséhez. Átfogó stratégiához a cikkben ismertetett javaslatokat egy nagyobb csomaggal kell kombinálnia, amely magában foglalja a számítási feladat többi összetevőjét és folyamatát.

A meglévő munkaterhelés felderítési folyamatának végrehajtása

Az első lépés egy részletes felderítési folyamat végrehajtása a meglévő AWS Lambda-számítási feladatok kiértékeléséhez. A cél annak megértése, hogy mely AWS-szolgáltatásokra és -szolgáltatásokra támaszkodik a számítási feladat. Az AWS Lambda-függvények átfogó leltárának összeállításához használja az AWS eszközöket, mint például a szolgáltatásspecifikus SDK-k, API-k, a CloudTrail és az AWS CLI, hogy felmérje a munkaterhelést az AWS-en. Ismernie kell az AWS Lambda-leltár alábbi főbb jellemzőit:

  • Használati esetek
  • Konfigurációk
  • Biztonsági és hálózati beállítások
  • Eszközhasználati, monitorozási, naplózási és megfigyelhetőségi mechanizmusok
  • Függőségek
  • Megbízhatósági célkitűzések és aktuális megbízhatósági állapot
  • A tulajdonjog költsége
  • Teljesítménycélok és aktuális teljesítmény

Premigrációs tervezés elvégzése

Mielőtt megkezdené a munkaterhelés migrálását, hozzá kell rendelnie az AWS Lambda funkcióit az Azure Functions-höz a kompatibilitás biztosítása és a migrálási terv kidolgozása érdekében. Ezután kiválaszthatja a fő számítási feladatokat egy megvalósíthatósági igazoláshoz.

Emellett meg kell feleltetnie az AWS-szolgáltatásokat a Lambda által használt egyenértékű függőségekre az Azure-ban.

Az AWS Lambda funkcióinak leképezése Azure Functions

Az alábbi táblázatok az AWS Lambda fogalmait, erőforrásait és tulajdonságait hasonlítják össze a Azure Functions, pontosabban a Flex Consumption üzemeltetési csomag megfelelő megfelelőivel.

Támogatott nyelvek

Programozási nyelv Az AWS Lambda által támogatott verziók Azure Functions támogatott verziók
Node.js 20, 22 20, 22
Python 3.9, 3.10, 3.11, 3.12, 3.13 3.9, 3.10, 3.11, 3.12, 3.13
Java 8, 11, 17, 21 8, 11, 17, 21
PowerShell Nem támogatott 7,4
.NET .NET 8 .NET 8, .NET 9, .NET Framework 4.8.1
Ruby 3.2, 3.3 Egyéni kezelők
Go Csak operációs rendszer futtatókörnyezete Go (előzetes verzió)
Rozsda Csak operációs rendszer futtatókörnyezete Egyéni kezelők

Programozási modell

Tulajdonság AWS Lambda Azure Functions
Kiváltó okok Integrálható más AWS-szolgáltatásokkal eseményforrásokon keresztül. Automatikus és programozott módszereket biztosít a Lambda-függvények eseményforrásokkal való összekapcsolásához. Adott eseményeken alapuló függvényt aktivál, például egy adatbázisban lévő frissítéseket vagy egy üzenetsor új üzenetét. Egy Azure Cosmos DB eseményindító például lehetővé teszi, hogy a függvények automatikusan reagáljanak a Azure Cosmos DB tárolók beszúrására és frissítéseire. Ez a művelet lehetővé teszi az adatváltozások valós idejű feldolgozását.

A Functions integrálható a Azure Event Grid is, így képes feldolgozni Azure szolgáltatásokból származó eseményeket, például Azure Storage és Azure Media Services, valamint külső eseményforrásokat. Az Event Grid egy központosított, bővíthető esemény-útválasztási szolgáltatás, amely kiegészíti a Functions eseményindítóit, és lehetővé teszi a nagy skálázhatóságot és a széles körű eseményforrás-lefedettséget.
Kötések Nincsenek kötések. A Lambda-függvényeken belüli AWS SDK-k használatával manuálisan kezelheti a más AWS-szolgáltatásokkal való interakciókat. A bemenetként vagy kimenetként konfigurált kötések deklaratív kapcsolatokat tesznek lehetővé a szolgáltatásokhoz, ami minimálisra csökkenti az explicit SDK-kód szükségességét. Például konfigurálhatja a kötéseket úgy, hogy adatokat olvassanak a Blob Storage-ból, írjanak az Azure Cosmos DB-be, vagy e-maileket küldjenek a SendGriden keresztül, az integrációk manuális kezelése nélkül.

Eseményindítók és kötések

AWS Lambda eseményindító vagy szolgáltatás Azure Functions eseményindító Leírás
API Gateway: HTTP-kérések HTTP-eseményindító Ezek az eseményindítók lehetővé teszik a HTTP-kérések közvetlen kezelését.
Egyszerű Üzenetsor-szolgáltatás (SQS) Azure Queue Storage trigger vagy Azure Service Bus trigger Ezek az eseményindítók feldolgozhatják az üzenetsorokban lévő üzeneteket.
Egyszerű értesítési szolgáltatás (SNS) Event Grid-eseményindító vagy Service Bus trigger Ezek az eseményindítók lehetővé teszik az értesítések feldolgozását.
Kinesis (adatfolyamok) Event Hubs-eseményindító Ezek az eseményindítók adatfolyamokat használnak fel.
DynamoDB (táblamódosítások) Azure Cosmos DB változásfolyam-indító Ezek az eseményindítók figyelik a táblák változásait.
CloudWatch-események vagy EventBridge Scheduler Időzítő indító Ezek az eseményindítók ütemezett vagy időalapú függvényeket kezelnek.
S3 (objektumesemények) Blob Storage eseményindító Ezek az eseményindítók reagálnak a blobtárolóban lévő eseményekre.
Amazon relációsadatbázis-szolgáltatás (RDS) Azure SQL eseményindító Ezek az eseményindítók reagálnak az adatbázis változásaira.
Felügyelt streaming az Apache Kafka számára (MSK) Apache Kafka-eseményindító Ezek az eseményindítók reagálnak a Kafka-témahírekre.
Amazon ElastiCache Azure Redis-eseményindító Ezek az eseményindítók a Redisben lévő üzenetekre reagálnak.
Amazon MQ RabbitMQ eseményindító Ezek az eseményindítók reagálnak a RabbitMQ üzeneteire.

Engedélyek

AWS Lambda Azure Functions
A Lambda végrehajtási szerepkör engedélyezi a Lambda-függvények számára a más AWS-szolgáltatásokkal való interakciót. Minden Lambda-függvény rendelkezik egy identitás- és hozzáférés-kezelési (IAM) szerepkörsel, amely meghatározza a futtatás közbeni engedélyeit. A felügyelt identitások olyan identitást biztosítanak a függvényalkalmazás számára, amely lehetővé teszi a hitelesítést más Azure szolgáltatásokkal anélkül, hogy hitelesítő adatokat tárol a kódban. A szerepköralapú hozzáférés-vezérlés megfelelő szerepköröket rendel a felügyelt identitáshoz Microsoft Entra ID a szükséges erőforrásokhoz való hozzáférés biztosításához.
Erőforrás-alapú szabályzatok

- AWSLambda_FullAccess teljes hozzáférést biztosít minden Lambda-művelethez, beleértve a függvények létrehozását, frissítését és törlését.

- AWSLambda_ReadOnlyAccess olvasási jogot biztosít a Lambda-függvények és azok konfigurációinak megtekintésére.

- Egyéni IAM-szabályzatok.
Erőforrás-alapú beépített szerepkörök:

– A tulajdonosi szerepkör teljes hozzáférést biztosít, beleértve a hozzáférési engedélyek kezelését is.

– A közreműködői szerepkör képes függvényalkalmazások létrehozására és törlésére, beállítások konfigurálására és kód üzembe helyezésére. Nem tudja kezelni a hozzáférést.

– Az Olvasó szerepkör csak olvasási hozzáférést biztosíthat a figyelési adatokhoz és beállításokhoz. Egyéni szerepköröket is hozzárendelhet.

Függvény URL

AWS Lambda Azure Functions
https://<url-id>.lambda-url.<region>.on.aws - <appname>.azurewebsites.net (eredeti, globális alapértelmezett állomásnév)

- <appname>-<randomhash>.<Region>.azurewebsites.net (új, egyedi alapértelmezett állomásnév)

hálózat

AWS Lambda Azure Functions
Minden Lambda-függvény biztonságosan fut egy alapértelmezett rendszer által felügyelt virtuális magánfelhőben (VPC). A Lambda-függvényt úgy is konfigurálhatja, hogy egy egyéni VPC-ben lévő erőforrásokhoz férhessen hozzá. A függvényalkalmazások biztonságossá tehetik a hálózatot, és hozzáférhetnek a hálózaton belüli egyéb szolgáltatásokhoz. A bejövő hálózati hozzáférés csak az IP-címek tűzfallistájára és egy adott virtuális hálózatra korlátozható szolgáltatásvégpontokon vagy privát végpontokon keresztül. A kimenő hálózati hozzáférés a virtuális hálózati integrációs funkcióval engedélyezve van. A függvényalkalmazás teljes forgalmát a virtuális hálózat alhálózatára korlátozhatja, és a virtuális hálózaton belüli egyéb szolgáltatásokat is elérheti.

Megfigyelhetőség és monitorozás

AWS Lambda Azure Functions
Az Amazon CloudWatch metrikák gyűjtésével és nyomon követésével, naplók összesítésével és elemzésével, riasztások beállításával, egyéni irányítópultok létrehozásával, valamint az erőforrás-teljesítmény és a metrikák változásaira adott automatizált válaszok implementálásával segíti a figyelést és a megfigyelhetőséget. Azure Monitor átfogó monitorozást és megfigyelhetőséget biztosít a Azure Functions számára, különösen az Application Insights szolgáltatásán keresztül.

Az Application Insights telemetriai adatokat gyűjt, például a kérések arányát, a válaszidőket és a hibaarányokat. Megjeleníti az alkalmazásösszetevő-kapcsolatokat, figyeli a valós idejű teljesítményt, naplózza a részletes diagnosztikát, és lehetővé teszi az egyéni metrikakövetést. Ezek a képességek segítenek fenntartani a Azure Functions teljesítményét, rendelkezésre állását és megbízhatóságát, miközben egyéni irányítópultokat, riasztásokat és automatizált válaszokat is lehetővé tesz.
Az AWS Lambda telemetriai adatokat hoz létre a függvényhívásokból, és OpenTelemetria szemantikával exportálhatja ezeket az adatokat. A Lambda-függvények konfigurálhatók úgy, hogy ezeket a telemetriai adatokat bármely OpenTelemetry-kompatibilis végpontra elküldjék. Ez a művelet lehetővé teszi a nyomkövetések és naplók, a konzisztens szabványokon alapuló telemetriai adatok korrelációját, valamint az OpenTelemetryt támogató egyéb megfigyelhetőségi eszközökkel való integrációt. Konfigurálja a függvényalkalmazást a napló- és nyomkövetési adatok OpenTelemetria formátumban való exportálásához. A telemetriai adatokat bármely megfelelő végpontba exportálhatja az OpenTelemetry használatával. Az OpenTelemetria olyan előnyöket biztosít, mint a nyomkövetések és naplók korrelációja, konzisztens szabványalapú telemetriai adatok és más szolgáltatókkal való integráció. Az OpenTelemetry a függvényalkalmazás szintjén engedélyezhető a kiszolgáló konfigurációjában és a kódprojektben a függvénykódból történő adatexportálás optimalizálásához. További információért lásd: Az OpenTelemetry az Azure Functions használatával.

Skálázás és egyidejűség

AWS Lambda Azure Functions
Az AWS igény szerinti skálázási modellt használ. A függvényművelet automatikus skálázása igény szerint. Az egyidejűség vagy a példány által kezelt kérelmek száma mindig 1. A rendszer dinamikusan hozzáadja és eltávolítja a példányokat a bejövő események száma és az egyes példányok konfigurált egyidejűsége alapján. Konfigurálhatja az egyidejűségi beállítást a kívánt értékre.
Az egyidejűség értéke mindig 1. Az egyidejűség konfigurálható (>1).
Támogatja a 0-ra történő skálázást. Támogatja a 0-ra történő skálázást.

Hidegindítás elleni védelem

AWS Lambda Azure Functions
A kiosztott egyidejűség csökkenti a késést, és a kért számú függvénypéldány előzetes inicializálásával kiszámítható függvényteljesítményt biztosít. Az előre kiosztott egyidejűség megfelel a késésre érzékeny alkalmazásoknak, és külön van árazva a standard egyidejűségtől. A függvényalkalmazások lehetővé teszik az egyidejűség konfigurálását példányonként, amely meghatározza a skálázást. Több feladat is futtatható párhuzamosan az alkalmazás ugyanazon példányában, és a példány későbbi feladatai nem járnak a kezdeti hidegindítással. A függvényalkalmazások mindig kész példányokkal is rendelkeznek. Az ügyfelek bizonyos számú előre felmelegített példányt is megadhatnak a hidegindítási késés kiküszöbölése és a konzisztens teljesítmény biztosítása érdekében. A függvényalkalmazások igény szerint több példányra is felskálázhatók, miközben fenntartják a mindig kész példányokat.
A fenntartott egyidejűség a függvények egyidejű példányainak maximális számát adja meg. Ez a korlát biztosítja, hogy a fiók egyidejűségi kvótájának egy része kizárólag e függvény számára legyen félretéve. Az AWS Lambda dinamikusan skálázza ki a bejövő kéréseket, még akkor is, ha a fenntartott egyidejűség be van állítva, feltéve, hogy a kérések nem lépik túl a megadott fenntartott egyidejűségi korlátot. Az AWS Lambdában a fenntartott egyidejűség alsó korlátja 1. Az AWS Lambdában a fenntartott egyidejűség felső korlátját a fiók regionális egyidejűségi kvótája határozza meg. Alapértelmezés szerint ez a korlát 1000 egyidejű művelet minden régióban. Azure Functions nem rendelkezik a fenntartott egyidejűséggel egyenértékű funkcióval. A hasonló funkciók eléréséhez elkülönítse az egyes függvényeket külön függvényalkalmazásokra, és állítsa be az egyes alkalmazások maximális vertikális felskálázási korlátját. Azure Functions dinamikusan felskáláz, azaz további példányokat ad hozzá, illetve leskáláz, azaz eltávolít példányokat, a beállított felskálázási korlátokon belül. Alapértelmezés szerint a Rugalmas használat csomagban futó alkalmazások 100 teljes példány konfigurálható korlátjával kezdődnek. A legalacsonyabb maximális példányszám értéke 1, a legmagasabb támogatott maximális példányszám értéke pedig 1000. A regionális előfizetések memóriakvótái korlátozhatják a függvényalkalmazások méretének növelését is, de ezt a kvótát az ügyfélszolgálat meghívásával növelheti.

Árképzés

AWS Lambda Azure Functions
- Használatalapú fizetés a hívások teljes számáért és az egyes példányok GB/s fogyasztásáért (1-es rögzített egyidejűséggel)

- 1 ms-os növekmények

- 400 000 Gbps ingyenes szint
- Használatalapú fizetés a teljes hívásszámért és az egyes példányok GB/s-ért (konfigurálható egyidejű hívásokkal)

- 100 ms-os növekmények

- 100 000 Gbps ingyenes szint

- Felhasználásalapú költségek

Forráskód tárolója

AWS Lambda Azure Functions
Az AWS Lambda a függvénykód tárolását a saját felügyelt tárolórendszerében kezeli. Nem kell több tárhelyet biztosítania. A Functions használatához egy ügyfél által megadott Blob Storage tárolóra van szükség az alkalmazás kódját tartalmazó üzembehelyezési csomag fenntartásához. A beállításokat konfigurálhatja úgy, hogy ugyanazt vagy egy másik tárfiókot használjanak az üzemelő példányokhoz, és kezelheti a tárolóhoz való hozzáférés hitelesítési módszereit.

Helyi fejlesztés

AWS Lambda funkció Azure Functions funkció
- SAM CLI

- LocalStack
- Azure Functions Core Tools

- Visual Studio Code

- Visual Studio

- GitHub Codespaces

- VSCode.dev

-Maven

- Kódolás és Azure Functions helyi tesztelése

Telepítés

Tulajdonság AWS Lambda Azure Functions
Üzembehelyezési csomag - ZIP-fájl

- Konténerkép
ZIP-fájl (Tárolórendszerkép üzembe helyezéséhez használja a dedikált vagy prémium termékváltozatot.)
ZIP-fájl mérete (konzol) Legfeljebb 50 MB Legfeljebb 500 MB zip-telepítés esetén
ZIP-fájl mérete (CLI/SDK) LEGFELJEBB 250 MB a ZIP-telepítéshez, legfeljebb 500 MB a kibontott példányokhoz Legfeljebb 500 MB zip-telepítés esetén
Konténerkép mérete Maximálisan 10 GB Kontejnertámogatás rugalmas tárolással az Azure révén
Nagyméretű műtárgyak kezelése A konténerképek használata nagyobb telepítésekhez. Csatoljon Blob Storage vagy Azure Files megosztásokat, hogy nagy méretű fájlokat érhessen el az alkalmazásból.
A függvényekhez való gyakori függőségek csomagolása Rétegek Telepítés .Zip, igény szerint tárolóból vagy konténerekből (kizárólag ACA, dedikált, EP SKU-k esetén)
Kék-zöld üzembe helyezés vagy függvény verziószámozása A függvény minősítőivel egy verziószám vagy egy aliasnév használatával hivatkozhat a függvény egy adott állapotára. A minősítők lehetővé teszik a verziókezelést és a fokozatos üzembe helyezési stratégiákat. Használjon folyamatos integrációs és folyamatos szállítási rendszereket a kék-zöld telepítésekhez.

Időtúllépési és memóriakorlátok

Tulajdonság Az AWS Lambda korlátai Azure Functions korlátok
Végrehajtási időkorlát 900 másodperc (15 perc) Az alapértelmezett időkorlát 30 perc. A maximális időtúllépés nincs korlátozva. A függvény végrehajtásának türelmi ideje azonban 60 perc a skálázás során, és 10 perc a platformfrissítések során. További információt a(z) Függvényalkalmazás időtúllépési időtartama lapon talál.
Konfigurálható memória 128 MB–10 240 MB, 64 MB-os növekményekben A Functions támogatja a 2 GB-os és a 4 GB-os példányméreteket. Egy adott előfizetés minden régiója 512 000 MB memóriakorláttal rendelkezik az összes alkalmazáspéldány esetében, amelyet a támogatási szolgálat meghívásával növelheti. A régió összes függvényalkalmazásában található összes példány teljes memóriahasználatának ebben a kvótában kell maradnia.

Bár a példányok mérete 2 GB és 4 GB lehet, minden egyes példány esetén az egyidejűség meghaladhatja az 1-et. Ezért egyetlen példány több egyidejű végrehajtást is képes kezelni a konfigurációtól függően. Az egyidejűség megfelelő konfigurálása segíthet optimalizálni az erőforrás-használatot és kezelni a teljesítményt. A memóriafoglalási és egyidejűségi beállítások kiegyensúlyozásával hatékonyan kezelheti a függvényalkalmazások számára lefoglalt erőforrásokat, és hatékony teljesítmény- és költségszabályozást biztosíthat. További információ: Regionális előfizetések memóriakvótái.

Titkos kódok kezelése

AWS Lambda Azure Functions
Az AWS Titkos kódok kezelője lehetővé teszi olyan titkos kódok tárolását, kezelését és lekérését, mint az adatbázis hitelesítő adatai, AZ API-kulcsok és más bizalmas információk. A Lambda-függvények az AWS SDK használatával lekérhetik a titkos kulcsokat. Javasoljuk, hogy az Azure erőforrásokhoz való biztonságos hozzáférés érdekében használjon olyan megközelítéseket, amelyek nem igényelnek hitelesítő adatok kódba ágyazását, például az Azure által kezelt identitásokat. Ha titkos kulcsokra van szükség, például partner- vagy örökölt rendszerekhez, Azure Key Vault biztonságos megoldást kínál a titkos kódok, kulcsok és tanúsítványok tárolására és kezelésére.
Az AWS Systems Manager paramétertároló egy olyan szolgáltatás, amely konfigurációs adatokat és titkos kulcsokat tárol. A paraméterek AWS KMS használatával titkosíthatók, és a Lambda függvények az AWS SDK használatával kérhetők le.
A Lambda-függvények környezeti változókban tárolhatják a konfigurációs beállításokat. A bizalmas adatok kmS-kulccsal titkosíthatók a biztonságos hozzáférés érdekében.
Azure Functions alkalmazásbeállításokat használ a konfigurációs adatok tárolásához. Ezek a beállítások közvetlenül a környezeti változókhoz vannak rendelve a függvényen belüli egyszerű használat érdekében. Ezek a beállítások titkosíthatók és biztonságosan tárolhatók a Azure App Service konfigurációban.
A fejlettebb forgatókönyvek esetében Azure App Configuration robusztus funkciókat biztosít több konfiguráció kezeléséhez. Lehetővé teszi a szolgáltatások megjelölését, és támogatja a dinamikus frissítéseket a szolgáltatások között.

Állapotkezelés

AWS Lambda Azure Functions
Az AWS Lambda olyan szolgáltatások használatával kezeli az egyszerű állapotkezelést, mint az Amazon S3 objektumtároláshoz, a DynamoDB a gyors és méretezhető NoSQL állapottároláshoz, valamint az üzenetsorok kezelésére szolgáló SQS. Ezek a szolgáltatások biztosítják az adatok megőrzését és konzisztenciáját a Lambda-függvények végrehajtása során. Azure Functions AzureWebJobsStorage használatával kezeli az állapotot azáltal, hogy engedélyezi a kötéseket és eseményindítókat Azure Storage szolgáltatásokkal, például a Blob Storage, a Queue Storage és a Table Storage szolgáltatással. Lehetővé teszi a függvények számára az állapotok egyszerű olvasását és írását. Az összetettebb állapotkezelés érdekében Durable Functions fejlett munkafolyamat-vezénylési és állapotmegőrzési képességeket biztosít Azure Storage használatával.

Állapotalapú vezénylés

AWS Lambda Azure Functions
Nincs natív rendszervezérlés. Az AWS-lépésfüggvények használata munkafolyamatokhoz. Durable Functions tartós munkafolyamat-vezénylés és állapotalapú entitások biztosításával segít az összetett állapotkezelésben. Lehetővé teszi a hosszú ideig futó műveleteket, az automatikus ellenőrzőpontozást és a megbízható állapotmegőrzést. Ezek a funkciók lehetővé teszik a bonyolult munkafolyamatok létrehozását az állapotalapú alkalmazások hibatűrésének és méretezhetőségének biztosítása érdekében.

Egyéb különbségek és szempontok

Tulajdonság AWS Lambda Azure Functions
Csoportosító függvények Minden AWS Lambda-függvény egy független entitás. A függvényalkalmazások több függvény tárolójaként szolgálnak. Megosztott végrehajtási környezetet és konfigurációt biztosít a benne található függvényekhez. Több függvény egyetlen entitásként való kezelése leegyszerűsíti az üzembe helyezést és a felügyeletet. A függvények függvényenkénti skálázási stratégiát is használnak, ahol az egyes függvények egymástól függetlenül vannak skálázva, kivéve a HTTP, Blob Storage és Durable Functions eseményindítókat. Ezek az aktivált függvények a saját csoportjaikban skálázhatók.
Egyedi domainek API Gatewayen keresztül engedélyezve Egyéni tartományokat konfigurálhat közvetlenül egy függvényalkalmazásban vagy Azure API Management.
Saját tároló támogatása Egyéni tárolók támogatása a Lambda Container Image-en keresztül Azure Functions támogatja a Container Apps-környezetben futó custom-tárolókat.

Migrálási terv létrehozása

  1. Válassza ki a fő számítási feladatokat a koncepció igazolásához.

    Először válasszon ki egy-két közepes méretű, nem kritikus számítási feladatot a teljes készletből. Ezek a számítási feladatok szolgálnak a megvalósíthatósági igazolások migrálásának alapjaként. Tesztelheti a folyamatot, és azonosíthatja a lehetséges kihívásokat anélkül, hogy jelentős fennakadásokat kockáztathat a műveletekben.

  2. Tesztelje iteratív módon, és gyűjtsön visszajelzést.

    A koncepció bizonyítékával visszajelzéseket gyűjthet, azonosíthatja a hiányosságokat, és finomhangolhatja a folyamatot, mielőtt nagyobb számítási feladatokra skálázhat. Ez az iteratív megközelítés biztosítja, hogy a teljes léptékű migrálásra való áttérésig a lehetséges kihívásokat kezelje, és finomítsa a folyamatot.

A migrálási eszközök létrehozása

Ez a lépés egy átmeneti fejlesztési fázis. Ebben a fázisban forráskód- és infrastruktúrakód-(IaC-) sablonokat és üzembehelyezési folyamatokat hozhat létre, amelyek a Azure számítási feladatait képviselik. A migrálás végrehajtása előtt át kell igazítania a függvénykódot a kompatibilitáshoz és az ajánlott eljárásokhoz.

A függvénykód, a konfigurációs fájlok és az infrastruktúra-kód fájljainak adaptálása

Azure Functions futtatókörnyezeti követelmények kódjának frissítése:

  • Módosítsa a kódot úgy, hogy megfeleljen a Azure Functions programozási modellnek. A függvény-aláírásokat például az Azure Functions által igényelt formátumnak megfelelően alakíthatja át. További információ a függvénydefinícióról és a végrehajtási környezetről: Azure Functions fejlesztői útmutatók.

  • A Azure Functions bővítménycsomag segítségével kezelheti az AWS-szolgáltatásokhoz hasonló különböző kötéseket és triggereket. .NET alkalmazások esetében a bővítménycsomag helyett a megfelelő NuGet-csomagokat kell használnia.

  • A bővítménycsomag használatával integrálható más Azure szolgáltatásokkal, például Azure Storage, Azure Service Bus és Azure Cosmos DB anélkül, hogy manuálisan kellene konfigurálnia az egyes kötéseket SDK-k használatával. További információért lásd: Függvények csatlakoztatása Azure-szolgáltatásokhoz kötések használatával és Azure Functions kötési kifejezésminták.

Ezek a kódrészletek a gyakori SDK-kódokra mutatnak példákat. Az AWS Lambda-kód megfelel a Azure Functions megfelelő eseményindítóinak, kötéseinek vagy SDK-kódrészleteinek.

Amazon S3 vagy Azure Blob Storage adatolvasás

AWS Lambda-kód (SDK)

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

exports.handler = async (event) => {
const params = {
Bucket: 'my-bucket',
Key: 'my-object.txt',
};
const data = await
s3.getObject(params).promise();
console.log('File content:',
data.Body.toString());
};       

Azure Functions kód (kioldás)

import { app } from '@azure/functions';

app.storageblob('blobTrigger', { 
path: 'my-container/{blobName}',
connection: 'AzureWebJobsStorage',
}, async (context, myBlob) => { 
context.log(`Blob content:
${myBlob.toString()}`);
});

Írás az Amazon Simple Queue Service (SQS) és az Azure Queue Storage ellenében

AWS Lambda-kód (SDK)

const AWS = require('aws-sdk');
const sqs = new AWS.SQS(); 

exports.handler = async (event) => {
const params = {
QueueUrl:
'https://sqs.amazonaws.com/123456789012/MyQueue',
MessageBody: 'Hello, world!',
};
await
sqs.sendMessage(params).promise();
};

Azure Functions kód (kioldás)

import { app } from '@azure/functions';

app.queue('queueTrigger', { 
queueName: 'myqueue-items',
connection: 'AzureWebJobsStorage',
}, async (context, queueMessage) => {
context.log(`Queue message: 
${queueMessage}`);
}); 

Írás a DynamoDB-be szemben az Azure Cosmos DB-vel

AWS Lambda-kód (SDK)

const AWS = require('aws-sdk'); 
const dynamoDb = new AWS.DynamoDB.DocumentClient();   

exports.handler = async (event) => { 
const params = { 
TableName: 'my-table', 
Key: { id: '123' }, 
}; 
const data = await dynamoDb.get(params).promise(); 
console.log('DynamoDB record:', data.Item); 
}; 

Azure Functions kód (kioldás)

import { app } from '@azure/functions';  

app.cosmosDB('cosmosTrigger', { 
connectionStringSetting: 'CosmosDBConnection', 
databaseName: 'my-database', 
containerName: 'my-container', 
leaseContainerName: 'leases', 
}, async (context, documents) => { 
documents.forEach(doc => { 
context.log(`Cosmos DB document: ${JSON.stringify(doc)}`); 
}); 
}); 

Amazon CloudWatch-események Azure időzítő eseményindítóval szemben

AWS Lambda-kód (SDK)

exports.handler = async (event) => {
console.log('Scheduled event:', event); 
}; 

Azure Functions kód (kioldás)

import { app } from '@azure/functions'; 

app.timer('timerTrigger', { schedule: '0 */5 * * * *', // Runs every 5 minutes }, async (context, myTimer) => { if (myTimer.isPastDue) { context.log('Timer is running late!'); } context.log(Timer function executed at: ${new Date().toISOString()}); });

Amazon Simple Notification Service (SNS) Azure Event Grid eseményindítóval szemben

AWS Lambda-kód (SDK)

const AWS = require('aws-sdk'); 
const sns = new AWS.SNS();   

exports.handler = async (event) => { 
const params = { 
Message: 'Hello, Event Grid!', 
TopicArn: 'arn:aws:sns:us-east-1:123456789012:MyTopic', 
}; 
await sns.publish(params).promise(); 
}; 

Azure Functions kód (kioldás)

import { app } from '@azure/functions'; 

app.eventGrid('eventGridTrigger', {}, 
async (context, eventGridEvent) => { 

context.log(`Event Grid event: 
${JSON.stringify(eventGridEvent)}`); 

}); 

Amazon Kinesis szemben egy Azure Event Hubs "trigger"-rel

AWS Lambda-kód (SDK)

const AWS = require('aws-sdk'); 
const kinesis = new AWS.Kinesis();   

exports.handler = async (event) => { 
const records = 
event.Records.map(record => 
Buffer.from(record.kinesis.data, 
'base64').toString()); 
console.log('Kinesis records:', records); 
}; 

Azure Functions kód (kioldás)

import { app } from '@azure/functions'; 
app.eventHub('eventHubTrigger', {  
connection: 'EventHubConnection',  
eventHubName: 'my-event-hub',  
}, async (context, eventHubMessages) => 
{  
eventHubMessages.forEach(message => 
{  
context.log(`Event Hub message: 
${message}`);  
});  
});

Az AWS Lambda-kód és Azure Functions kód összehasonlításához tekintse meg a következő GitHub adattárakat:

Konfigurációs beállítások módosítása

Győződjön meg arról, hogy a függvény időtúllépési és memória beállításai kompatibilisek az Azure Functions-szal. A konfigurálható beállításokról további információt host.json Azure Functions hivatkozásában talál.

Kövesse az engedélyek, a hozzáférés, a hálózatkezelés és az üzembehelyezési konfigurációk ajánlott eljárásait.

Engedélyek konfigurálása

Kövesse az ajánlott eljárásokat, amikor beállítja a függvényalkalmazásokra vonatkozó engedélyeket. További információ: Függvényalkalmazás és tárfiók konfigurálása felügyelt identitással.

main.bicepsz

// User-assigned managed identity that the function app uses to reach Storage and Service Bus
module processorUserAssignedIdentity './core/identity/userAssignedIdentity.bicep' = {
  name: 'processorUserAssignedIdentity'
  scope: rg
  params: {
    location: location
    tags: tags
    identityName: !empty(processorUserAssignedIdentityName) ? processorUserAssignedIdentityName : '${abbrs.managedIdentityUserAssignedIdentities}processor-${resourceToken}'
  }
}

További információ: rbac.bicep.

Hálózati hozzáférés konfigurálása

Azure Functions támogatja a virtual hálózati integrációt, amely hozzáférést biztosít a függvényalkalmazásnak a virtuális hálózat erőforrásaihoz. Az integráció után az alkalmazás átirányítja a kimenő forgalmat a virtuális hálózaton keresztül. Ezután az alkalmazás olyan szabályokkal érheti el a privát végpontokat vagy erőforrásokat, amelyek csak bizonyos alhálózatokból érkező forgalmat engedélyezik. Ha a cél egy, a virtuális hálózaton kívüli IP-cím, a forrás IP-cím az alkalmazás tulajdonságai között felsorolt címek egyike, kivéve, ha NAT-átjárót konfigurál.

Ha engedélyezi a virtuális hálózati integrációt a függvényalkalmazások számára, kövesse a webalkalmazások és függvényalkalmazások virtuális hálózati integrációjára vonatkozó TSG ajánlott eljárásait.

main.bicepsz

// Virtual network and private endpoint
module serviceVirtualNetwork 'app/vnet.bicep' = {
  name: 'serviceVirtualNetwork'
  scope: rg
  params: {
    location: location
    tags: tags
    vNetName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}'
  }
}  

module servicePrivateEndpoint 'app/storage-PrivateEndpoint.bicep' = {
  name: 'servicePrivateEndpoint'
  scope: rg
  params: {
    location: location
    tags: tags
    virtualNetworkName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}'
    subnetName: serviceVirtualNetwork.outputs.peSubnetName
    resourceName: storage.outputs.name
  }
}

További információ: VNet.bicep és storage-PrivateEndpoint.bicep.

Üzembehelyezési beállítások konfigurálása

Az üzemelő példányok egyetlen útvonalat követnek. Miután elkészíti a projektkódot, és becsomagozza egy alkalmazáscsomagba, helyezze üzembe egy Blob Storage tárolóban. Amikor elindul, az alkalmazás lekéri a csomagot, és onnan futtatja a függvénykódot. Alapértelmezés szerint ugyanaz a tárfiók, amely belső gazdagép metaadatait tárolja, például AzureWebJobsStorageüzembehelyezési tárolóként is szolgál. Használhat azonban alternatív tárfiókot, vagy kiválaszthatja az előnyben részesített hitelesítési módszert az alkalmazás üzembehelyezési beállításainak konfigurálásával. További információkért tekintse meg az üzembehelyezési technológia részleteit és az üzembehelyezési beállítások konfigurálását.

IaC-fájlok létrehozása

  • IaC-fájlok létrehozásához használjon olyan eszközöket, mint Bicep, Azure Resource Manager sablonok vagy Terraform, hogy Azure erőforrásokat telepítsen.

  • Definiáljon erőforrásokat, például Azure Functions, tárfiókokat és hálózati összetevőket az IaC-fájlokban.

  • Használja ezt a IaC-mintatárat Azure Functions javaslatokat és ajánlott eljárásokat használó mintákhoz.

Eszközök használata újrabontáshoz

A VS Code-ban az GitHub Copilot-hez hasonló eszközökkel segíthet a kód újrabontásában, az adott módosítások manuális újrabontásában vagy más migrálási segédletekben.

Az alábbi cikkek konkrét példákat és részletes lépéseket tartalmaznak a migrálási folyamat megkönnyítéséhez:

Kidolgozása egy lépésről-lépésre folyamatnak a 0. napi migrációhoz.

Átállási és visszaállási stratégiákat fejleszthet ki a migráláshoz, és alaposan tesztelheti őket egy tesztkörnyezetben. Javasoljuk, hogy végezze el a teljes körű tesztelést, mielőtt végre áttér az AWS Lambda-ról Azure Functions.

  • Funkciók ellenőrzése

    • Az Azure Functions kódolása és tesztelése helyben.

    • Tesztelje alaposan az egyes függvényeket, hogy a várt módon működjön. Ezeknek a teszteknek tartalmazniuk kell a bemenet/kimenet, az eseményindítók és a kötések ellenőrzését.

    • Használjon olyan eszközöket, mint a curl vagy a REST Client kiterjesztések a VS Code-ban HTTP-kérések küldéséhez HTTP által indított funkciókhoz.

    • Más eseményindítók, például időzítők vagy üzenetsorok esetén győződjön meg arról, hogy az eseményindítók megfelelően aktiválódnak, és a függvények a várt módon futnak.

  • Teljesítmény ellenőrzése

    • Végezzen teljesítménytesztelést az új Azure Functions üzembe helyezés és az előző AWS Lambda üzembe helyezés összehasonlításához.

    • Monitorozza a metrikákat, például a válaszidőt, a futási időt és az erőforrás-felhasználást.

    • Az Application Insights használatával figyelhet, naplóelemzést és hibaelhárítást készíthet a tesztelési fázisban.

  • Hibaelhárítás a problémák diagnosztizálása és megoldása funkcióval

    Az Azure portálon a diagnosztizálás és problémamegoldás funkcióval megoldhatja a függvényalkalmazás problémáit. Ez az eszköz diagnosztikai funkciók készletét biztosítja, amelyek segítségével gyorsan azonosíthatja és megoldhatja a gyakori problémákat, például az alkalmazások összeomlását, a teljesítménycsökkenést és a konfigurációs problémákat. Kövesse az eszköz által az Ön által azonosított problémák megoldásához szükséges irányított hibaelhárítási lépéseket és javaslatokat.

A migrált számítási feladat végső állapotának kiértékelése

Az erőforrások AWS-ben való leszerelése előtt biztosnak kell lennie abban, hogy a platform megfelel az aktuális számítási feladatokra vonatkozó elvárásoknak, és hogy semmi sem blokkolja a számítási feladatok karbantartását vagy további fejlesztését.

A függvények üzembe helyezése és tesztelése a teljesítmény és a helyesség ellenőrzéséhez.

Üzembe helyezés a Azure

Számítási feladatok üzembe helyezése a VS Code közzétételi funkciójával. A számítási feladatokat a parancssorból is üzembe helyezheti a Azure Functions Core Tools vagy a Azure CLI használatával. Azure DevOps és GitHub Actions a One Deployet is használja.

  • Azure Functions Core Tools: Futtasd a függvényalkalmazásodat a Azure Functions Core Tools segítségével a func azure functionapp publish <FunctionAppName> parancs használatával.

  • Folyamatos integrációs és folyamatos üzembe helyezési (CI/CD) folyamatok: CI/CD-folyamat beállítása olyan szolgáltatások használatával, mint a GitHub Actions, a Azure DevOps vagy egy másik CI/CD-eszköz.

További információ: Folyamatos kézbesítés GitHub Actions használatával vagy Folyamatos kézbesítés Azure Pipelines használatával.

A migrálási mintaforgatókönyvek megismerása

Használja a MigrationGetStarted adattárat sablonként a koncepció igazolásának megkezdéséhez. Ez az adattár tartalmaz egy üzembe helyezésre kész Azure Functions projektet, amely rendelkezik az első lépésekhez szükséges infrastruktúrával és forráskódfájlokkal.

Ha inkább a Terraformot szeretné használni, használja helyette a MigrationGetStarted-Terraformot .

Az alkalmazás teljesítményének optimalizálása és figyelése a Azure

A számítási feladatok migrálása után javasoljuk, hogy vizsgálja meg a Azure további funkcióit. Ezek a funkciók segíthetnek a jövőbeli számítási feladatokra vonatkozó követelmények teljesítésében és a hiányosságok megszüntetésében.

Az Application Insights használata monitorozáshoz és hibaelhárításhoz

Engedélyezze az Application Insights függvényalkalmazás számára, hogy részletes telemetriai adatokat gyűjtsön a figyeléshez és a hibaelhárításhoz. Az Application Insightst a Azure portálon vagy a függvényalkalmazás host.json konfigurációs fájljában engedélyezheti. Az Application Insights engedélyezése után a következőt teheti:

  • Telemetriai adatok gyűjtése. Az Application Insights különböző telemetriai adatokat biztosít, például kérelemnaplókat, teljesítménymetrikákat, kivételeket és függőségeket.

  • Naplók és metrikák elemzése. A naplók, metrikák és egyéb telemetriaadatok megjelenítéséhez és elemzéséhez az Application Insights irányítópultját a Azure portálon érheti el. A beépített eszközökkel egyéni lekérdezéseket hozhat létre, és adatokat jeleníthet meg a függvényalkalmazás teljesítményének és viselkedésének elemzéséhez.

  • Riasztások beállítása. Riasztások konfigurálása az Application Insightsban kritikus problémákról, teljesítménycsökkenésről vagy adott eseményekről. Ezek a riasztások segítenek proaktívan monitorozni és gyorsan reagálni a problémákra.

Optimalizálás a költségekre és a teljesítményre

  • Skálázás és teljesítményoptimalizálás:

    • Az automatikus skálázási funkciókkal hatékonyan kezelheti a különböző számítási feladatokat.

    • Optimalizálja a függvénykódot a teljesítmény javítása érdekében a futási idő csökkentésével, a függőségek optimalizálásával és a hatékony kódolási eljárásokkal.

    • Gyorsítótárazási stratégiák implementálása a gyakran használt adatok ismételt feldolgozásának és késésének csökkentése érdekében.

  • Költségkezelés:

    • A Microsoft Cost Management eszközökkel figyelheti és elemezheti Azure Functions költségeit.

    • Költségvetés- és költségriasztások beállítása a költségek hatékony kezeléséhez és előrejelzéséhez.