Migrace úloh AWS Lambda do Azure Functions

Migrace bezserverové úlohy, která používá Amazon Web Services (AWS) Lambda k Azure Functions vyžaduje pečlivé plánování a implementaci. Tento článek obsahuje základní pokyny, které vám pomůžou:

  • Uskutečněte proces zjišťování ve vaší stávající pracovní zátěži.
  • Zjistěte, jak provádět klíčové aktivity migrace, jako je plánování předběžné migrace a hodnocení úloh.
  • Vyhodnocení a optimalizace migrované úlohy

Scope

Tento článek popisuje migraci instance AWS Lambda do Azure Functions.

Tento článek se nezabývá:

  • Migrace do vlastního řešení hostování kontejnerů, například prostřednictvím Azure Container Apps
  • Hostování kontejnerů AWS Lambda v Azure
  • Základní přístupy k přijetí Azure vaší organizací, jako jsou cílové zóny Azure nebo jiná témata, která se řeší v metodologii Cloud Adoption Framework migrace.

Migrace s využitím dovedností GitHub Copilot a Azure

GitHub Copilot s Azure Skills má integrovanou podporu pro průvodce migrací z AWS Lambda na Azure Functions.

Pomocí Copilot můžete interaktivně automatizovat většinu kroků migrace a použít tento článek jako referenci pro rozhodování o architektuře, ověření a připravenost na produkční prostředí.

Pokud chcete používat Azure Dovednosti v GitHub Copilot (v editoru VS Code nebo Copilot CLI), postupujte takto:

Předpoklady

  • Node.js 18+ – vyžaduje se pro servery MCP (Stáhnout Node.js)
  • Přístup k předplatnému Azure pro vytváření a testování migrované aplikace funkcí
  • Azure CLI (az) nainstalované a ověřené (Install Azure CLI) (az login)
  • Azure Cli pro vývojáře (azd) nainstalované a ověřené (Install Azure Developer CLI) (azd auth login)

Pro rozhraní příkazového řádku GitHub Copilot

  1. Instalace rozhraní příkazového řádku Copilot
  2. Přidejte zdroj marketplace (jenom poprvé):
    /plugin marketplace add microsoft/azure-skills
    
  3. Nainstalujte modul plug-in:
    /plugin install azure@azure-skills
    
  4. Po instalaci znovu načtěte servery MCP:
    /mcp reload
    
  5. Ověření instalace:
    /mcp status
    
    Měli byste vidět server Azure MCP v seznamu a spuštěný.

Pro Visual Studio Code

  1. Instalujte rozšíření Azure MCP z marketplace VS Code (ID rozšíření: ms-azuretools.vscode-azure-mcp-server).
  2. Rozšíření automaticky nainstaluje doprovodné rozšíření, GitHub Copilot pro Azure, které obsahuje Azure dovednosti.
  3. Otevřete Copilot Chat (Ctrl+Shift+I / Cmd+Shift+I).
  4. Ujistěte se, že jste v režimu agenta (ne v režimu Ask nebo Edit).
  5. Otevřete paletu příkazů (Ctrl+Shift+P) –> vyhledejte "MCP" –> ověřte, jestli jsou servery uvedené a spuštěné.

Pomocí této výzvy spusťte a pokračujte v pracovním postupu migrace v Copilot:

Help me migrate my Lambda app to Azure Functions

Tato výzva provede migraci ve fázích: nejprve vygeneruje podrobnou hodnotící zprávu, poté migruje kód a konfiguraci, a nakonec sestaví požadované prostředky infrastruktury jako kódu (IaC) pro nasazení na Azure.

Porovnání funkcí

Tento článek mapuje funkce AWS Lambda na ekvivalentům Azure Functions, aby zajistil kompatibilitu.

Důležité

Do plánu migrace můžete zahrnout optimalizaci, ale Microsoft doporučuje dvoustupňový proces. Nejprve migrujte funkce like-to-like a pak vyhodnoťte příležitosti optimalizace na Azure.

Optimalizace by měla být průběžná a prováděná prostřednictvím procesů řízení změn vašeho pracovního týmu. Migrace, která během migrace přidává další možnosti, způsobuje riziko a zbytečně rozšiřuje proces.

Perspektiva úloh

Tento článek se zaměřuje na migraci úlohy AWS Lambda na Azure Functions a běžné závislosti pro bezserverové úlohy. Tento proces může zahrnovat několik služeb, protože úlohy obsahují mnoho prostředků a procesů pro správu těchto prostředků. Pokud chcete mít komplexní strategii, musíte zkombinovat doporučení uvedená v tomto článku s větším plánem, který zahrnuje další komponenty a procesy ve vaší úloze.

Proveďte proces zjišťování vaší stávající pracovní zátěže.

