Going Serverless: jak spustit první funkci AWS Lambda v cloudu

Před deseti lety cloudové servery odebíraly fyzické servery. A nyní „Serverless“ abstrahuje cloudové servery.

Technicky jsou servery stále k dispozici. Prostě je už nemusíte spravovat.

Další výhodou přechodu na server je to, že již nemusíte udržovat server neustále spuštěný. „Server“ se najednou objeví, když jej potřebujete, a poté, co jste s ním hotovi, zmizí. Nyní můžete myslet na funkce namísto serverů a veškerá vaše obchodní logika nyní může v rámci těchto funkcí žít.

V případě funkcí AWS Lambda se to nazývá spoušť. Funkce Lambda lze spouštět různými způsoby: požadavek HTTP, nový dokument nahraný do S3, naplánovanou úlohu, datový tok AWS Kinesis nebo oznámení od AWS Simple Notification Service (SNS).

V tomto tutoriálu vám ukážu, jak nastavit vlastní funkci Lambda, a jako bonus vám ukážu, jak nastavit REST API vše v cloudu AWS při psaní minimálního kódu.

Všimněte si, že výhody a nevýhody Serverless závisí na konkrétním případu použití. V tomto článku vám tedy neřeknu, zda je serverless pro vaši konkrétní aplikaci vhodný - pouze vám ukážu, jak ji používat.

Nejprve budete potřebovat účet AWS. Pokud ještě žádný nemáte, začněte zde otevřením bezplatného účtu AWS. AWS má volnou úroveň, která je více než dost pro to, co budete potřebovat pro tento tutoriál.

Napíšeme funkci isPalindrome, která kontroluje, zda je předaný řetězec palindrom nebo ne.

Výše je příklad implementace v JavaScriptu. Zde je odkaz na gist na Githubu.

Palindrom je slovo, fráze nebo posloupnost, která se čte stejně jako vpřed, z důvodu jednoduchosti omezíme funkci pouze na slova.

Jak vidíme v úryvku výše, vezmeme řetězec, rozdělíme ho, obrátíme a připojíme se k němu. pokud jsou řetězec a jeho obráceně stejné, řetězec je Palindrom, jinak řetězec není Palindrom.

Vytvoření funkce isPalindrome Lambda

V tomto kroku se vydáme na konzolu AWS, abychom vytvořili funkci Lambda:

V konzole AWS jděte do Lambdy.

A pak stiskněte „Začínáme nyní“.

Pro runtime vyberte Node.js 6.10 a pak stiskněte „Blank Function“.

Tento krok přeskočte a stiskněte „Další“.

Pro Název typu v isPalindromu, pro typ popisu v popisu vaší nové Lambda funkce, nebo jej nechte prázdný.

Jak vidíte v duchu výše, Lambda funkce je jen funkce, kterou exportujeme jako modul, v tomto případě pojmenovaný handler. Funkce má tři parametry: událost, kontext a funkci zpětného volání.

Zpětné volání se spustí, když je provedena funkce Lambda, a vrátí odpověď nebo chybovou zprávu. Pro prázdnou odpověď Lambda je plán pevně zakódován jako řetězec „Ahoj z Lambdy“. Pro tento tutoriál, protože nedojde k žádnému zpracování chyb, použijete pouze Null. Podrobně se podíváme na parametr události v následujících několika snímcích.

Posunout dolů. Pro roli zvolte „Vytvořit novou roli ze šablony“ a pro název role použijte isPalindromeRole nebo libovolný název.

U šablon zásad vyberte oprávnění „Simple Microservice“.

Pro paměť je 128 megabajtů více než dost pro naši jednoduchou funkci.

Pokud jde o časový limit 3 sekundy, znamená to, že - pokud se funkce nevrátí do 3 sekund - AWS ji vypne a vrátí chybu. Tři sekundy jsou také více než dost.

Ostatní pokročilá nastavení nechte beze změny.

Stiskněte „Vytvořit funkci“.

Gratulujeme - vytvořili jste svou první funkci Lambda. Chcete-li to otestovat, stiskněte „Test“.

