Vad Är Lambda-Funktioner Och Hur Du Använder Dem?

0
186

AWS Lambda-funktioner är ett sätt att köra kod utan proviantering eller hantera dina egna servrar. Snarare än att köra ett alltid-online-ansökan, de kör en enda funktion i molnet, som kan aktiveras som svar på API-evenemang eller andra händelser i ditt AWS konto.

Hur Gör Du För Att Använda Lambda-Funktioner?

Lambda är en beräkna service, rätt och slätt, och det är förmodligen den enklaste av dem alla. Snarare än att hyra en server med ett visst antal kärnor och mängd RAM-minne, du helt enkelt upp din kod, och kör den funktionen. Vanligtvis, du kommer inte att köra den manuellt, utan du ska ställa in den för att köra baserad på åtgärder från andra AWS tjänster. Till exempel att köra en funktion för att ändra storlek på bilder när en ny fil är placerad i S3 (en metod som används av the Seattle Times att en stor effekt), eller sökningar i en databas när en begäran skickas till API-Gateway.

Datorn resurser ges automatiskt till den som kör fungera, och det kommer att använda så mycket minne som den behöver för att så länge som uppgiften fortsätter. Du är helt enkelt faktureras baserat på antal funktions-anrop och hur mycket minne varje anrop använder.

Detta gör Lambda mycket flexibla för att användas som en backend. Traditionella program är mestadels monolitisk, du har en server (eller en flotta av dem) kör programmet. Du kan ha separata servrar för webbhotell, databaser och andra saker, men en hel del program som är byggda på detta sätt—en stor körbar, många rörliga delar.

Med allt som är så sammankopplade, och utan strikt ordning, det kan bli rörigt riktigt snabb. Det är också svårare att skala på ett effektivt sätt, om du tycker att en del av din ansökan är flaskhalsen, det kan vara svårt att eliminera utan skalning hela programmet och kraftigt öka din AWS bill i processen.

Du kan istället klippa flaskhals ut helt och hållet, och flytta det till Lambda. Efter alla, Lambda bryr sig inte om du kör din funktion tio gånger i månaden, eller tio miljoner gånger en månad.

Detta gör att Lambda för att vara mycket effektiv, och när de genomförs på rätt sätt, kan du spara en hel del pengar. Adam Pash från Postlight kunde släppa sina månatliga AWS bill från över $10.000 för bara $370, bara genom att byta till Lambda och optimera minnesanvändningen.

Även om det inte kommer att vara så här drastiska eller lätt för varje ansökan, Lambda har några stora fördelar som gör den till en viktig del av AWS lineupen beräkna tjänster.

För icke-kritiska applikationer, den utgör också ett mycket billigt sätt att köra ett program som behövs för att göra API-förfrågningar. Till exempel, du skulle kunna tjäna en statisk web app utan några servrar alls, genom att lagra din webbplats i S3, som serverar det genom CloudFront, och ansluta till en Lambda backend genom API-Gateway som kommunicerar med en DynamoDB bordet.

Hur Mycket Kostar De?

Som de flesta av AWS, Lambda prissättning är mycket “pay-as-you-go” – modell. I stället för att betala en platt pris för hela servern, du betalar endast för den exakta mängden resurser i din ansökan att använda—du är aldrig betala för inaktiv tid, inte ens en sekund av det. Detta gör naturligtvis Lambda ganska effektiv, på toppen av att kunna eliminera flaskhalsar i monolitisk program.

Lambda: s avgifter är följande, för us-east-1:

  • $0,20 per 1M önskemål
  • $0.000016667 för varje GB-andra

Den första laddningen gör att de flesta känsla; om du har 100 miljoner förfrågningar i en månad, får du betala en $20 avgift för detta.

Den andra uppgift som är mycket mer förvirrande. I grund och botten, är du debiteras baserat på minnet användning av dina funktioner, eftersom det oftast är den begränsande faktorn för AWS. Om din funktion startar upp, anslår 1024 MB RAM-minne, och går för en enda sekund att du kommer att debiteras $0.000001667 för det. Det är en ganska låg siffra, men över 1 MILJON förfrågningar, det är $1.667.

Naturligtvis, du kommer att vilja välja en runtime som minne effektiv. NodeJS används ofta, eftersom det är ganska lätt jämfört med som Java-runtimes. Men Java kan vara snabbare för uppgifter som tar längre tid att slutföra, och eftersom du inte betalar för nedlagd tid att initiera runtime (dvs, en “kallstart”), det är inte alltid så illa som det ser ut på pappret.

Det är en balansakt, men du vill se för att minimera två saker—minne, tid och kör den funktionen. Det finns ingen explicit kostnad för längre kör funktioner, men du debiteras per sekund, per GB, 256 MB-funktion som körs efter två sekunder kommer att kosta dig samma som 512 MB funktion som körs för en.

Komma Igång

Logga in på ditt AWS konto och gå över till Lambda Management Console.

Det finns två primära flikar här. Den första är för Program; Lambda program hantera flera funktioner, och är särskilt placeras ut automatiskt med hjälp av en SAM-mall. Detta gör att de kan spåras på Git och version förvaltade, vilket hjälper oerhört när man arbetar med hundratals funktioner.

Den andra fliken är för enskilda funktioner. Om du bara göra en fristående Lambda funktion, eller är det bara stöka runt för att få en känsla för det, bör du börja här och skapa en funktion från grunden, eftersom det är mycket mer enklare.

Du kan skapa en ny funktion från de “Funktioner” – fliken:

Du har ett par alternativ här. Du kan skapa funktionen helt från scratch, vilket kommer att initiera funktionen med ingenting mer än ett hej världen. Du kan också välja att använda en färdiga mallen, eller ens ladda ner en funktion från Lambda serverlösa ansökan arkivet.

Om du skapar det själv, har du att välja en runtime. Lambda har en hel del att välja mellan som standard:

Du kan också ta med din egen körning för att köra vilka språk du vill ha.

När det är skapat, du kan redigera det från funktionen s sida. Standard NodeJS funktion exporterar en hanterare som anropas när den funktion som svarar för att händelser.

Vi rekommenderar att du använder AWS är Cloud9 IDE för att arbeta med Lambda-funktioner. Det är en webb-baserad IDE bygger på samma editor som används på standard-funktion som redaktör, men med den fördelen att det mycket enklare testning och felsökning.

Om du vill ha din funktion svara på API-förfrågningar, är den enklaste metoden att ställa upp med API-Gateway. Du kan skapa ett nytt API och har det route vissa endpoints direkt till en specifik Lambda-funktionen, som kommer att hantera begäran och returnera ett svar.

Annars kan du ange en trigger i “Designer” på toppen, till exempel när ett objekt är placerade i en viss S3 bucket. Du kan också ange en destination som resultat får skickas till, till exempel en SQS kön, SNS ämne, eller andra Lambda funktion.

Lambda-funktionen kommer att köras med de privilegier som ges till den av utförande roll som skapades för det. Om du går in i andra AWS resurser du behöver för att ge det tillstånd att göra så i IAM Management Console.