În acest articol, veți afla cum să injectați pachete personalizate în AWS Lambda Functions ‘Runtime folosind AWS Lambda Layers. De asemenea, veți utiliza Amplify pentru a vă dezvolta, implementa și distribui aplicațiile.

Aplicațiile fără server sunt excelente pentru cei care nu doresc să plătească pentru mașini inactive sau chiar să gestioneze infrastructuri cloud. Această postare se va concentra pe o introducere blândă a Amplify Framework folosind Node.js. Veți instala o dată un pachet personalizat Node.js și îl veți injecta în toate funcțiile folosind Straturi AWS Lambda.

Până la sfârșitul acestei postări, veți fi învățat cum să implementați funcții fără server pe AWS prin:

  • Crearea unui API Web Node.js utilizând Express.js ca funcție fără server folosind Amplify Framework
  • Injectarea unui pachet personalizat în timpul de execuție al funcțiilor AWS Lambda utilizând AWS Lambda Layers pentru a monitoriza și extinde solicitările HTTP.

Cerințe

În pașii următori, veți crea o aplicație reală și o veți publica pe AWS Infrastructure. Înainte de a începe codificarea, asigurați-vă că aveți următoarele cerințe configurate în mediul dvs.:

Introducere

Una dintre platformele mele preferate în cloud care oferă infrastructură fără server este Amazon Web Services. De mult timp dezvoltă și livrează platforme care permit companiilor să lanseze software-ul mai repede decât dacă ar fi trebuit să configureze și să gestioneze configurații repetitive.

Dacă sunteți familiarizat cu aplicațiile fără server, este posibil să fi auzit despre Framework fără server. Este un cadru multi-cloud pentru gestionarea arhitecturilor fără server prin utilizarea fișierelor de configurare, implementarea și rularea aplicațiilor folosind o singură comandă.

Chiar și așa, dezvoltatorii au încă nevoie să instaleze pluginuri și să gestioneze singuri fișierele de configurare și ar putea dura ceva timp pentru a crea un flux de lucru complex.

Deci, ce fel de CLI îți place cel mai mult? O CLI care vă va întreba despre ce doriți, cum ar fi conexiuni externe (bază de date, stocare, coadă etc.), flux de autentificare, permisiuni externe și așa mai departe? Da, prietene, bine ai venit la AWS Amplify.

AWS Amplify

Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand
Site-ul web Amplify Framework

AWS Amplify este un ecosistem care ajută dezvoltatorii de back-end, front-end și integrare. Dacă aruncați o privire asupra acestuia documente oficiale, veți vedea lista imensă a posibilelor biblioteci și exemple pentru a lucra atât pe partea din spate, cât și pe cea din față și aplicațiile.

Când aveți AWS CLI configurat și mediul setat, rulați următoarea comandă pentru a instala AWS Amplify la nivel global pe mașină:

npm install -g amplify-cli

Apoi, să inițializăm un director de lucru prin crearea unui folder:

mkdir app && cd app

Acum, veți inițializa un proiect de amplificare executând comanda de mai jos. Pentru a face acest lucru, va trebui să verificați câteva opțiuni din expertul CLI. Observați că, când vi se solicită, puteți apăsa introduce de pe tastatură pentru a alege valorile implicite.

amplify init

Alegeți opțiunile în funcție de îndrăzneţ text de mai jos:

  • Introduceți un nume pentru proiect aplicație
  • Introduceți un nume pentru mediu dev
  • Alegeți editorul implicit: Cod Visual Studio
  • Alegeți tipul de aplicație pe care îl creați javascript

Vă rugăm să ne spuneți despre proiectul dvs.

  • Ce cadru javascript folosiți nici unul
  • Calea directorului sursă: src
  • Calea directorului de distribuție: dist
  • Comandă de construire: npm run-script build
  • Comanda de pornire: npm start-script start
Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand

Inițializarea proiectului partajat

