Egy korábbi blogbejegyzésben létrehoztunk egy API átjárót egy Lambda tervezettel. Ezzel mind az API Gateway, mind a Lambda függvény automatikusan létrejött és összekapcsolódott egymással. Most ezt manuálisan fogjuk megtenni, és megnézzük, hogyan tud egy API Gateway meghívni egy Lambda függvényt.
Lambda függvény létrehozása
Először is, hozzunk létre egy Lambda függvényt, mint az előző bejegyzésben, de ahelyett, hogy a Use a blueprint opciót választanánk, most az Author from scratch (Üres tervezet) opciót válasszuk. Adjunk egy nevet a függvényünknek. A Permissions alatt nem fogunk új szerepet létrehozni ehhez a függvényhez, hanem a meglévő szerepkörünket választjuk ki, amit a terveztünk hozott létre.
![](http://roadtoaws.com/wp-content/uploads/2021/04/lambda-author-from-scratch-1024x568.png)
A Create function (Függvény létrehozása) gombra kattintás után a Lambda kódunk elkészül, és készen áll az API átjárónkkal való összekapcsolásra. Ehhez belépünk az API Gateway szolgáltatásba.
Szeretnénk ezt a funkciót új erőforrásként használni, ezért létrehozunk egy új erőforrást, és abban egy új módszert. A metódus beállításainál az előzőekhez hasonlóan kiválasztjuk az új Lambda függvényünket. Most már láthatjuk az API flow diagram-ot (folyamatábrázolási diagram) ahol szemléletesen láthatjuk, hogyan hajtódik végre az újonnan létrehozott Lambda függvényünk.
![](http://roadtoaws.com/wp-content/uploads/2021/04/api-flow-1024x467.png)
A Test gombra kattintva tesztelhetjük az új API-hívásunkat, és hogy minden rendben működik. Biztosak vagyunk benne?! 🤔
Minden rendben van?
Ne feledjük, hogy egy meglévő szerepet választottunk az új Lambda függvényünkhöz. A szerepkörünk rendelkezik az összes szükséges jogosultsággal?
Ha visszamegyünk a Lambda-hoz, és megnézzük a Monitor részt, nem látunk hibát.
![](http://roadtoaws.com/wp-content/uploads/2021/04/lambda-monitor-1024x438.png)
A CloudWatch naplók megtekintése gombra kattintva viszont hibaüzenetet kapunk.
![](http://roadtoaws.com/wp-content/uploads/2021/04/cloudwatch-error-1024x53.png)
Ez azt jelenti, hogy a naplózás jelenleg nem működik az új Lambda függvényünkön. Manuálisan kell létrehoznunk egy naplócsoportot, és engedélyeznünk kell a szerepkörünknek, hogy ebbe a naplóba írjon.
A CloudWatch konzolban válasszuk a Log groups (naplócsoportok) menüpontot, majd kattintsunk a Create log group (naplócsoport létrehozása) gombra, és nevezzük el a naplócsoportunkat pontosan úgy, ahogy a hibaüzenetben szerepel. Esetünkben: /aws/lambda/simple-api-auth
💡 A naplócsoport létrehozásakor ne felejtsük el feljegyezni az ARN-jét, mert később szükségünk lesz rá.
![](http://roadtoaws.com/wp-content/uploads/2021/04/log-groups-1024x105.png)
Most, hogy engedélyeztük a szerepkörünknek, hogy írjhasson ebbe a naplócsoportba, el kell mennünk az IAM-be, és módosítanunk kell a szerepkörünket. Látjuk, hogy a CloudWatch engedélyek az AWSLambdaBasicExecutionRole házirendben vannak.
![](http://roadtoaws.com/wp-content/uploads/2021/04/role-permissions-1024x502.png)
Most kiválasztjuk ezt a házirendet, és az Edit policy (Házirend szerkesztése) gombra kattintunk. Az erőforrások szakaszban az Add ARN (ARN hozzáadása) gombra kattintunk, és hozzáadjuk az újonnan létrehozott naplócsoportok ARN-jét. Mentsük el a házirendet.
![](http://roadtoaws.com/wp-content/uploads/2021/04/iam-add-resource-1024x558.png)
És kész is vagyunk! Hozzáadtunk egy új funkciót az API-átjárónkhoz, és beállítottuk a szükséges jogosultságokat. 🎉
Tanulságok:
- Tartsuk karban a jogosultságokat az IAM-ben. Adjuk meg a haznált erőforrásokat, és csak a szükséges házirendeket engedélyezzük.