Az időtúllépés megváltoztatása az AWS Lambdában

Ha kiszolgáló nélküli architektúrát szeretne építeni az AWS-ben, vagy legalábbis annak egy részét, akkor az AWS Lambda szolgáltatás lesz a legfontosabb része.

Ez egy kiszolgáló nélküli számítási funkció (általában Node.JS vagy Python programozási nyelven íródott), amelyet háttérfürtök vagy szerverek indítása nélkül fejleszthet és futtathat. Több AWS Lambda funkciót is csatlakoztathat összetettebb folyamatok kialakításához.

A lambda-függvény fontos tulajdonsága azonban a feldolgozási idő korlátozása. Ez végső soron meghatározza, hogy mikor a megfelelő cél az AWS Lambda funkció használata.

Forrás: aws.amazon.com

Mi az időkorlát?

Az AWS Lambda funkció időtúllépési funkciója egy olyan beállítás, amely meghatározza, hogy egy funkció mennyi ideig futhat a maximálisan, mielőtt leállna.

A lambda funkciókat úgy tervezték, hogy rövid életűek és állapot nélküliek legyenek, és így kell használni őket. Nem ritka kivétel, hogy a csapatok hogyan próbálják kihasználni a Lambda funkciót a hosszú távú folyamatokhoz. Ezt csak azért teszik, mert ki akarják használni az AWS Lambda szerver nélküli jellegének előnyeit. Mindig sokkal olcsóbb egy kód futtatása anélkül, hogy egy adott CPU- és memóriakonfigurációval rendelkező szervert kellene elindítani. A szándék tehát könnyen érthető.

Ha azonban egy funkció túl sokáig fut, az erőforrás-kihasználtsági és teljesítményproblémákat okozhat. Megkockáztatja az erőforrások bezárását, és mivel a hosszan tartó folyamat előnyei vannak, valószínűleg nem igazán törődik a folyamatokon belüli lépések optimalizálásával. Hirtelen az ötperces várakozási idő nem jelent nagy problémát. Még akkor is megengedheti magának, ha maga a folyamat szempontjából haszontalan.

Alapértelmezés szerint a Lambda funkció időtúllépése mindössze 3 másodperc. Ebben az esetben számolnia kell azzal a ténnyel, hogy a Lambda függvényben végrehajtott kódnak három másodpercen belül be kell fejeződnie. Ez nagyszerű, ha olyan architektúrát szeretne felépíteni, amely igazán gyors kommunikációval és válaszidővel rendelkezik, és potenciálisan több millió tranzakcióval nagyon rövid idő alatt. Ez azonban jelentősen korlátozná a Lambda funkció használható használati eseteit, így ezt a határt legfeljebb 900 másodpercig (15 percig) növelheti. Ha eléri ezt az időtúllépést, a Lambda leállítja a funkciót, és hibakódot ad vissza.

  Hogyan hozhat létre egyéni vászonkészletet a Photoshopban

Hogyan állítsuk be az időtúllépés funkciót?

Forrás: aws.amazon.com

Az AWS felügyeleti konzol, az AWS parancssori felület vagy az AWS SDK-k használatával beállíthatja a Lambda-funkciók időtúllépését.