Prvním krokem je provést podrobný proces zjišťování, který vyhodnotí vaši stávající úlohu AWS Lambda. Cílem je pochopit, na kterých funkcích a službách AWS vaše úlohy závisí. Zkompilujte komplexní inventář funkcí AWS Lambda pomocí nástrojů AWS, jako jsou sady SDK specifické pro služby, rozhraní API, CloudTrail a AWS CLI, abyste mohli vyhodnotit úlohy v AWS. Měli byste porozumět následujícím klíčovým aspektům inventáře AWS Lambda:

  • Případy použití
  • Konfigurace
  • Nastavení zabezpečení a sítě
  • Nástroje, monitorování, protokolování a mechanismy pozorovatelnosti
  • Závislosti
  • Cíle spolehlivosti a aktuální stav spolehlivosti
  • Náklady na vlastnictví
  • Cíle výkonu a aktuální výkon

Předběžné plánování migrace

Než začnete s migrací úloh, musíte namapovat funkce AWS Lambda na Azure Functions, aby se zajistila kompatibilita a vývoj plánu migrace. Pak můžete vybrat klíčové úlohy pro testování konceptu.

Musíte také mapovat služby AWS, na kterých Lambda závisí, do ekvivalentních závislostí v Azure.

Mapování funkcí AWS Lambda na Azure Functions

Následující tabulky porovnávají koncepty, prostředky a vlastnosti AWS Lambda s odpovídajícími ekvivalenty v Azure Functions, konkrétně plánu hostování Flex Consumption.

Podporované jazyky

Programovací jazyk Podporované verze AWS Lambda Azure Functions podporované verze
Node.js 20, 22 22, 24
Python 3.9, 3.10, 3.11, 3.12, 3.13 3.10, 3.11, 3.12, 3.13
Java 8, 11, 17, 21 8, 11, 17, 21
PowerShell Není podporováno 7,4
platforma .NET .NET 8 .NET 8, .NET 9, .NET Framework 4.8.1
Ruby 3.2, 3.3 Vlastní zpracovatelé
Go Runtime pouze pro OS Go (Preview)
Rust Runtime pouze pro OS Vlastní zpracovatelé

Programovací model

Vlastnost AWS Lambda Azure Functions
Spouštěče Integruje se s dalšími službami AWS prostřednictvím zdrojů událostí. Poskytuje automatické a programové způsoby propojení funkcí Lambda se zdroji událostí. Aktivuje funkci na základě konkrétních událostí, jako jsou aktualizace v databázi nebo nová zpráva ve frontě. Trigger Azure Cosmos DB například umožňuje funkcím automaticky reagovat na vkládání a aktualizace v kontejneru Azure Cosmos DB. Tato akce umožňuje zpracování změn dat v reálném čase.

Funkce se také integruje s Azure Event Grid, takže může zpracovávat události ze služeb Azure, jako jsou Azure Storage a Azure Media Services a externí zdroje událostí. Event Grid slouží jako centralizovaná rozšiřitelná služba směrování událostí, která doplňuje triggery služby Functions a umožňuje vysokou škálovatelnost a široké pokrytí zdroje událostí.
Vazby Nemá vazby. Používá sady AWS SDK v rámci funkcí lambda k ruční správě interakcí s jinými službami AWS. Vazby nakonfigurované jako vstup nebo výstup umožňují deklarativní připojení ke službám, které minimalizují potřebu explicitního kódu sady SDK. Můžete například nakonfigurovat vazby pro čtení z Blob Storage, zápis do Azure Cosmos DB nebo odesílání e-mailů přes SendGrid, aniž byste museli ručně spravovat integrace.

Spouštěče a vazby událostí

Spouštěč nebo služba AWS Lambda Spouštěč Azure Functions Popis
Brána rozhraní API: Požadavky HTTP Spouštěč HTTP Tyto triggery umožňují zpracovávat požadavky HTTP přímo.
Jednoduchá fronta služba (SQS) Spouštěč Azure Queue Storage nebo Spouštěč Azure Service Bus Tyto triggery můžou zpracovávat zprávy ve frontách.
Služba SNS (Simple Notification Service) Aktivátor služby Event Grid nebo Aktivátor služby Service Bus Tyto triggery umožňují zpracování oznámení.
Kinesis (datové proudy) Spouštěč Event Hubs Tyto triggery využívají datové proudy.
DynamoDB (změny tabulky) trigger pro změnový kanál Azure Cosmos DB Tyto triggery naslouchají změnám v tabulkách.
CloudWatch Events nebo EventBridge Scheduler Spoušť časovače Tyto triggery zpracovávají plánované nebo časové funkce.
S3 (události objektů) trigger Blob Storage Tyto spouště reagují na události v blobovém úložišti.
Amazon Relational Database Service (RDS) spouštěč Azure SQL Tyto triggery reagují na změny databáze.
Spravované streamování pro Apache Kafka (MSK) spouštěč Apache Kafka Tyto spouštěče reagují na zprávy z Kafka témat.
Amazon ElastiCache Spouštěč Azure Redis Tyto triggery reagují na zprávy v Redisu.
Amazon MQ RabbitMQ spouštěč Tyto triggery reagují na zprávy v RabbitMQ.

