RestFul API

RestFul API๋ฅผ Serverless Framework๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ

567Rabbit 2024. 5. 23. 13:34


*** ์•„๋‚˜์ฝ˜๋‹ค ํ”„๋กฌํ”„ํŠธ์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ๋งŒ๋“ค๋ฉด์„œ flask์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค์šด ๋ฐ›์•„์ค€๋‹ค ***

 

conda create -n lambda_310 python=3.10

pip install flask flask-restful mysql-connector-python psycopg2-binary passlib flask-jwt-extended email-validator flask-uploads uuid numpy pandas scikit-learn==0.23.2

 

 

node.js ๋‹ค์šด๋ฐ›๊ธฐ

 

https://nodejs.org/en/

 

Node.js — Run JavaScript Everywhere

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

 

 

 

Severless ํšŒ์›๊ฐ€์ž…ํ•˜๊ธฐ

 

https://www.serverless.com/

 

Serverless: Zero-Friction Serverless Apps On AWS Lambda & Beyond.

Easily build auto-scaling, low-overhead applications on AWS Lambda, API Gateway, DynamoDB, and other managed services with the Serverless Framework.

www.serverless.com

 

 

Github๋กœ ํšŒ์›๊ฐ€์ž…ํ•˜์˜€๋Š”๋ฐ, google๋กœ ํ•˜์—ฌ๋„ ๋จ

 

 

 

 

Serverless Framework ์„ค์น˜

 

- cmd(๋ช…๋ นํ”„๋กฌํ”„ํŠธ) ์‹คํ–‰ํ•˜๊ธฐ

 

 

cd๋กœ ๊นƒํ—ˆ๋ธŒ๋กœ ๊ฒฝ๋กœ์ด๋™ํ•œ ํ›„์— ์„ค์น˜ (๊ณต๋ฐฑ ์ฃผ์˜ํ•˜๊ธฐ)

npm install -g serverless

 

 

 

 

 

 

์•ž์—์„œ ์ƒ์„ฑํ•œ ์œ ์ €๋ฅผ Serverless์— ์„ค์ •ํ•œ๋‹ค

 

cmd์—์„œ Github ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•ด์ค€๋‹ค

 

 

serverless ๋ผ๊ณ  ์ž…๋ ฅํ•œ๋‹ค

 

serverless

 

 

๋ฐฉํ–ฅํ‚ค๋กœ Flask API๋กœ ์ด๋™ํ•œ๋‹ค

 

 

 

 

๋กœ๊ทธ์ธ ์„ ํƒ

 

 

 

 

 

 

 

 

https://codebunny99.tistory.com/104

 

AWS IAM ์‚ฌ์šฉ์ž ์ถ”๊ฐ€ํ•˜๊ณ  ์ธ์ฆํ‚ค ์–ป๋Š” ๋ฐฉ๋ฒ•

IAM ์‚ฌ์šฉ์ž ์ถ”๊ฐ€      ์ •์ฑ… ์•„๋ž˜ 8๊ฐœ ์ฒดํฌ    ์ƒ์„ฑํ•œ ์‚ฌ์šฉ์ž๋กœ ๋“ค์–ด๊ฐ€์„œ ์•ก์„ธ์Šค ํ‚ค(์ธ์ฆ ํ‚ค) ๋งŒ๋“ค๊ธฐ    ์‚ฌ์šฉํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ์•ก์„ธ์Šค ํ‚ค๋ฅผ ๊ณจ๋ผ์ค€๋‹ค    .csv ํŒŒ์ผ ๋ฐ›์•„์ฃผ๊ธฐ -> ์™„๋ฃŒ     ์‚ฌ

codebunny99.tistory.com

 

 

 

 

๋‹ค์šด๋กœ๋“œ ๋ฐ›์€ .csv ํŒŒ์ผ์„ ์—ด์–ด ์ž…๋ ฅํ•œ๋‹ค

Enter AWS Access Key ID >> ์ž์‹ ์˜ Aceess key ID

Enter AWS Secret Access Key ID >> ์ž์‹ ์˜ Secret Access key

 

 

 

 

 

VSCode ์—ด๊ธฐ

 

 

๊นƒํ—ˆ๋ธŒ ํด๋”์— aws-recipe-server ํด๋”๊ฐ€ ์ƒ์„ฑ๋˜์—ˆ๋‹ค. ์ด ํด๋”๋ฅผ vscode๋กœ ์—ด์–ด์ฃผ์ž

 

 

 

 

์•„๊นŒ ๋งŒ๋“  ๊ฐ€์ƒํ™˜๊ฒฝ์œผ๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

 

 

 

 

VSCode ํ„ฐ๋ฏธ๋„ cmd ์ฐฝ์—์„œ ์„ค์น˜ํ•˜๊ธฐ

npm install serverless-wsgi --save-dev

 

 

 

serverless.yml ํŒŒ์ผ ๋งจ ์•„๋ž˜์— ์ถ”๊ฐ€(์‚ฝ์ž…)ํ•˜๊ธฐ

package:
  individually: true
  exclude:
    - node_modules/**  # node_modules ํด๋”์™€ ๊ทธ ํ•˜์œ„ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ œ์™ธ
    - .git/**  # .git ํด๋”์™€ ๊ทธ ํ•˜์œ„ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ œ์™ธ
    - tests/**  # tests ํด๋”์™€ ๊ทธ ํ•˜์œ„ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ์ œ์™ธ
  include:
    - src/**  # src ํด๋”์™€ ๊ทธ ํ•˜์œ„ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ํฌํ•จ
    - handler.py  # ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ handler.py ํŒŒ์ผ ํฌํ•จ
    - config/**  # config ํด๋”์™€ ๊ทธ ํ•˜์œ„ ๋ชจ๋“  ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ ํฌํ•จ

 

 

 

VSCode ํ„ฐ๋ฏธ๋„ cmd ์ฐฝ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ

sls deploy

 

 

 

 

 

๊ทธ ์ „์— API๋ฅผ ๋งŒ๋“ค์—ˆ๋˜ recipe_server์—์„œ 

 

(1) config.py, mysql_connection.py, utils.py๋ฅผ aws-recipe-server ๋กœ ์˜ฎ๊ธด๋‹ค

(2) resources ํด๋” ์ž์ฒด๋ฅผ aws-recipe-server ๋กœ ์˜ฎ๊ธด๋‹ค

(3) ( aws-recipe-server์— ์žˆ๋Š” app.py๋ฅผ ์‚ญ์ œํ•˜๊ณ  ) app.py๋ฅผ aws-recipe-server ๋กœ ์˜ฎ๊ธด๋‹ค

 

 

=> ์˜ฎ๊ธด๋‹ค

 

 

 

 

requirements.txt์— ์‚ฝ์ž…ํ•œ๋‹ค

 

 

 

 

 

serverless.yml์— ์ˆ˜์ •, ์‚ฝ์ž…ํ•œ๋‹ค

 

 

 

 

 

์ €์žฅํ•˜๊ณ , VSCode cmd๋กœ ๊ฐ€์„œ ์ž…๋ ฅํ•œ๋‹ค

sls deploy

 

 

 

 

endpoints๋ฅผ copyํ•˜๊ธฐ

 

 

 

 

 

Postman

 

๊ธฐ์กด์— ์žˆ๋˜ API์— ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋์ด๋‹ค