Íme a konkrét lépések ennek eléréséhez:

  • Nyissa meg az AWS Management Console-t, és nyissa meg a Lambda szolgáltatást.
  • Válassza ki a módosítani kívánt lambda funkciót.
  • A „Konfiguráció” lapon görgessen le az „Általános konfiguráció” részhez, és keresse meg az „Időtúllépés” beállítást.
  • Kattintson a mellette lévő „Szerkesztés” gombra.
  • Adja meg az új időtúllépési értéket másodpercben (1 és 900 között), majd kattintson a „Mentés” gombra.
  • Kattintson a „Mentés” gombra az oldal tetején a Lambda funkció módosításainak mentéséhez.
  • Az AWS CLI parancssort is használhatja egy Lambda-függvény időtúllépésének frissítésére. Íme egy példa parancs:

    <code>aws lambda update-function-configuration --function-name [My_Lambda_Function_Name] --timeout 900

    Ez a parancs beállítja az időtúllépést a [My_Lambda_Function_Name] 15 percig. Csak írja be a funkció valódi nevét és a kívánt időtúllépési értéket másodpercekben.

    Néhány szempont

    Az időtúllépés beállítása a teljes funkcióra vonatkozik, nem csak az egyes kódblokkokra vagy a funkción belüli műveletekre. Tehát, ha a funkciója egy hosszan tartó műveletet hajt végre, például nagy fájl feldolgozása vagy hálózati kérés, akkor gondoskodnia kell arról, hogy az időtúllépés még a legrosszabb forgatókönyv esetén is elegendő legyen a művelet befejezéséhez. .

    Érdemes megjegyezni, hogy a Lambda funkciókat úgy tervezték, hogy rövid életűek és állapot nélküliek legyenek. Kisebb, diszkrét feladatok elvégzésére szolgálnak. Ha úgy találja, hogy a lambda-funkció végrehajtása sokáig tart, érdemes lehet több kisebb funkcióra bontani. Ezután egyenként hívhatja őket egy trigger segítségével. Például, ha az előző Lambda funkció kimenete egy adott S3 tárolóban van tárolva.

    Ezen túlmenően, ha a 15 perces korlátot meghaladó, hosszan tartó folyamatot kell futtatnia, fontolóra veheti az AWS Step Functions használatát egy sor Lambda-funkció vagy más AWS-szolgáltatás összehangolására a kívánt eredmény elérése érdekében.

    Legjobb gyakorlatok

    Maga az időkorlát munkaintervalluma nem tűnik elég nagynak néhány kiterjedt beszélgetéshez. A legtöbb esetben a fejlesztők közvetlenül 15 percre állítják be az összes Lambda funkcióhoz. Még ha a funkció sokkal hamarabb is véget ér, ennek nincs negatív mellékhatása.

    Ennek ellenére még mindig van néhány bevált gyakorlat, amelyet meg kell jegyezni.

    #1. Határozza meg a megfelelő értéket

    Az időtúllépés értékét a függvény várható végrehajtási ideje alapján kell beállítani. Ez alapvetően azt jelenti, hogy olyan értéket kell beállítani, amely nem túl rövid, de nem is szükségtelenül hosszú.

      Hogyan lehet diákként pénzt keresni nulla befektetéssel? [11 Ideas 💡]

    Győződjön meg arról, hogy egyetlen Lambda-funkció teljes ideje nem haladja meg a három percet, például csak az alkalmazás építészeti vagy általános teljesítménybeli okai miatt.

    Hasonlóképpen érdemes megbizonyosodni arról, hogy a Lambda funkció nem fejeződik be előbb, mint mondjuk három perc. Ennek egyik oka lehet, hogy bizonyos számú újrapróbálkozást szeretne kitölteni a Lambda kódon belül. Például abban az esetben, ha a kód kitöltéséhez szükséges erőforrások egy része foglalt vagy zárolva van.

    Tehát mielőtt továbblépne és 15 percre állítaná az időtúllépést, gondolja át, mi lehet a végrehajtási idő optimális értéke. A pontosabb értékek meghatározása csak egy újabb eszköz arra, hogy bizonyos határokat adjon az egész fejlesztőcsapat számára.

    #2. Monitoring idővel

    Miután beállította az időtúllépési korlátokat, igyekezzen figyelni a lambda-funkciók végrehajtási idejét. Ez fontos betekintést nyújt arra vonatkozóan, hogy az eredeti döntés helyes volt-e, vagy kiigazításra szorul.

    A CloudWatch mérőszámai és naplói segítségével nyomon követheti a funkciók végrehajtási idejét. Ezután azonosítsa azokat, amelyek a vártnál tovább tartanak, valamint azokat, amelyek a vártnál sokkal gyorsabban teljesítenek.

    #3. Aszinkron hívás

    Ha a Lambda funkciót olyan esemény váltja ki, amely nem igényel azonnali választ, például fájlfeltöltés vagy üzenet egy sorból, használja aszinkron hívást az időtúllépések kockázatának csökkentése érdekében. Ezzel a függvény a háttérben fut anélkül, hogy választ várna. Ez természetesen az időtúllépések csökkenéséhez vezethet. Ennek egyszerűen az az oka, hogy nem kell beleszámítani a Lambda teljes végrehajtási idejébe azt a várakozási időt, amelyre a függvénynek szüksége van az adott erőforráshoz.

    #4. Használja a lépésfüggvényeket összetett folyamatokhoz

    Ha olyan hosszú távú folyamatot kell futtatnia, amely meghaladja a 15 perces korlátot, az AWS Step Functions segítségével Lambda-funkciókat vagy más AWS-szolgáltatásokat hangszerelhet az eredmény elérése érdekében. A Step Function a folyamatot kisebb, jobban kezelhető feladatokra bontja, amelyeket az időkorláton belül végrehajthat.

    Akár több lambda funkciót is futtathat párhuzamosan egy lépésfunkción belül. Ezután hagyja, hogy a lépésfüggvény megvárja az összes párhuzamos lambda-függvényt, mielőtt továbblépne. Ez a vízszintes skálázás egyik formája, ahol több lambda függvény feloszthat egy problémát, és részben együtt oldhatja meg.

    Végül csak össze kell gyűjteni a részeredményeket, és fel kell építeni a végső felbontást, amelyhez az önálló lambda funkciót követő is elegendő lehet.

      A 301-es átirányítások megértése kezdőknek

    #5. Optimalizálja a kódot

    Optimalizálhatja Lambda funkciókódját a végrehajtási idő csökkentése és a teljesítmény javítása érdekében. Ez akkor hasznos, ha az időtúllépési intervallum csak alkalmanként nem elegendő. Ebben az esetben érdemes lehet kódoptimalizálást keresni az ilyen hibaesetek eltávolítására.

    Hogyan befolyásolja az időtúllépés a számlázást?

    Forrás: aws.amazon.com

    Az AWS Lambda funkció időtúllépési beállítása nem befolyásolja közvetlenül a funkció számlázását. Az AWS Lambda a kérések száma és a funkció végrehajtási idejének időtartama alapján számláz.

    Ha megnöveli a Lambda funkció időtúllépési beállítását, az hosszabb végrehajtási időt eredményezhet. De csak akkor, ha a funkciónak valóban szüksége van erre a további időre. Ha ezt kombinálja egy olyan funkció magasabb gyakoriságával, amelynek végrehajtása hosszabb ideig tart, akkor igen, magasabb költségekre számíthat.

    Ha azonban a funkciót nem hívják meg gyakran, vagy ha hamarabb fejezi be a folyamatot, mint az időtúllépési érték elérése, a számlázásra gyakorolt ​​hatás minimális lehet.

    Ez az oka annak, hogy az összes Lambda-funkció alapértelmezés szerint 15 perces időtúllépésre való beállítása nem lehet a fő oka a teljes feldolgozás költségeinek növekedésének.

    Ez azonban minden bizonnyal a teljes költségek közvetett növekedéséhez vezet. A fejlesztők úgy érzik, hogy van némi tartalékuk a használatra, és előfordulhat, hogy nem optimalizálják olyan mértékben a kódot, mint azt valószínűleg megtennék, ha az időtúllépések szigorúbbak, de még mindig reálisak lennének.

    Egy másik dolog az, hogy az AWS Lambda ingyenes szintet biztosít, amely havonta 1 millió ingyenes kérést és 400 000 GB-másodperces számítási időt tartalmaz. Ha a Lambda-függvény használata a szabad szint korlátok közé esik, akkor az időtúllépési beállítástól függetlenül nem kell fizetnie a funkció végrehajtási idejéért.

    Végső szavak

    Az AWS Lambda funkció egy hatékony eszköz, különösen az AWS felhőben történő szerver nélküli feldolgozáshoz. Ennek megvan a célja és a korlátai, amelyekkel tisztában kell lennünk. Ne próbáljuk olyan használati esetekre használni, amelyekre nem tervezték.

    Tökéletes egyszerű, aszinkron és ideálisan kiváltott műveletekhez, amelyek nem igényelnek 15 percnél hosszabb végrehajtási időt. Ha valami bonyolultabbra van szüksége, használja az AWS Step Functions-t, hogy több lambda-függvényt egyetlen összehangolt folyamatban egyesítsen. Vagy mondjon le az olcsóbb szerver nélküli feldolgozásról, és használjon megfelelő konfigurációval és számítási teljesítménnyel rendelkező szervereket a feladat elvégzéséhez.

    Ezután tekintse meg az AWS Lambda kezdőknek szóló bemutatását.