Povolení

AWS Lambda Azure Functions
Spouštěcí role Lambda uděluje funkcím Lambda oprávnění k interakci s jinými službami AWS. Každá funkce lambda má přidruženou roli správy identit a přístupu (IAM), která určuje svá oprávnění při spuštění. Spravované identity poskytují identitu pro vaši aplikaci funkcí, která umožňuje ověřování s jinými službami Azure bez uložení přihlašovacích údajů v kódu. Řízení přístupu na základě role přiřadí spravované identitě v Microsoft Entra ID odpovídající role, aby bylo možné udělit přístup k požadovaným prostředkům.
Prohlášení o zásadách založených na prostředcích:

– AWSLambda_FullAccess poskytuje úplný přístup ke všem operacím Lambda, včetně vytváření, aktualizace a odstraňování funkcí.

– AWSLambda_ReadOnlyAccess poskytuje přístup jen pro čtení k zobrazení funkcí Lambda a jejich konfigurací.

- Vlastní politiky IAM.
Předdefinované role založené na prostředcích:

– Role Vlastník poskytuje úplný přístup, včetně správy přístupových oprávnění.

– Role Přispěvatel může vytvářet a odstraňovat funkční aplikace, konfigurovat nastavení a spouštět kód. Nemůže spravovat přístup.

– Role Monitorovací čtenář může udělit pouze přístup ke čtení k monitorovacím datům a nastavením. Může také přidělit vlastní role.

Adresa URL funkce

AWS Lambda Azure Functions
https://<url-id>.lambda-url.<region>.on.aws - <appname>.azurewebsites.net (původní, globální výchozí název hostitele)

- <appname>-<randomhash>.<Region>.azurewebsites.net (nový, jedinečný výchozí název hostitele)

Sítě

AWS Lambda Azure Functions
Všechny funkce Lambda běží bezpečně uvnitř výchozího virtuálního privátního cloudu spravovaného systémem (VPC). Funkci Lambda můžete také nakonfigurovat tak, aby přistupovala k prostředkům ve vlastním VPC. Aplikace funkcí můžou být zabezpečené v síti a můžou přistupovat k dalším službám v síti. Příchozí síťový přístup lze omezit pouze na seznam IP adres firewallu a na konkrétní virtuální síť prostřednictvím služebních koncových bodů nebo privátních koncových bodů. Odchozí síťový přístup je povolený prostřednictvím funkce integrace virtuální sítě. Aplikace funkcí může mít veškerý provoz omezený na podsíť virtuální sítě a může také přistupovat k jiným službám v této virtuální síti.

Pozorovatelnost a monitorování

AWS Lambda Azure Functions
Amazon CloudWatch pomáhá s monitorováním a pozorovatelnostmi shromažďováním a sledováním metrik, agregací a analýzou protokolů, nastavením alarmů, vytvářením vlastních řídicích panelů a implementací automatizovaných odpovědí na změny výkonu a metrik prostředků. Azure Monitor poskytuje komplexní monitorování a pozorovatelnost pro Azure Functions, zejména prostřednictvím funkce Application Insights.

Application Insights shromažďuje telemetrická data, jako jsou frekvence požadavků, doby odezvy a míra selhání. Vizualizuje vztahy komponent aplikací, monitoruje výkon v reálném čase, zaznamenává podrobné diagnostiky a umožňuje vlastní sledování metrik. Tyto funkce pomáhají udržovat výkon, dostupnost a spolehlivost Azure Functions a zároveň umožňují vlastní řídicí panely, výstrahy a automatizované odpovědi.
AWS Lambda generuje telemetrická data z volání vaší funkce a může tato data exportovat pomocí sémantiky OpenTelemetry. Funkce Lambda můžete nakonfigurovat tak, aby odesílaly tato telemetrická data do libovolného koncového bodu kompatibilního s OpenTelemetry. Tato akce umožňuje korelaci trasování a protokolů, konzistentních telemetrických dat založených na standardech a integraci s dalšími nástroji pozorovatelnosti, které podporují OpenTelemetry. Nakonfigurujte aplikaci funkcí tak, aby exportovala data protokolu a trasování ve formátu OpenTelemetry. Telemetrická data můžete exportovat do libovolného kompatibilního koncového bodu pomocí OpenTelemetry. OpenTelemetry poskytuje výhody, jako je korelace trasování a protokolů, konzistentní telemetrická data založená na standardech a integrace s jinými poskytovateli. OpenTelemetry můžete povolit na úrovni aplikace funkcí v konfiguraci hostitele a v projektu kódu za účelem optimalizace exportu dat z kódu funkce. Další informace najdete v tématu Use OpenTelemetry with Azure Functions.

