AWS Lambdas sunt geniale! Acestea simplifică implementarea aplicațiilor fără server. Acestea ne permit să construim rapid prototipuri și să scalăm automat. Una dintre problemele legate de a avea fiecare funcție ca entitate separată este că trebuie să includeți cod comun în fiecare Lambda.

Dacă trebuie să faceți același lucru în același mod de trei ori, este timpul să îl automatizați – Automation Rule of Three

Straturi

Au fost create straturi Lambda pentru a rezolva acest lucru cod repetat problema. Modul în care funcționează este că vă implementați codul comun într-un strat. Acesta poate fi codul dvs. comun sau pachetele NPM pe care le utilizați întotdeauna. Când conectați acest strat la unul dintre Lambdas, puteți accesa tot codul comun din interiorul Lambda.

Aceasta înseamnă că nu trebuie să copiați același fișier în fiecare folder Lambda sau să creați propriul repo “comun” de care aveți nevoie.

Configurarea unui strat

Deoarece un strat este doar o colecție de cod, putem începe prin crearea unui nou folder pentru acest strat. Îmi place să am toate straturile într-un folder lângă folderul Lambdas. Putem crea un nou folder de straturi numit DemoLayer care trebuie să aibă un folder pentru runtime pe care urmează să îl folosească. Pentru acest exemplu, vom folosi nodejs, deci creăm acel folder.

mkdir -p lambdaLayers/DemoLayer/nodejs
Cum sa construiti si sa utilizati un strat pentru AWS

Folosind terminalul nostru, putem naviga la DemoLayer folder și inițializați NPM.

cd lambdaLayers/DemoLayer/nodejs
npm init

Acceptați toate valorile implicite din configurarea NPM și veți avea pachet.json fișier generat în dosarul dvs.

ad-banner

Pentru primul nostru strat, vom importa fișierul moment bibliotecă. Acesta este același proces pe care l-ați folosi pentru a adăuga orice pachet NPM la strat.

npm install --save moment

Implementarea Layer-ului nostru

Acum că avem codul comun în dosarul nostru, trebuie să-l implementăm. Pentru a face acest lucru, trebuie să închidem întregul folder și apoi să îl încărcăm ca un strat Lambda. Pentru a descărca conținutul folderului, puteți naviga în DemoLayer folder și rulați un fermoar comanda pe conținutul folderului.

cd ../
zip -r demoLayer.zip ./*

Ar trebui să vedeți acum un demoLayer.zip fișier din interiorul folderului. Acum putem merge la AWS Console pentru a crea stratul nostru.

În consola AWS, navigați la AWS Lambda și, în partea stângă, ar trebui să avem opțiuni, inclusiv Straturi.

1611291844 125 Cum sa construiti si sa utilizati un strat pentru AWS

În meniul layerelor, avem opțiunea de a crea un layer nou. Făcând clic pe acesta se deschid opțiunile de configurare în care putem da straturii un nume, o descriere, încărcăm fișierul zip pe care tocmai l-am creat și selectăm duratele de rulare.

1611291845 853 Cum sa construiti si sa utilizati un strat pentru AWS

Testarea stratului

Cu stratul creat putem testa că totul funcționează. Pentru a face acest lucru, putem crea un nou Lambda numit DemoWithLayer care rulează pe nodul 8.10. În interiorul acestei Lambda putem adăuga acest cod:

const moment = require('moment');

exports.handler = async (event) => {
    let momentNow = moment.now();
    
    const response = {
        statusCode: 200,
        body: JSON.stringify({momentNow}),
    };
    return response;
};

Putem testa ce se întâmplă atunci când rulăm acest lucru fără strat prin crearea unui eveniment de testare. În partea dreaptă sus a consolei Lambda, faceți clic pe selectați un eveniment de testare și apoi configurați evenimentele de testare. Aceasta deschide o fereastră de configurare în care creăm blobul JSON care este trimis handler-ului. Deoarece nu folosim obiectul evenimentului, putem trece valorile implicite, putem da acestui test un nume și îl putem crea.

1611291845 965 Cum sa construiti si sa utilizati un strat pentru AWS

Acum putem face clic pe Test pentru a rula Lambda. Acest lucru duce la acest mesaj:

1611291845 844 Cum sa construiti si sa utilizati un strat pentru AWS

Acest lucru se datorează faptului că Lambda noastră nu are moment modulul instalat. Acum putem adăuga noul nostru strat la Lambda și putem relua testul.

Pentru a adăuga un strat, faceți clic pe Straturi butonul de sub DemoWithLayer buton. Derulați până în partea de jos a paginii până la Straturi de referință și faceți clic pe adăugați un strat buton. În fereastra pop-up, putem selecta DemoLayer din meniul derulant și selectând cea mai înaltă versiune.

1611291845 820 Cum sa construiti si sa utilizati un strat pentru AWS

Adăugați acest lucru la Lambda și asigurați-vă că salvați modificările Lambda. Când reluăm testul, obținem un răspuns de succes. Puteți utiliza acest proces pentru a elimina o mulțime de pachete obișnuite din Lambdas.

1611291846 917 Cum sa construiti si sa utilizati un strat pentru AWS