ESIMERKKI REITTIPARAMETRIN KÄYTÖSTÄ LAMBDA-FUNKTIOSSA Kun serverless.yml-tiedostossa määritetään reitti, johon meneminen on tapahtuma, joka laukaisee lambda-funktion, voidaan kyseisessä reitissä välittää tietoa funktiolle reittiparametrien avulla. Reittiparametreja käytetään erityisesti sellaisen tiedon välittämiseen, jonka avulla löydetään haluttu item/dokumentti tai tietue. DynamoDB:n tapauksessa reittiparametrin nimi ei saa olla sama kuin itemin primary keyn nimi. esim. seuraavassa esimerkissä scode soveltuu reittiparametrin nimeksi, mutta studentcode ei sovellu. --------------------------------------------------------------------------- Lambda-funktion getStudent kuvaus serverless.yml:ssä: getStudent: # Serverless-frameworkin käyttämä funktion nimi handler: student/getstudent.handler # funktion, eli tapahtuman käsittelijän, sijainti ja nimi koodissa events: # tapahtumat, jotka voivat laukaista funktion - httpApi: # httpApi-tapahtuma tapahtuu, kun mennään tiettyyn reittiin path: /student/get/{scode} # reitissä on reittiparametri {scode}, jonka avulla item löytyy method: get # tiedon haku suoritetaan get-metodilla ---------------------------------------------------------------------------- Tälle funktiolle voisi syntyä esim. seuraavanlainen reitti: https://pwgrloj8d0.execute-api.eu-north-1.amazonaws.com/student/get/{scode} Reittiä kutsuttaisiin Postmanissa esim. seuraavasti: https://pwgrloj8d0.execute-api.eu-north-1.amazonaws.com/student/get/t1234 ----------------------------------------------------------------------------- Lambda-funktio tiedostossa getstudent.js voisi olla seuraavanlainen: const { GetCommand } = require('@aws-sdk/lib-dynamodb'); const { doccli } = require('./ddbconn'); module.exports.handler = async (event) => { // scode saadaan reitistä tällä tavalla: const scode = event.pathParameters.scode; // params määrittelee, mistä taulusta haetaan, ja mikä item sieltä haetaan const params = { TableName: process.env.ddb_table, Key: { studentcode: scode, // haettavan itemin primary keyn arvo on muuttujassa scode }, }; try { const data = await doccli.send(new GetCommand(params)); //console.log(data.Item); return data.Item; } catch (err) { console.log('error: ' + err); } };