Ky shembull ilustron se si mund t'i shërbejmë skedarët duke përdorur "AWS Lamda" dhe AWS API Gateway duke përdorur "Serverless". Amazon API Gateway mbështet shërbimin e skedarëve binare. Ne do të shkruajmë një API pa server që shërben një imazh.
Para se të filloni do t'ju duhet të keni
- Njohuri bazike të Serverless
- Node.js dhe npm të instaluara në sistemin tuaj
- Llogaria e shërbimeve të uebit të Amazon (AWS).
Ju mund t'i referoheni këtij "blog" nëse nuk jeni të njohur me bazat e pa server
Konfigurimi i projektit
Ne do të krijojmë një dosje projekti dhe do të inicializojmë një projekt npm. Krijo një shërbim të ri pa server në dosjen e projektit.
mkdir my-serverless-project cd my-serverless-project npm init -y serverless create --template aws-nodejs
Korniza pa server gjeneron një pllakë boilerplate për aplikacionin. Nga këto, handler.js
dhe serverless.yml
janë domethënëse.
Tani do të instalojmë serverless-offline
që është një shtojcë e përdorur për të ekzekutuar kornizën pa server në lokalin host. Kjo do të imitojë Lambda dhe API Gateway në makinën tonë lokale për të shpejtuar ciklet tuaja të zhvillimit. Përndryshe, do të na duhet ta vendosim shërbimin në AWS çdo herë për të testuar një ndryshim.
npm install -D serverless-offline
Modifiko skedarin serverless.yml
për të përfshirë shtojcën.
service: name: serverless plugins: - serverless-offline provider: name: aws runtime: nodejs12.x apiGateway: minimumCompressionSize: 1024 environment: AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1 functions: hello: handler: handler.hello events: - http: method: get path: /
Tani ekzekutoni komandën e mëposhtme në dosjen e projektit tuaj për të nisur serverin offline pa server.
serverless offline start
Ne kemi bërë një aplikacion bazë pa server. Shkoni http://localhost:3000/dev
për të parë serverin e zhvillimit.
Konfiguro shërbimin e skedarëve binar në API Gateway
Ne do të përdorim një shtojcë të quajtur serverless-apigw-binary
për të shërbyer skedarët përmes Portës API.
npm install -D serverless-apigw-binary
Shtoni një skedar imazhi në dosjen e projektit. Kjo është për lehtësinë e demonstrimit. Skedari binar mund të jetë i çdo lloji dhe nga burime të ndryshme. Këtu po shërbejmë një imazh PNG. Do të na duhet të shtojmë në mënyrë eksplicite një rresht në serverless.yml
për të përfshirë skedarin e imazhit gjatë vendosjes. Si parazgjedhje, pa server do të injorojë të gjithë skedarët që nuk janë referuar në aplikacion. Modifikoni serverless.yml
si më poshtë
service: name: serverless include: - my-image.png plugins: - serverless-offline - serverless-apigw-binary custom: apigwBinary: types: - '*/*' provider: name: aws runtime: nodejs12.x apiGateway: minimumCompressionSize: 1024 environment: AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1 functions: hello: handler: handler.hello events: - http: method: get path: /
Ne do të duhet të modifikojmë handler.js
në përputhje me rrethanat. API Gateway nuk mbështet dërgimin e të dhënave binare drejtpërdrejt, më tepër si një varg. isBase64Encoded: true
do të njoftojë API Gateway se të dhënat binare janë të koduara në bazën64.
'use strict'; const fs = require('fs'); module.exports.hello = async (event) => { const file = fs.readFileSync('my-image.png'); return { statusCode: 200, headers: { 'Content-Type': 'image/png', }, body: file.toString('base64'), isBase64Encoded: true, }; };
Vendosni aplikacionin pa server duke përdorur serverless deploy
. Voila, ne kemi shërbyer me sukses skedarët binare përmes AWS Lambda dhe API Gateway.
Duke përfunduar
Ky artikull ju udhëhoqi në procesin e krijimit të një aplikacioni pa server që shërben skedarë binare. Kjo do të jetë e dobishme kur ne po krijojmë një aplikacion që përfshin shërbimin e skedarëve binare, si p.sh. një aplikacion i pamjes së ekranit që merr pamje nga ekrani i imazheve. Ju mund ta shihni të gjithë kodin "këtu"