Most, hogy az Amazon API Gateway már működik, létfontosságú számunkra, hogy észleljük a hibákat vagy a helytelen használatot. A Lambda függvényeinkben már alapértelmezés szerint be van kapcsolva a naplózás, és az egyes függvények Monitor lapján láthatjuk a lehetséges hibákat és a használati metrikákat. Az API Gateway-nk viszont alapértelmezés szerint nem engedélyezi a naplózást. Ebben az epizódban erre is kitérünk.
CloudWatch beállítások
Az egyes API stádiumokhoz különböző naplózási beállítások alkalmazhatók. Ezért találjuk a CloudWatch beállításokat a Stages -> [stage name] -> Logs/Tracing alatt.
A CloudWatch naplók esetében két naplózási szint közül választhatunk: INFO az összes kérés végrehajtási naplójának generálásához, vagy ERROR csak a hibát eredményező kérések végrehajtási naplójának generálásához.
Lehetőségünk van a teljes kérés/válasz adatainak naplózására a megfelelő jelölőnégyzet bejelölésével.
Itt is engedélyezhetjük a részletes CloudWatch metrikákat.
Tegyük fel, hogy még soha nem engedélyeztük az API-naplózást. Ebben az esetben, amikor megpróbáljuk elmenteni a módosításainkat, a következő hibát kapjuk:
CloudWatch Logs role ARN must be set in account settings to enable logging
CloudWatch jogosultságok
A fenti hiba azért jelent meg, mert még nem állítottuk be a CloudWatch napló szerepkör ARN-jét a Beállítások alatt.
❗ Ne feledjük, hogy az API-beállítások globálisak. Minden átjárónkra vonatkoznak. Ha megváltoztatjuk a CloudWatch naplószerep ARN-jét az egyik API átjárónkban, akkor az az összes átjárónkban meg fog változni, feltéve, hogy ugyanazt a régiót használjuk!
Próbáljuk meg hozzáadni a korábban létrehozott szerepkörünket: simple-api-role ARN. Az ARN-t az IAM konzol -> Roles, majd a simple-api-role kiválasztásával kapjuk meg.
Az ARN-ünk hozzáadásakor egy másik hibát kapunk: 🤯
The role ARN does not have required permissions configured. Please grant trust permission for API Gateway and add the required role policy.
A szerepkörünk még nincs beállítva a CloudWatchba való írásra. Menjünk vissza az IAM-be, és frissítsük a simple-api-szerepünket a megfelelő jogosultságokkal.
Először az AmazonAPIGatewayPushToCloudWatchLogs házirendet kell csatolnunk a szerepkörünkhöz. A házirendek szerepekhez való hozzáadását már korábban is elvégeztük. Ha elakadtál, menj vissza az Új Lambda funkció hozzáadása egy API Gateway-hez bejegyzéshez, ahol leírtam, hogyan csatolhatunk új házirendet egy meglévő szerepkörhöz. De még nem végeztünk… ⏱️
A Trust relationships (izalmi kapcsolatok) lapon kattintson a Bizalmi kapcsolat szerkesztése gombra, és adja hozzá az apigateway.amazon.aws.com címet. Ha csak a Lambda-t használta ezzel a szereppel, akkor ez a példaházirend-dokumentum fog működni:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": [
"lambda.amazonaws.com",
"apigateway.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Most, hogy a jogosultságok megfelelően konfigurálva vannak, visszamehetünk az API-átjáróhoz, és hiba nélkül hozzáadhatjuk a szerepet. 🤠
Befejezés
Beállítottuk a CloudWatch napló szerepkör ARN-jét, most itt az ideje, hogy engedélyezzük a naplózást az API átjárónkban.
Amikor engedélyezzük a naplózást a /aws/apigateway/welcome log csoportban, egy új naplóbejegyzést fogunk látni: Cloudwatch naplók engedélyezve az API Gateway számára. Ez azt jelenti, hogy nagyszerű munkát végeztünk! 🥳 Sajnos a naplóüzenetből nem derül ki, hogy melyik átjáróhoz, de az időbélyegző alapján duplán ellenőrizhetjük, hogy ez a mi átjárónk.
Az Amazon API Gateway új naplócsoportot hoz létre a következő formátum alapján: API-Gateway-Execution-Logs_apiId/stageName. Itt találjuk az API Gateway-ünk naplóbejegyzéseit.
Majdnem befejeztük API Gateway sorozatunkat. De a legfontosabb feladatunk még hátravan: Dokumentáció. 📄