Prin pașii următori, veți crea o funcție. Această funcție va fi utilizată pentru a stoca dependențe care vor fi injectate ulterior în funcții din jurul ecosistemului AWS Lambda Functions.

Executarea comenzii de mai jos vă va ghida către pași pentru a crea Lambda Layer:

amplify function add

Alegeți opțiunile în funcție de îndrăzneţ text opțiunile de mai jos. Observați că pentru duratele de rulare compatibile, va trebui să accesați spaţiu tasta de pe tastatură pentru a selecta timpul de execuție.

  • Selectați capacitatea pe care doriți să o adăugați: Strat Lambda (cod partajat și resursă utilizate în funcții)
  • Furnizați un nume pentru stratul Lambda: apmAgentLayer
  • Selectați până la 2 runtime compatibile: NodeJS
  • Contul AWS actual va avea întotdeauna acces la acest strat.
  • Opțional, configurați cine mai poate accesa acest strat. (Lovit pentru a sări) Public

✅ Foldere și fișiere de nivel Lambda create: amplify / backend / function / apmAgentLayer

Instalarea modulelor personalizate

Mergând pe calea stratului amplify / backend / function / apmAgentLayer este posibil să fi văzut câteva foldere create de Amplify. În timp ce lucrăm la un proiect Node.js, toate modulele de noduri trebuie să fie instalate pe lib / nodejs.

Am construit un exemplu de Application Performance Monitor pentru a arăta cum să utilizați Node.js cârlige de performanță caracteristică pentru măsurarea duratei între cereri și schimbarea cititorilor de răspuns HTTP. Vă va ajuta să vă arătați alte posibilități de implementare a codului partajat și extinderea comportamentului Node.js.

1612023909 141 Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand
Pachetul NPM pentru a măsura durata între solicitări

Primul pas aici este să instalați dependențele partajate și să le încărcați în AWS. Mergeți la calea generată de CLI amplify / backend / function / apmAgentLayer / lib / nodejs și apoi instalați pachetul folosind următoarele comenzi:

cd amplify/backend/function/apmAgentLayer/lib/nodejs
npm i @erickwendel/ew-agent

Implementarea

După ce ați instalat pachetul, îl puteți implementa și inspecta ulterior prin intermediul AWS Console. Observați că nu am adăugat încă niciun cod. Scopul în acest moment este doar de a pregăti această bibliotecă pentru o utilizare ulterioară.

Rulați următoarea comandă pentru a încărca Lambda Layer:

amplify push

1612023909 273 Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand
rularea amplifică comanda push și vedeți ieșirea

Crearea funcției API Web

În acest moment, aveți deja un proiect local de infrastructură Amplify gata să adăugați rute API, rutine, legături cu servicii AWS și așa mai departe.

Comanda de mai jos va fi utilă pentru generarea unui proiect bazat pe ExpressJS și a unei funcții AWS Lambda. De asemenea, va lega funcția de AWS Lambda Layer aproape creată și o va expune pe AWS API Gateway.

amplify api add

Alegeți opțiunile în funcție de îndrăzneţ text de mai jos:

  • Vă rugăm să selectați unul dintre serviciile menționate mai jos: ODIHNĂ
  • Furnizați un nume prietenos pentru ca resursa dvs. să fie utilizată ca etichetă pentru această categorie în proiect: myApi
  • Furnizați o cale (de exemplu, / book / {isbn}): /Salut
  • Alegeți o sursă Lambda Creați o nouă funcție Lambda
  • Furnizați un nume prietenos pentru ca resursa dvs. să fie utilizată ca etichetă pentru această categorie în proiect: myApi
  • Furnizați numele funcției AWS Lambda: myApi
  • Alegeți timpul de rulare pe care doriți să îl utilizați: NodeJS
  • Alegeți șablonul de funcție pe care doriți să îl utilizați: Funcție ExpressJS fără server (integrare cu API Gateway)
  • Doriți să accesați alte resurse din acest proiect din funcția dvs. Lambda? Nu
  • Doriți să invocați această funcție într-un program recurent? Nu
  • Doriți să configurați straturile Lambda pentru această funcție? da
  • Furnizați straturile existente sau selectați straturile din acest proiect pentru a accesa din această funcție (select
    până la 5): apmAgentLayer
  • Selectați o versiune pentru apmAgentLayer: 1
  • Doriți să editați acum funcția lambda locală? da

