Ebben a cikkben megtudhatja, hogyan lehet egyéni csomagokat beadni az AWS Lambda Functions futásidejére az AWS Lambda Rétegek használatával. Az Amplify alkalmazást fejleszteni, telepíteni és terjeszteni is fogja.
A kiszolgáló nélküli alkalmazások nagyszerűek azok számára, akik nem akarnak tétlen gépekért fizetni, vagy akár felhőinfrastruktúrákat is kezelni. Ez a bejegyzés az Amplify Framework szelíd bevezetésére összpontosít, a Node.js használatával .Egyszerre telepít egy egyedi Node.js csomagot, és az AWS Lambda Layers használatával befecskendezi az összes funkciójába .
A bejegyzés végére megtanulhatja, hogyan telepítsen kiszolgáló nélküli funkciókat az AWS-re:
- Node.js webes API létrehozása az Express.js használatával kiszolgáló nélküli funkcióként az Amplify Framework használatával
- Egyéni csomag injektálása az AWS Lambda funkciók futásidejére az AWS Lambda rétegek használatával a HTTP-kérelmek figyelemmel kísérésére és kiterjesztésére.
Követelmények
A következő lépésekben létrehoz egy igazi alkalmazást, és közzéteszi az AWS infrastruktúrán. A kódolás megkezdése előtt győződjön meg arról, hogy a következő követelményeket támasztja a környezetével:
- AWS aktív fiók
- AWS CLI
- Node.js v14
Bevezetés
Az egyik kedvenc szerver nélküli infrastruktúrát biztosító felhőplatformom az Amazon Web Services. Régóta fejlesztenek és szállítanak olyan platformokat, amelyek felhatalmazzák a vállalatokat a szoftverek gyorsabb kiadására, mintha ismétlődő konfigurációkat kellene konfigurálniuk és kezelniük.
Ha ismeri a Serverless alkalmazásokat, akkor talán hallott a Serverless Frameworkről. Ez egy többfelhős keretrendszer a szerver nélküli architektúrák kezeléséhez konfigurációs fájlok használatával, alkalmazások egyetlen parancs segítségével történő telepítésével és futtatásával.
Ennek ellenére a fejlesztőknek még mindig telepíteniük kell a beépülő modulokat, és maguknak kell kezelniük a konfigurációs fájlokat, és egy komplex munkafolyamat felépítése eltarthat egy ideig.
Szóval, milyen CLI-t szeretsz a legjobban? Egy CLI, amely megkérdezi Önt arról, hogy mit szeretne, például külső kapcsolatokról (adatbázis, tárolás, várólista stb.), Hitelesítési folyamatról, külső engedélyekről és így tovább? Igen, barátom, üdvözlöm az AWS Amplify-ban.
AWS Amplify

Az AWS Amplify egy olyan ökoszisztéma, amely segíti a háttér-, a kezelő- és az integrációs fejlesztőket. Ha megnézi annak hivatalos dokumentumait, meglátja a lehetséges könyvtárak hatalmas listáját és példáit, amelyek mind a hátoldalon, mind a kezelőfelületen és az alkalmazásokon dolgozhatnak.
Ha konfigurálta az AWS CLI-t és beállította a környezetét, futtassa a következő parancsot az AWS Amplify globális telepítéséhez a számítógépére:
npm install -g amplify-cli
Ezután inicializáljuk a munkakönyvtárat egy mappa létrehozásával:
mkdir app && cd app
Most az alábbi parancs futtatásával inicializál egy amplifikációs projektet. Ehhez ellenőriznie kell néhány beállítást a CLI varázslóban. Figyelje meg, hogy amikor a rendszer kéri, megnyomhatja az Enter billentyűt az alapértelmezett értékek kiválasztásához.
amplify init
Válassza ki a lehetőségeket a félkövér szöveg szerintlent:
- Adjon meg egy nevet a projekt app
- Adjon nevet a környezeti fejlesztőnek
- Válassza ki az alapértelmezett szerkesztőt: Visual Studio Code
- Válassza ki a javascriptet építő alkalmazás típusát
Kérjük, mondja el nekünk a projektjét
- Mi javascript keretrendszer használ sem
- Forráskönyvtár elérési útja: src
- Forgalmazási könyvtár elérési útja: diszt
- Build parancs: npm run-script build
- Start parancs: npm run-script start