Škálování a souběžnost

AWS Lambda Azure Functions
AWS používá model škálování na vyžádání. Automatické škálování operace funkce v reakci na poptávku Souběžnost, nebo počet požadavků, které zpracovává instance, je vždy 1. Instance se dynamicky přidávají a odebírají na základě počtu příchozích událostí a nakonfigurované souběžnosti pro každou instanci. Nastavení souběžnosti můžete nakonfigurovat na požadovanou hodnotu.
Souběžnost je vždy 1. Souběžnost je konfigurovatelná (>1).
Podporuje škálování na 0. Podporuje škálování na 0.

Ochrana proti studenému startu

AWS Lambda Azure Functions
Zřízená souběžnost snižuje latenci a zajišťuje předvídatelný výkon funkce tím, že předem inicializuje požadovaný počet instancí funkcí. Zřízená souběžnost vyhovuje aplikacím citlivým na latenci a stojí odděleně od standardní souběžnosti. Aplikace funkcí umožňují nakonfigurovat souběžnost pro každou instanci, která řídí její škálování. Několik úloh může běžet paralelně ve stejné instanci aplikace a následné úlohy v instanci nevyžadují počáteční prodlevu. Aplikace funkcí mají také vždy připravené instance. Zákazníci můžou zadat počet předehřátých instancí, aby se eliminovala latence studeného spuštění a zajistila konzistentní výkon. Aplikace funkcí také škálují na více instancí na základě poptávky a současně udržují vždy připravené instance.
Rezervovaná souběžnost určuje maximální počet souběžných instancí, které může funkce mít. Tento limit zajišťuje, aby část kvóty souběžnosti vašeho účtu byla pro tuto funkci vyhrazena výhradně. AWS Lambda dynamicky škáluje kapacitu tak, aby zpracovávala příchozí požadavky i v případě, že je nastavená rezervovaná souběžnost, pokud požadavky nepřekročí zadaný limit rezervované souběžnosti. Nižší limit pro rezervovanou souběžnost v AWS Lambda je 1. Horní limit rezervované souběžnosti v AWS Lambda je určen kvótou regionální souběžnosti účtu. Ve výchozím nastavení je tento limit 1 000 souběžných operací pro každou oblast. Azure Functions nemá ekvivalentní funkci pro rezervovanou souběžnost. Pokud chcete dosáhnout podobné funkčnosti, izolujte konkrétní funkce do samostatných funkčních aplikací a nastavte maximální limit škálování pro každou z aplikací. Azure Functions dynamicky škáluje nahoru, nebo přidává další instance, a škáluje dolů, nebo odstraňuje instance v rámci nastaveného omezení škálování. Aplikace, které běží v plánu Flex Consumption, ve výchozím nastavení začínají konfigurovatelným limitem 100 celkových instancí. Nejnižší maximální hodnota počtu instancí je 1 a nejvyšší podporovaná maximální hodnota počtu instancí je 1 000. Kvóty paměti regionálního předplatného mohou také omezovat míru škálování aplikací funkcí, ale tuto kvótu lze zvýšit kontaktováním podpory.

Cenotvorba

AWS Lambda Azure Functions
– Platba za užití za celkový počet volání a GB/s pro každou instanci (s pevnou souběžností nastavenou na 1)

- přírůstky po 1 ms

- 400 000 Gb/s úroveň zdarma
– Platba za použití pro celkový počet vyvolání a GB/s pro každou instanci (s konfigurovatelnými souběžnými vyvoláními)

- přírůstky po 100 ms

– Bezplatná úroveň 100 000 Gb/s

- Náklady na základě spotřeby

Úložiště zdrojového kódu

AWS Lambda Azure Functions
AWS Lambda spravuje úložiště kódu funkce ve vlastním spravovaném systému úložiště. Nemusíte zadávat další úložiště. Služba Functions vyžaduje, aby kontejner Blob Storage zadaný zákazníkem zachoval balíček nasazení, který obsahuje kód vaší aplikace. Nastavení můžete nakonfigurovat tak, aby pro nasazení používala stejný účet úložiště nebo jiný účet úložiště, a spravovat metody ověřování pro přístup ke kontejneru.

Místní vývoj

Funkce AWS Lambda funkce Azure Functions
– SAM CLI

- LocalStack
– Azure Functions Core Tools

– Visual Studio Code

– Visual Studio

– GitHub Codespaces

