Hogyan készítsünk API-t a Lambdas és az API Gateway segítségével

Hozzá szeretne férni az adatbázishoz, irányítani a rendszert, vagy végrehajtani valamilyen kódot egy másik webhelyről? Az API mindezt meg tudja csinálni az Ön számára, és meglepően könnyű őket beállítani.

Az API URL-t el tud végezni GET, PUT,POST , ésDELETEkéréseket egy másik szolgáltatás ellenőrzésére. Ha saját maga készít egyet, akkor felépítheti ezeket az API-kat, hogy bármit megtegyenek a kulisszák mögött. Gyakori felhasználás az adatbázis-vezérlés biztosítása, műveletek végrehajtása harmadik féltől származó API-kon (API-elfogadás) vagy egy másik szolgáltatás ellenőrzése.

Miért érdemes API-t használni?

Kérdezheti, miért van szükségünk API-ra, amikor közvetlenül elérhetjük az adatbázist, vagy futtathatjuk a kódot a webhelyen. Néhány nagy előnye van az API-knak a kód futtatásával szemben a webhelyen.

Elrejti a hozzáférési kulcsokat és tokeneket

Ez valószínűleg a legfontosabb ok az API használatára. Ha adatbázishoz fér hozzá, akkor szüksége lesz az adatbázis részleteire, valamint a felhasználói és hozzáférési token / kulcsadatokra.

Ha az adatbázist a webhelyről éri el, akkor ezeket a részleteket a webhely forráskódjában fogja tartalmazni. Ez nagyon rossz gyakorlat, mivel bárki belenézhet a forrás irányításába és ellophatja az adatait. Ez nem hangzik túl rosszul, de mi van, ha ezek az AWS vagy a Google Cloud Compute hitelesítő adatai? Az Ön webhelyére belépő emberek ezeket felhasználhatják arra, hogy a fiókjukon bármit futtassanak, amivel óriási számlát hagynak.

Ezeknek a folyamatoknak az API mögül történő futtatása azt jelenti, hogy senki sem láthatja a privát részleteket - nem lophatják el őket saját projektjeikben történő felhasználáshoz. Ha a webhely kódját a GitHub-ban vagy egy másik nyilvános forrásvezérlőben tárolja, ez azt is jelenti, hogy ott sem láthatók.

Futtassa a kódot másutt

Mi van, ha nem használ más szolgáltatásokat, és nem használ titkos kulcsokat? Ha nagy vagy összetett kódfuttatást futtat, vagy ha nem szeretné, hogy bárki más elolvassa a kódot és felfedezze annak működését, akkor is használhat API-t.

Annak ellenőrzése, hogy kinek van hozzáférése

Az API biztosítása lehetővé teszi annak korlátozását is, hogy ki férhet hozzá az adatbázishoz, vagy futtathatja a kódot. Ezt megteheti egy API kulcs igénylésével. Ezzel a kulccsal azonosíthatják a kérelmet benyújtó felhasználót, majd engedélyezik vagy elutasítják a kérést.

Ez felhasználható arra, hogy csak néhány ember férhessen hozzá a szolgáltatáshoz, vagy akár egy szintrendszert is létrehozhasson. Sok fizetett API így működik. Mindenkinek ingyenes, de korlátozott hozzáférést biztosít, és akkor engedélyezi a szolgáltatás felsőbb részeihez való hozzáférésért fizetett díjakat, vagy csak a kérések magasabb arányát.

Az API felépítése

Most, hogy tudunk néhány okot, amiért érdemes létrehozni egy API-t, tegyük ezt meg. Az API Gateway-t és az AWS Lambdas-t fogjuk használni, mert ez egyszerűbb, mint egy szerver futtatása. Győződjön meg arról, hogy rendelkezik AWS-fiókkal és be van jelentkezve.

API-átjáró beállítása

Először megnyitjuk az API Gateway szolgáltatást, és rákattintunk az „Első lépések” gombra . A következő oldalon ki kell választanunk az „Új API” -tválasztási lehetőség. Ezután megadjuk az API-nak egy nevet és leírást, majd kattintson az „API létrehozása” gombra.

Kattintson az „API létrehozása” lehetőségrebekerül az API konfigurációs oldalára.

Az első dolog, amit meg kell tennünk, egy erőforrás hozzáadása az API-hoz. Az erőforrások használata lehetővé teszi, hogy a hasonló API-hívásokat egymásba ágyazott perjelekkel csoportosítsuk. Létrehozunk egy API-t, amelynek segítségével ajánlásokat tehetünk arra, hogy mit nézzünk meg. Ezért kaphatunk/tv-showsés /movieskét alapmódszerként.

Kattintson a „Műveletek” legördülő menüre, és válassza az „Erőforrás létrehozása” lehetőséget . Nevezze el erőforrásait, ügyelve arra, hogy mindkettő a „/” útvonalon legyen.