Jak vidíte, vaše funkce Lambda vrací pevně zakódovanou odpověď „Hello from Lambda“.

Nyní přidejte kód z isPalindrome.js do vaší Lambda funkce, ale místo výsledku vrácení použijte zpětné volání (null, result). Poté do řádku 3 přidejte pevně kódovanou hodnotu řetězce abcd a stiskněte „Test“.

Funkce Lambda by se měla vrátit „abcd není Palindrom“.

Pro pevně zakódovanou hodnotu „závodního vozu“ vrátí Lambda funkce „závodní automobil je Palindrom“.

Funkce Lambda, kterou jsme vytvořili, se dosud chová podle očekávání.

V dalších krocích vám ukážu, jak jej spustit a předat řetězcový argument pomocí požadavku HTTP.

Pokud jste vytvořili rozhraní REST API od začátku před použitím nástroje jako Express.js, výše uvedený fragment by měl mít smysl. Nejprve vytvoříte server a poté definujete všechny své trasy jeden po druhém.

V této části vám ukážu, jak dělat to samé pomocí brány AWS API.

Vytvoření brány API

Přejděte do konzoly AWS a stiskněte „API Gateway“.

A pak stiskněte „Začínáme“.

V panelu Vytvořit nové rozhraní API vyberte možnost „Nové rozhraní API“.

Pro název API použijte „palindromeAPI“. Pro popis zadejte popis nového API nebo jej nechte prázdné.

Naše API bude jednoduché a bude mít pouze jednu metodu GET, která bude použita pro komunikaci s funkcí Lambda.

V nabídce Akce vyberte „Vytvořit metodu“. Objeví se malá podnabídka. Pokračujte a vyberte GET a klikněte na zaškrtnutí vpravo.

Jako typ integrace vyberte funkci Lambda.

Poté stiskněte „OK“.

Na obrazovce GET - Method Execution stiskněte „Integration Request“.

U typu integrace se ujistěte, že je vybrána funkce Lambda.

Pro průchod těla požadavku vyberte „Pokud nejsou definovány žádné šablony“ a poté pro Typ obsahu zadejte „application / json“.

Na prázdné místo přidejte níže uvedený objekt JSON. Tento objekt JSON definuje parametr „řetězec“, který nám umožní předávat hodnoty řetězce do funkce Lambda pomocí požadavku HTTP GET. Toto je podobné použití req.params v Express.js.

V dalších krocích se podíváme na to, jak předat hodnotu řetězce funkci Lambda a jak získat přístup k předané hodnotě z funkce.

Rozhraní API je nyní připraveno k nasazení. V nabídce Akce klikněte na „Nasadit API“.

Pro Deployment Stage vyberte „[New Stage]“.

A pro název Stage použijte „prod“ (což je zkratka pro „production“).

Rozhraní API je nyní nasazeno a vyvolávací adresa URL bude použita ke komunikaci prostřednictvím požadavku HTTP s Lambda. Pokud si vzpomenete, Lambda kromě zpětného volání vezme dva parametry: událost a kontext.

Chcete-li odeslat hodnotu řetězce do Lambdy, vezmete adresu URL pro vyvolání funkce a přidejte ji? String = someValue a poté k předané hodnotě lze přistupovat z funkce pomocí event.string.

Upravte kód odstraněním hodnoty řetězce s pevným kódem a jeho nahrazením event.string, jak je ukázáno níže.

Nyní v prohlížeči proveďte vyvolávací adresu URL vaší funkce a přidejte řetězec? String = abcd k otestování funkce pomocí prohlížeče.

Jak můžete vidět, Lambda odpovídá, že abcd není Palindrom. Teď udělej to samé pro závodní auto.

Pokud dáváte přednost, můžete také použít Postman k otestování své nové funkce IsPalindrome Lambda. Postman je skvělý nástroj pro testování koncových bodů API, o tom se můžete dozvědět více zde.

Chcete-li ověřit, že funguje, zde je Palindrom:

A tady je ne-palindrom:

Gratulujeme - právě jste nastavili a nasadili vlastní funkci Lambda!

Děkuji za přečtení!