- VSCode.dev

- Odborník

- Psát a testovat funkce Azure místně

Nasazení

Vlastnost AWS Lambda Azure Functions
Balíček pro nasazení - ZIP soubor

– Image kontejneru
Soubor ZIP (pro nasazení kontejnerového obrazu použijte vyhrazené nebo prémiové SKU.)
Velikost souboru ZIP (konzola) Maximálně 50 MB Maximálně 500 MB pro nasazení SOUBORU ZIP
Velikost souboru ZIP (CLI/SDK) Maximálně 250 MB pro nasazení ZIP, maximálně 500 MB pro nerozbalené soubory Maximálně 500 MB pro nasazení SOUBORU ZIP
Velikost obrazu kontejneru Maximálně 10 GB Podpora kontejnerů s flexibilním úložištěm prostřednictvím Azure
Zpracování velkých artefaktů Použijte obrazy kontejnerů pro větší nasazení Připojte úložiště Blob Storage nebo sdílené složky Azure Files pro přístup k velkým souborům z aplikace.
Balení běžných závislostí do funkcí Vrstvy Nasazení .Zip souboru, na vyžádání z úložiště nebo kontejnerů (pouze pro SKU ACA, dedikované a EP).
Modrá-zelená implementace nebo verzování funkcí Pomocí kvalifikátorů funkcí můžete odkazovat na konkrétní stav funkce pomocí čísla verze nebo názvu aliasu. Kvalifikátory umožňují správu verzí a strategie postupného nasazení. Používejte systémy kontinuální integrace a průběžného doručování pro modro-zelené nasazení.

Limity času a paměti

Vlastnost Omezení AWS Lambda omezení Azure Functions
Časový limit pro provedení 900 sekund (15 minut) Výchozí časový limit je 30 minut. Maximální časový limit je nevázaný. Je však stanoveno, že období odkladu pro provádění funkce je 60 minut během škálování dolů a 10 minut během aktualizací platformy. Pro další informace se podívejte na Časový limit funkční aplikace.
Konfigurovatelná paměť 128 MB až 10 240 MB v přírůstcích po 64 MB Funkce podporují velikosti 2 GB a 4 GB instancí. Každá oblast v daném předplatném má limit paměti 512 000 MB pro všechny instance aplikací, které můžete zvýšit voláním podpory. Celkové využití paměti všech instancí napříč všemi aplikacemi funkcí v oblasti musí zůstat v rámci této kvóty.

I když jsou možnosti velikosti instance 2 GB a 4 GB, souběžnost pro každou instanci může být vyšší než 1. Proto může jedna instance zpracovávat více souběžných spuštění v závislosti na konfiguraci. Odpovídající konfigurace souběžnosti může pomoct optimalizovat využití prostředků a spravovat výkon. Vyvážením přidělení paměti a nastavení souběžnosti můžete efektivně spravovat prostředky přidělené vašim aplikacím funkcí a zajistit efektivní výkon a řízení nákladů. Další informace najdete v části Kvóty paměti regionálního předplatného.

Správa tajemství

AWS Lambda Azure Functions
AWS Secrets Manager umožňuje ukládat, spravovat a načítat tajné kódy, jako jsou přihlašovací údaje databáze, klíče rozhraní API a další citlivé informace. Funkce lambda můžou načítat tajné kódy pomocí sady AWS SDK. Doporučujeme používat přístupy bez tajných klíčů, jako jsou spravované identity, abyste umožnili zabezpečený přístup k prostředkům Azure bez pevně zakódovaných přihlašovacích údajů. Pokud se vyžadují tajné kódy, například pro partnerské nebo starší systémy, Azure Key Vault poskytuje zabezpečené řešení pro ukládání a správu tajných kódů, klíčů a certifikátů.
Úložiště parametrů AWS Systems Manageru je služba, která ukládá konfigurační data a tajné kódy. Parametry je možné šifrovat pomocí služby AWS KMS a načíst funkcemi lambda pomocí sady AWS SDK.
Funkce lambda můžou ukládat nastavení konfigurace do proměnných prostředí. Citlivá data je možné zašifrovat pomocí klíče Služby správy klíčů pro zabezpečený přístup.
Azure Functions používá nastavení aplikace k ukládání konfiguračních dat. Tato nastavení přímo odpovídají proměnným prostředí pro snadné použití v rámci funkce. Tato nastavení je možné zašifrovat a bezpečně uložit v konfiguraci Azure App Service.
V pokročilejších scénářích Azure App Configuration poskytuje robustní funkce pro správu více konfigurací. Umožňuje označování funkcí a podporuje dynamické aktualizace napříč službami.

Správa stavu