Azt akarjuk, hogy a felhasználók el tudjanak menni a „/ filmek / horror” vagy a „/ tv-show / vígjáték” oldalra, és ezt megtehetjük az útvonal-paraméterek hozzáadásával. Ezek olyan változók, amelyekhez hozzáférhetünk az API-n belül. Ezek egyikének létrehozásához az erőforrást az {resourceName}alábbiak szerint kell beállítanunk . Ez megtehető a „tv-műsorok” és a „filmek” esetében.

Most, hogy megvan a hossza és a műfaja, létrehozhatunk módszereket az adatok lekérésére és hozzáadására egy táblához. Válassza ki az egyik {genre}erőforrást, kattintson a „Műveletek” elemre, ésmajd a Módszer létrehozása” . Ez egy kis szürke mezőt hoz létre az erőforrás alatt, amelyre kattinthatunk. Kezdjük aGETkérelmet, ezért válassza ki ezt, és kattintson a pipa gombra.

Itt kell eldönteni, hogyan kezeljük a kérést. Az AWS Lambdas-t fogjuk használni, de létre kell hoznunk őket, mielőtt befejezhetnénk a módszerek beállítását.

A lambdák létrehozása

Ezekre az API kérésekre a Lambdas segítségével tudunk válaszolni, ami nagyszerű, mivel csak akkor futnak, amikor szükségünk van rájuk. Ezeket nagyon könnyű létrehozni is, ezért most ezt fogjuk tenni.

A Lambda konzolban kattintson a „Funkció létrehozása” gombra. Ezután megnevezhetjük az első API függvényünket movieAPI, beállíthatjuk a Node 8.10 futtatására és az „Új szerepkör létrehozása sablon (ok) ból” . Megnevezzük új szerepkörünket „tableAPI” néven, és hozzáadjuk az „Egyszerű Microservice engedélyeket” az egyetlen sablonhoz.

Az összes kód megtalálható a //github.com/SamWSoftware/Projects/tree/master/movieAPI webhelyen

A „Funkció létrehozása” gombra kattintva a Lambda ablakba jutunk. Görgessen le a „Funkciókód” szakaszig, és megváltoztatjuk a kódot. Az első dolog, amit meg fogunk tenni, hogy ellenőrizzük, milyen kérési módszert alkalmaztunk.

exports.handler = async (event) => { console.log(event); if (event.httpMethod === 'PUT'){ let response = putMovie(event) return done(response); } else if (event.httpMethod === 'GET'){ let response = getMovie(event); return done(response); } };

A getMoviefunkció megírásával kezdjük . Ez a funkció genreaz útvonal paramétereinek lekérésével indul . Ebben az esetben az útvonal-paraméterek használata megkönnyítheti ezt a folyamatot.

const getMovie = event => { let genre = event.pathParameters.genre; return; }

With the genre that the user requested, we are going to get a recommended movie for them. I copied these from 25 Top Films From Each Genre and added them to an object with the genre as the key. We can then get the film by getting the value of the genre requested.

const movies = { action: 'Desperado (1995)', fantasy: 'Inception (2010)', ... horror: 'Black Swan (2010)' } const getMovie = event => { let genre = event.pathParameters.genre; return movies[genre]; }

This means that the title of the movie is being passed into the donefunction. This function is used, as API Gateway expects the data to come back in a very specific format. This function turns a string into that required format.

const done = response => { return { statusCode: '200', body: JSON.stringify(response), headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Methods': '*', 'Access-Control-Allow-Origin': '*' } } }

We can do a very similar thing for a tv-showsAPI function, reusing most of the code. Just change the function names and the movie suggestions to tv show.

Connecting the Lambdas to API Gateway

Back in API Gateway, we can add our new Lambdas to the methods we created earlier. We need to make sure that “Use Lambda Proxy integration”is selected and that we are pointing at the correct Lambda. Clicking “Save” will ask you for permissions to access this Lambda, to which we can give the “OK”.

Do this for the GETmethods on both resources and we can start to test. Selecting the methods should now show a method execution diagram. This sounds complicated but the only bit we need is the “TEST”section.

Clicking “TEST” will open a new section where we can try out the API. There are lots of things you can set here, but the only one we care about is the Path {genre}. We need to set this to the genre we’re requesting. Entering “western” as the genre and hitting the “Test” button gets a response like this:

We got our API working! Now we need to make sure that other people can access it. There are two steps to this.

  1. We enable CORS — Select the “{genre}”resource and then click “Actions”and “Enable CORS”. Leave everything as defaults and, when asked, click “Yes, replace existing values”.
  2. Deploy our API — Click on “Actions”andDeploy API”. Set the deployment stage to “[New Stage]” and then give your stage a name like “production”orpublic”.

Once your API has deployed you should get a URL like this. This is the base of your API. You can add /movies/western to access your API.

//{uniqueCode}.execute-api.eu-west-1.amazonaws.com/production

Your API URL might end up something like:

//fds1fe31fes476s.execute-api.eu-west-1.amazonaws.com/production/movies/western

That’s all for this article. In the next one we’ll connect this API to Dynamo tables and let users vote on their favourite movies in each genre. You can read that article below.

Building an API with Lambdas and API Gateway — Part 2

In the first part we created an API which passed requests through to a Lambda which returned the top tv show or movie…

medium.com