Vid det här laget har du säkert koll på att det behövs servrar även om man ägnar sig åt serverlös utveckling. Men som utvecklare, eller driftsansvarig, behöver man inte bry sig om att hantera servrarna. Det sköts automatiskt av tjänster som Amazons Lambda och Microsofts Azure Functions.

Som utvecklare skriver man funktioner som kan anropa varandra, eller andra rutiner, och även kan triggas av olika händelser. Och det kostar bara pengar när funktioner körs. Men hur fungerar det i praktiken? Häng med på IDG News grundkurs för Amazons Lambda.

Vi ska titta på de grundläggande stegen för att bygga en funktion på Lambda, utan att gå in på någon kod i detalj. Med de här stegen får du bashandgreppen som krävs för att komma i gång.

Exemplet som följer går ut på att bygga en enkel funktion för att ändra storleken på en bildfil som laddas upp till Amazons lagringstjänst S3. När en bildfil laddas till ett visst utrymme (bucket) på S3 utlöses en händelse (event) som innebär att en Lambdafunktion körs, med information om händelsen som indata.

Läs också: Serverlöst blir lätt vettlöst om du inte tänker till

I exemplet läser funktionen bildfilen från S3 till minnet och sedan är det tänkt att den ska skapa granskningsbilder (thumbnails) i olika storlekar som skrivs till ett annat lagringsutrymme på S3. Det känns som ett hyfsat realistiskt exempel.

Så, hur bygger man den här funktionen?

Det finns tillägg till utvecklingsverktyg som Eclipse och verktyg som Serverless Framework, men det enklaste sättet att komma i gång är kanske att använda Amazons konsol för Lambda. Ett klick på Create New Function ger följande skärmbild:

Lambda

Eftersom exemplet handlar om att använda Javascriptplattformen Node.js för att bygga en funktion som reagerar på en S3-händelse så väljs ”Node.js 6.10” under Select Runtime och S3 under Filter.

Ett klick på mallen s3-get-object leder till sidan Configure Triggers. Där kan man definiera hur händelsen ska utlösas (triggas).

Amazon Lambda

Här anger vi var på S3 händelsen ska utlösas och att den ska utlösas när ett objekt skapas. Vi bryr oss inte om fler inställningar, utan markerar att ”triggern” ska aktiveras och klickar på Next. Belöningen blir skelettet till en funktion:

Amazon Lambda

Koden som genereras hämtar bland annat information om det objekt som utlöste triggern.

Längre ner på sidan som visas får man lov att ange olika rättigheter:

Amazon Lambda

Vi måste till exempel ange något som kallas “IAM role” för åtkomst till olika Amazonresurser. Man kan tänka sig till läsrättigheter till S3, men om man även ska skapa och lagra nya granskningsfiler så behövs det förstås även skrivrättigheter på S3.

Därefter är det dags att titta på mer detaljerade inställningar (Advanced Settings):

Amazon Lambda

Här anger man värden för till exempel mängden minne som ska användas och för hur lång tid en funktion får ta (execution timeouts). För det här exemplet fungerar de förvalda värdena på 128MB och 3 sekunder. Det är de här värdena som anger hur stor container på Amazons molnplattform som kommer att användas för att köra en funktion, så det är viktigt att ställa in optimala värden för olika tillämpningar.

Läs också: Därför är serverlöst nästa paradigmskifte

Ett klick till på Next gör att de inställningar som gjorts visas:

Amazon Lambda

Ett klick på Create Function gör, föga förvånande, att den nya funktionen skapas.

Vi ska inte gå in på koden för funktionen i den här beskrivningen. Man kan köra funktionen nu, genom att ladda filer till det angivna utrymmet på S3, att händelsen som ”triggar” funktionen utlöses. Men räkna med en hel del finslipning av funktionen, inte bara för att definiera vad den ska göra, utan även med att ställa in korrekta värden för behörigheter vilket inte alltid fungerar med de förvalda alternativen.