AWS Lambda Azure Functions
AWS Lambda zpracovává jednoduchou správu stavu pomocí služeb jako Amazon S3 pro úložiště objektů, DynamoDB pro rychlé a škálovatelné úložiště stavu NoSQL stavu a SQS pro zpracování front zpráv. Tyto služby zajišťují trvalost a konzistenci dat napříč prováděními funkcí Lambda. Azure Functions používá ke správě stavu AzureWebJobsStorage povolením vazeb a triggerů se službami Azure Storage, jako jsou Blob Storage, Queue Storage a Table Storage. Umožňuje funkcím snadno číst a zapisovat stav. Pro složitější správu stavu poskytuje Durable Functions pokročilé možnosti orchestrace pracovních postupů a trvalosti stavu pomocí Azure Storage.

Stavová orchestrace

AWS Lambda Azure Functions
Žádná vlastní orchestrace systému. Použití AWS Step Functions pro pracovní postupy. Durable Functions pomáhá s komplexní správou stavu tím, že poskytuje trvalou orchestraci pracovních postupů a stavové entity. Umožňuje dlouhotrvající operace, automatické vytváření kontrolních bodů a trvalost spolehlivého stavu. Tyto funkce umožňují vytvářet složité pracovní postupy, které zajišťují odolnost proti chybám a škálovatelnost stavových aplikací.

Další rozdíly a důležité informace

Vlastnost AWS Lambda Azure Functions
Seskupovací funkce Každá funkce AWS Lambda je nezávislá entita. Aplikace funkcí slouží jako kontejner pro více funkcí. Poskytuje sdílený kontext spuštění a konfiguraci pro funkce, které obsahuje. Zacházení s více funkcemi jako s jednou entitou zjednodušuje nasazení a správu. Funkce také používá strategii škálování jednotlivých funkcí, kde se každá funkce škáluje nezávisle, s výjimkou triggerů HTTP, Blob Storage a Durable Functions. Tyto aktivované funkce se škálují ve svých vlastních skupinách.
Vlastní domény Povoleno přes bránu rozhraní API Můžete konfigurovat vlastní domény přímo v aplikaci funkcí nebo v Azure API Management.
Podpora vlastních kontejnerů Podporuje vlastní kontejnery pomocí kontejnerového obrazu Lambda. Azure Functions podporuje kontejnery custom, které běží v prostředí Container Apps.

Vytvoření plánu migrace

  1. Výběr klíčových úloh pro testování konceptu

    Začněte výběrem jedné až dvou středně velkých, nekritických úloh z celkového inventáře. Tyto úlohy slouží jako základ pro migraci v rámci proof-of-concept. Proces můžete otestovat a identifikovat potenciální výzvy bez rizika velkého přerušení vašich operací.

  2. Testujte iterativním způsobem a shromážděte zpětnou vazbu.

    Pomocí testování konceptu můžete shromáždit zpětnou vazbu, identifikovat mezery a doladit proces před škálováním na větší úlohy. Tento iterativní přístup zajišťuje, že v době, kdy přejdete na úplnou migraci, vyřešíte potenciální výzvy a proces zpřesníte.

Vytvořit zdroje pro migraci

Tento krok je přechodovou fází vývoje. Během této fáze sestavíte zdrojový kód, šablony infrastruktury jako kódu (IaC) a kanály nasazení, které představují pracovní zátěž v Azure. Před provedením migrace musíte přizpůsobit kód funkce pro kompatibilitu a osvědčené postupy.

Přizpůsobení kódu funkce, konfiguračních souborů a infrastruktury jako souborů kódu

Aktualizace kódu pro požadavky prostředí runtime Azure Functions:

  • Upravte kód tak, aby dodržoval programovací model Azure Functions. Můžete například přizpůsobit podpisy funkcí tak, aby odpovídaly formátu, který Azure Functions vyžaduje. Další informace o definici funkce a kontextu spuštění najdete v Azure Functions příručkách pro vývojáře.

  • Sadu rozšíření Azure Functions použijte ke zpracování různých vazeb a triggerů, které jsou podobné službám AWS. U .NET aplikací byste měli místo sady rozšíření použít příslušné balíčky NuGet.

  • Sadu rozšíření použijte k integraci s dalšími službami Azure, jako jsou Azure Storage, Azure Service Bus a Azure Cosmos DB, aniž byste museli ručně konfigurovat každou vazbu prostřednictvím sad SDK. Další informace najdete v tématu Připojení funkcí ke službám Azure pomocí vazeb a vázacích výrazů pro Azure Functions.

Tyto fragmenty kódu jsou příklady běžných kódů sady SDK. Kód AWS Lambda se mapuje na příslušné triggery, vazby nebo úryvky kódu SDK v Azure Functions.

Čtení z Amazon S3 versus Azure Blob Storage

Kód AWS Lambda (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());
};       

kód Azure Functions (spouštěč)

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

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