Pe măsură ce folosesc VSCode, răspunsul ultimului vrăjitor va deschide fișierul app.js în editorul meu, astfel încât să pot edita. Acum, fără a adăuga alte dependențe, să importăm fișierul Lambda Layer modul partajat pe prima linie a acestui fișier folosind codul de mai jos:

require('@erickwendel/ew-agent').start()
1612023909 197 Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand
cod adăugat pe capul fișierului

După editarea fișierului, mergeți la terminal și apăsați introduce și alegeți răspunsurile afișate în îndrăzneţ de mai jos:

  • Restricționați accesul la API Nu
  • Doriți să adăugați o altă cale? Nu

În momentul scrierii, nu putem testa Lambda Layers local folosind AWS Amplify. Dar veți implementa proiectul în AWS și îl veți testa in productie de rularea amplify push comanda din nou.

Observați că va imprima ce resurse trebuie actualizate și ce resurse vor fi create pe această implementare. Ar dura ceva timp pentru a efectua toate operațiunile, iar rezultatul dvs. ar trebui să arate ca cel de mai jos:

1612023909 336 Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand
implementarea API-ului

După cum s-ar fi putut arăta terminalul dvs., API-ul dvs. are acum o adresă URL. Adresa URL generată de mine este https://nlq7x7onj0.execute-api.us-east-1.amazonaws.com/dev iar traseul va fi hi, pe care le-am creat împreună în pașii anteriori.

Să declanșăm o solicitare folosind cURL (sau chiar browserul dvs.) pentru a vedea ce se întâmplă:

curl -i https://nlq7x7onj0.execute-api.us-east-1.amazonaws.com/dev/hi

După rularea acestuia, API-ul ar trebui să răspundă cu un răspuns JSON cu următorul conținut {"success":"get call succeed!","url":"/hi"}. Stratul Lambda a fost injectat și ar fi trebuit să vă schimbe antetele de răspuns adăugând x-instrumented-by și x-request-id chei ca aceasta:

x-instrumented-by: ErickWendel
x-request-id: 5ddf1343-e42e-4e33-b1e1-936c303c14c8

Dacă sunteți curioși despre ce a reușit Amplify pentru dvs. în timpul acestui tutorial, rulați amplify console și navigați pe tabloul de bord. Pe a mea o puteți vedea mai jos:

1612023910 630 Cum se reutilizeaza pachetele Nodejs cu functii AWS Lambda utilizand
tabloul de bord și vizualizarea jurnalelor de funcții pe AWS

A curăța

Pentru a elimina toate resursele create de Amplify, rulați amplify delete.

Concluzie

Există o mulțime de moduri de a vă îmbunătăți experiența în aplicațiile fără server. Amplify Framework vă poate ajuta să creați aplicații de generația următoare și să evitați sarcini repetitive.

Consultați documentele oficiale pentru a vedea alte posibilități de a construi API-uri puternice folosind tehnologii de ultimă generație, cum ar fi GraphQL și AWS AppSync. Sunt sigur că te va ajuta foarte mult!

Mulțumesc că ai citit

Apreciez foarte mult timpul petrecut împreună. Sper că acest conținut va fi mai mult decât simplu text. Sper că te-ar fi făcut un gânditor mai bun și, de asemenea, un programator mai bun. Urmărește-mă Stare de nervozitate și verifică-mi blog personal unde împărtășesc tot conținutul meu valoros.

Ne mai vedem! ?