A közös projekt inicializálása
A következő lépéseken keresztül létrehoz egy függvényt. Ezt a funkciót olyan függőségek tárolására használják, amelyeket később az AWS Lambda Functions ökoszisztéma körüli funkciókba injektálnak.
Az alábbi parancs futtatása a Lambda réteg létrehozásának lépései felé mutat:
amplify function add
Válassza ki a lehetőségeket a félkövér szöveg szerintopciókat. Figyelje meg, hogy a kompatibilis futásidőkhöz a futásidő kiválasztásához meg kell nyomnia a billentyűzeten lévő szóköz billentyűt.
- Válassza ki a hozzáadni kívánt képességet: Lambda réteg (megosztott kód és erőforrás a függvények között)
- Adjon nevet a Lambda rétegének: apmAgentLayer
- Válasszon ki legfeljebb 2 kompatibilis futást: NodeJS
- A jelenlegi AWS-fiók mindig hozzáférhet ehhez a réteghez.
- Opcionálisan konfigurálja, hogy ki férhet hozzá ehhez a réteghez. (Hit átugrani) Nyilvános
Created Lambda réteg mappák és fájlok létrehozva: amplify / backend / function / apmAgentLayer
Egyedi modulok telepítése
Ha a Réteg elérési útjára lép , az amplify / backend / function / apmAgentLayer lehet, hogy látott néhány mappát, amelyet az Amplify készített. Mivel egy Node.js projekten dolgozunk, az összes csomópont modult telepíteni kell a lib / nodejs fájlra .
Készítettem egy példát az Application Performance Monitor-ról, hogy bemutassam, hogyan használhatjuk a Node.js teljesítmény-kampóit a kérések közötti időtartam mérésére és a HTTP-válaszolvasók megváltoztatására. Ez segít megmutatni a megosztott kód megvalósításának és a Node.js viselkedésének kiterjesztésének egyéb lehetőségeit.

Az első lépés a megosztott függőségek telepítése és feltöltése az AWS-be. Menjen a CLI amplify / backend / function / apmAgentLayer / lib / nodejs által generált elérési útra , majd telepítse a csomagot a következő parancsokkal:
cd amplify/backend/function/apmAgentLayer/lib/nodejs npm i @erickwendel/ew-agent
Telepítés
A csomag telepítése után telepítheti és később ellenőrizheti az AWS konzolon keresztül. Vegye figyelembe, hogy még nem adtunk hozzá kódot. A cél ezen a ponton csak a könyvtár előkészítése további felhasználásra.
Futtassa a következő parancsot a Lambda réteg feltöltéséhez:
amplify push

A Web API függvény létrehozása
Ezen a ponton már készen áll egy helyi Amplify infrastruktúra projekt, amely készen áll az API Routes, Routines hozzáadására, az AWS szolgáltatásokkal való összekapcsolásra stb.
Az alábbi parancs hasznos lesz ExpressJS-alapú projekt és AWS Lambda függvény létrehozásához. Összekapcsolja a majdnem létrehozott AWS Lambda Layer funkciót és feltárja az AWS API Gateway-en.
amplify api add
Válassza ki a lehetőségeket a félkövér szöveg szerintlent:
- Kérjük, válasszon az alábbiakban felsorolt szolgáltatások közül: REST
- Adjon meg egy barátságos nevet az erőforrásának, amelyet címkeként használhat ehhez a kategóriához a projektben: myApi
- Adjon meg egy elérési utat (pl. / Book / {isbn}): / szia
- Válasszon egy Lambda forrást Hozzon létre egy új Lambda funkciót
- Adjon meg egy barátságos nevet az erőforrásának, amelyet címkeként használhat ehhez a kategóriához a projektben: myApi
- Adja meg az AWS Lambda függvény nevét: myApi
- Válassza ki a használni kívánt futásidőt: NodeJS
- Válassza ki a használni kívánt függvénysablont : Serverless ExpressJS függvény (Integráció az API-átjáróval)
- Hozzá szeretne férni a projekt egyéb erőforrásaihoz a Lambda funkcióból? Nem
- Ismétlődő ütemezésben szeretné használni ezt a funkciót? Nem
- Konfigurálni szeretné a Lambda rétegeket ehhez a funkcióhoz? Igen
- Adjon meg meglévő rétegeket vagy válasszon rétegeket a projektben, hogy hozzáférhessen ebből a funkcióból (pick
5-ig): apmAgentLayer
- Válassza ki az apmAgentLayer verzióját: 1
- Most szerkeszteni szeretné a helyi lambda függvényt? Igen
Mivel a VSCode-ot használom, az utolsó varázsló válasza megnyitja a app.js
fájlt a szerkesztőmön, így szerkeszthetem. Más függőségek hozzáadása nélkül importáljuk a Lambda Layer megosztott modult a fájl első sorába az alábbi kód használatával:
require('@erickwendel/ew-agent').start()