Psání do služby Amazon Simple Queue Service (SQS) oproti Azure Queue Storage

Kód AWS Lambda (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();
};

kód Azure Functions (spouštěč)

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

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

Psání na DynamoDB oproti Azure Cosmos DB

Kód AWS Lambda (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); 
}; 

kód Azure Functions (spouštěč)

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 Events vs. Azure časovač spuštění

Kód AWS Lambda (SDK)

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

kód Azure Functions (spouštěč)

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) versus Azure Event Grid trigger

Kód AWS Lambda (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(); 
}; 

kód Azure Functions (spouštěč)

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

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

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

}); 

Amazon Kinesis versus spouštěč Azure Event Hubs

Kód AWS Lambda (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); 
}; 

kód Azure Functions (spouštěč)

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}`);  
});  
});

Porovnání kódu AWS Lambda a Azure Functions kódu najdete v následujících úložištích GitHub:

Úprava nastavení konfigurace

Ujistěte se, že je časový limit funkce a nastavení memory kompatibilní s Azure Functions. Další informace o konfigurovatelných nastaveních najdete v referenčních informacích host.json pro Azure Functions.

Postupujte podle doporučených osvědčených postupů pro oprávnění, přístup, sítě a konfigurace nasazení.

Konfigurace oprávnění

Při nastavování oprávnění k aplikacím funkcí dodržujte osvědčené postupy. Další informace najdete v tématu Konfigurace aplikace funkcí a účtu úložiště se spravovanou identitou.

main.bicep

// 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}'
  }
}

Další informace najdete v tématu rbac.bicep.

Konfigurace síťového přístupu

Azure Functions podporuje integraci virtuální sítě, která vaší aplikaci funkcí poskytuje přístup k prostředkům ve vaší virtuální síti. Po integraci vaše aplikace směruje odchozí provoz přes virtuální síť. Aplikace pak může přistupovat k privátním koncovým bodům nebo prostředkům pomocí pravidel, která povolují provoz jenom z konkrétních podsítí. Pokud je cílem IP adresa mimo virtuální síť, je zdrojová IP adresa jednou z adres uvedených ve vlastnostech vaší aplikace, pokud nenakonfigurujete bránu NAT.

Když povolíte integraci virtuální sítě pro funkční aplikace, postupujte podle osvědčených postupů v průvodci osvědčenými postupy pro integraci virtuální sítě pro webové a funkční aplikace.

main.bicep

// 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
  }
}

Další informace najdete v tématu VNet.bicep a storage-PrivateEndpoint.bicep.

Konfigurace nastavení nasazení

Nasazení se řídí jednou cestou. Jakmile sestavíte kód projektu a zazipujete ho do balíčku aplikace, nasaďte ho do kontejneru Blob Storage. Když se aplikace spustí, načte balíček a spustí váš funkční kód. Ve výchozím nastavení slouží stejný účet úložiště, který ukládá interní metadata hostitele, například AzureWebJobsStoragetaké jako kontejner nasazení. Můžete ale použít alternativní účet úložiště nebo zvolit upřednostňovanou metodu ověřování tím, že nakonfigurujete nastavení nasazení vaší aplikace. Další informace najdete v tématu Podrobnosti o technologii nasazení a Konfigurace nastavení nasazení.

Generování souborů IaC

  • Pomocí nástrojů, jako jsou Bicep, šablony Azure Resource Manager nebo Terraform, můžete vytvářet soubory IaC pro nasazení Azure prostředků.

  • Definujte prostředky, jako jsou Azure Functions, účty úložiště a síťové komponenty v souborech IaC.

  • Toto úložiště ukázek IaC použijte pro ukázky, které používají Azure Functions doporučení a osvědčené postupy.

Použijte nástroje pro refaktoring

Použijte nástroje, jako je GitHub Copilot ve VS Code, pro pomoc s refaktoringem kódu, ruční refaktoring pro konkrétní změny nebo jiné pomůcky pro migraci.

Následující články obsahují konkrétní příklady a podrobné kroky pro usnadnění procesu migrace:

Vyvinout postup krok za krokem pro migraci v nultý den

Vyvíjejte strategie převzetí služeb při selhání a navrácení služeb po obnovení pro migraci a důkladně je otestujte v předprodukčním prostředí. Před dokončením přechodu z AWS Lambda na Azure Functions doporučujeme provést kompletní testování.

  • Ověření funkčnosti

    • Programujte a testujte Azure Functions místně.

    • Důkladně otestujte každou funkci, abyste měli jistotu, že funguje podle očekávání. Tyto testy by měly zahrnovat ověření vstupu a výstupu, triggerů událostí a vazeb.

    • Pomocí nástrojů, jako jsou rozšíření curl nebo REST Client v editoru VS Code, můžete odesílat požadavky HTTP pro funkce aktivované protokolem HTTP.

    • U jiných triggerů, jako jsou časovače nebo fronty, se ujistěte, že se triggery aktivují správně, a funkce se spouštějí podle očekávání.

  • Ověření výkonu

    • Proveďte testování výkonu a porovnejte nové nasazení Azure Functions s předchozím nasazením AWS Lambda.

    • Monitorujte metriky, jako je doba odezvy, doba běhu a spotřeba prostředků.

    • Application Insights můžete použít k monitorování, analýze protokolů a řešení potíží během testovací fáze.

  • Řešení potíží pomocí funkce diagnostiky a řešení problémů

    K řešení potíží s aplikací funkcí použijte funkci diagnose a řešit problémy na portálu Azure. Tento nástroj poskytuje sadu diagnostických funkcí, které vám můžou pomoct rychle identifikovat a řešit běžné problémy, jako jsou chyby aplikací, snížení výkonu a problémy s konfigurací. Postupujte podle návodu k řešení potíží a doporučení, které nástroj poskytuje k řešení problémů, které identifikujete.

Vyhodnocení koncového stavu migrované úlohy

Než v AWS vyřadíte prostředky z provozu, musíte mít jistotu, že platforma splňuje aktuální očekávání úloh a že nic neblokuje údržbu úloh nebo další vývoj.

Nasaďte a otestujte funkce pro ověření jejich výkonu a správnosti.

Nasazení do Azure

Nasaďte úlohy pomocí funkce publikování VS Code . Úlohy můžete také nasadit z příkazového řádku pomocí nástrojů Azure Functions Core Tools nebo Azure CLI. Azure DevOps a GitHub Actions také použijte One Deploy.

  • Azure Functions Core Tools: Nasazení vaší funkční aplikace pomocí Azure Functions Core Tools s použitím příkazu func azure functionapp publish <FunctionAppName>.

  • Kanály kontinuální integrace a průběžného nasazování (CI/CD): Nastavte kanál CI/CD pomocí služeb, jako jsou GitHub Actions, Azure DevOps nebo jiný nástroj CI/CD.

Další informace najdete v tématu Porušné doručování pomocí GitHub Actions nebo Porušné doručení pomocí Azure Pipelines.

Prozkoumání ukázkových scénářů migrace

Pomocí úložiště MigrationGetStarted jako šablony zahajte testování konceptu. Toto úložiště obsahuje projekt připravený k nasazení Azure Functions, který má infrastrukturu a soubory zdrojového kódu, které vám pomůžou začít.

Pokud raději používáte Terraform, použijte místo toho MigrationGetStarted-Terraform .

Optimalizace a monitorování výkonu aplikace na Azure

Po migraci úloh doporučujeme prozkoumat další funkce na Azure. Tyto funkce vám můžou pomoct splnit budoucí požadavky na úlohy a pomoci zavřít mezery.

Použití Application Insights k monitorování a řešení potíží

Povolte Application Insights pro vaši aplikaci funkcí, abyste mohli shromažďovat podrobná telemetrická data pro účely monitorování a řešení potíží. Application Insights můžete povolit prostřednictvím portálu Azure nebo v konfiguračním souboru aplikace funkcí host.json. Po povolení Application Insights můžete:

  • Shromážděte telemetrická data. Application Insights poskytuje různá telemetrická data, jako jsou protokoly požadavků, metriky výkonu, výjimky a závislosti.

  • Analyzujte protokoly a metriky. Přístup k řídicímu panelu Application Insights z portálu Azure k vizualizaci a analýze protokolů, metrik a dalších telemetrických dat. Pomocí integrovaných nástrojů můžete vytvářet vlastní dotazy a vizualizovat data, abyste získali přehled o výkonu a chování aplikace funkcí.

  • Nastavte upozornění. Nakonfigurujte upozornění ve službě Application Insights, která vás upozorní na kritické problémy, snížení výkonu nebo konkrétní události. Tato upozornění vám pomůžou aktivně monitorovat a rychle reagovat na problémy.

Optimalizace nákladů a výkonu

  • Optimalizace škálování a výkonu:

    • Efektivní zpracování různých úloh pomocí funkcí automatického škálování

    • Optimalizujte kód funkce, abyste zlepšili výkon tím, že zkracují dobu běhu, optimalizují závislosti a používají efektivní postupy kódování.

    • Implementujte strategie ukládání do mezipaměti, abyste snížili opakované zpracování a latenci pro často přístupná data.

  • Správa nákladů:

    • Pomocí nástrojů Microsoft Cost Management můžete monitorovat a analyzovat náklady na Azure Functions.

    • Nastavte si upozornění na rozpočet a náklady pro efektivní správu a predikci výdajů.