A fájl szerkesztése után lépjen a terminálra, és nyomja meg az Enter billentyűt, és válassza az alább félkövéren feltüntetett válaszokat :
- Korlátozza API-hozzáférés Nem
- Szeretne hozzáadni egy másik utat? Nem
Az írás idején nem tudjuk helyileg tesztelni a Lambda rétegeket az AWS Amplify segítségével. De telepíteni fogja a projektjét az AWS-re, és a gyártás során tesztelni fogjafuttassa amplify push
újra a parancsot.
Figyelje meg, hogy kinyomtatja, hogy mely erőforrásokat kell frissíteni, és mely erőforrásokat kell létrehozni ezen a telepítésen. Az összes művelet végrehajtása eltart egy ideig, és a kimenetének az alábbiak szerint kell kinéznie:

Amint azt a terminál megmutatta, API-jának most van egy URL-je. A létrehozott URL: //nlq7x7onj0.execute-api.us-east-1.amazonaws.com/dev, és az útvonal lesz hi
, amelyet az előző lépésekben hoztunk létre.
Indítsunk el egy kérést a cURL (vagy akár a böngésző) segítségével, hogy ellenőrizzük, mi történik:
curl -i //nlq7x7onj0.execute-api.us-east-1.amazonaws.com/dev/hi
Futtatása után az API-nak JSON-válaszsal kell válaszolnia a következő tartalommal {"success":"get call succeed!","url":"/hi"}
. A Lambda Réteget injektálták, és meg kellett volna változtatnia a válasz fejlécét, ehhez hozzáadva a x-instrumented-by
és a x-request-id
kulcsokat:
x-instrumented-by: ErickWendel x-request-id: 5ddf1343-e42e-4e33-b1e1-936c303c14c8
Ha kíváncsi arra, hogy az Amplify mit sikerült kezelnie az oktatóanyag alatt, futtassa amplify console
és böngésszen az irányítópulton. Az enyémet alább láthatja:

Takarítás
Az Amplify által létrehozott összes erőforrás eltávolításához futtassa amplify delete
.
Következtetés
Nagyon sokféleképpen javíthatja tapasztalatait a kiszolgáló nélküli alkalmazások terén. Az Amplify Framework segíthet a következő generációs alkalmazások létrehozásában és az ismétlődő feladatok elkerülésében.
Ellenőrizze a hivatalos dokumentumokat, hogy más lehetőségeket kínáljon hatékony API-k létrehozására olyan élvonalbeli technológiák, mint a GraphQL és az AWS AppSync segítségével. Biztos vagyok benne, hogy ez sokat segít Önnek!
Köszönöm, hogy elolvasta
Nagyon értékelem az együtt töltött időt. Remélem, hogy ez a tartalom nem csak szöveg lesz. Remélem, jobb gondolkodóvá és programozóvá is vált. Kövessen a Twitteren, és nézze meg a személyes blogomat, ahol minden értékes tartalmat megosztok.
Szia! ?