๊ด€๋ฆฌ ๋ฉ”๋‰ด

ruriruriya

[Serverless] ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ์„œ๋ฒ„ ๋ฐฐํฌ(sls deploy) ๋ณธ๋ฌธ

๐Ÿ“ŒServerless

[Serverless] ์„œ๋ฒ„๋ฆฌ์Šค ํ”„๋ ˆ์ž„์›Œํฌ ์„œ๋ฒ„ ๋ฐฐํฌ(sls deploy)

๋ฃจ๋ฆฌ์•ผใ…‘ 2023. 12. 20. 17:14
๋ฐ˜์‘ํ˜•

์„œ๋ฒ„๋ฆฌ์Šค๋กœ ๋งŒ๋“  API app์„ serverless deploy๋กœ ์„œ๋ฒ„ ๋ฐฐํฌ๋ฅผ ํ•ด๋ณด์ž :)

 

1. ์‚ฌ์ „ ์ž‘์—…

์‚ฌ์ „ ์ž‘์—…์€ seserverless ํ”„๋ ˆ์ž„ ์›Œํฌ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

https://ruriruriya.tistory.com/106

 

[AWS] Lambda - Serverless ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์น˜

1. npm ์„ค์น˜ ๋ณ„๋‹ค๋ฅธ ์„ค์ • ์—†์ด Next ๋งŒ์„ ๋ˆ„๋ฅด๋ฉฐ ์„ค์น˜๋ฅผ ์™„๋ฃŒํ•œ๋‹ค. https://nodejs.org/en/download Download | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 2. Serverless ํ”„๋ ˆ์ž„์›Œํฌ ์„ค์น˜

ruriruriya.tistory.com

๊ทธ๋ฆฌ๊ณ  AWS IAM Credentials ์œ ์ € ์ƒ์„ฑ๋„ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

https://ruriruriya.tistory.com/114

 

[Serverless] AWS IAM Credentials ์œ ์ € ์ƒ์„ฑ

1. AWS์˜ IAM์—์„œ ์œ ์ € ์ƒ์„ฑ AWS IAM ์ ‘์†ํ•ด์„œ ์™ผ์ชฝ [์—‘์„ธ์Šค ๊ด€๋ฆฌ]-[์‚ฌ์šฉ์ž] ์—์„œ ์–ด๋“œ๋ฏผ ๊ถŒํ•œ ๋ง๊ณ , ์•„๋ž˜์™€ ๊ฐ™์ด ํ•˜๋‚˜์”ฉ ์„ ํƒํ•ด์„œ ์œ ์ € ๊ถŒํ•œ์„ ์„ค์ •ํ•œ๋‹ค. ์•„๋ž˜ ์ •์ฑ…๋“ค์„ ๋ชจ๋‘ ์„ ํƒ ํ›„ ๋‹ค์Œ์„ ๋ˆ„๋ฅธ๋‹ค.

ruriruriya.tistory.com

 

2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์„ค๊ณ„

- MySQL workbench์—์„œ admin ๊ณ„์ •์œผ๋กœ ์Šคํ‚ค๋งˆ ์ƒˆ๋กœ์šด ์œ ์ € ์ƒ์„ฑํ•œ๋‹ค.

use mysql;
create user 'new_user'@'%' identified by '1288';
grant all privileges on movie_db.* to 'movie_db_user'@'%';

- ํ…Œ์ด๋ธ” ์ƒ์„ฑ ์ž‘์—…์„ ํ•œ๋‹ค.

* user ํ…Œ์ด๋ธ”์˜ password ๋Š” VARCHAR(300)์œผ๋กœ ๋„‰๋„‰ํžˆ ํ•œ๋‹ค.
์•”ํ˜ธํ™” ํ‚ค๊ฐ€ ๊ธธ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ์ž๋ผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋‹ค.

 

3. cmd ์—์„œ serverless API ํด๋” ์ƒ์„ฑ

์†Œ์Šค ํด๋” ๊ฒฝ๋กœ cd๋กœ ์ง€์ • ํ›„ serverless ๋ช…๋ น์–ด ์‹คํ–‰

Flask -App ์„ ํƒ

ํด๋” ์ด๋ฆ„ ์ƒ์„ฑ ํ›„ ๋‚˜๋จธ์ง€ [Skip] > n > no ์„ ํƒ ๋

 

 

4. VSCODE์—์„œ ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์ •

- serverless.yml provider ํŒŒ์ด์ฌ ๋ฒ„์ „, ๋ฆฌ์ „ ๋ณ€๊ฒฝ ๋˜๋Š” ์ถ”๊ฐ€

provider:
  name: aws
  runtime: python3.10
  region: ap-northeast-2

 

 

5. ๋กœ์ปฌ ํ…Œ์ŠคํŠธ

ํด๋” ์ƒ์„ฑ ํ›„ VSCODE๋กœ ํด๋”๋ฅผ ์—ด์–ด๋ณด๋ฉด ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” app.py๊ฐ€ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค.
์ธํ„ฐํ”„๋ฆฌํ„ฐ ์„ ํƒ์œผ๋กœ ๊ฐ€์ƒํ™˜๊ฒฝ์„ ์ง€์ • ํ›„์— flask run ๋ช…๋ น์–ด๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณธ๋‹ค.

ํ•ด๋‹น ํด๋ž˜์Šค์˜ url์„ ํ™œ์šฉํ•ด์„œ ํฌ์ŠคํŠธ๋งจ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํฌ์ŠคํŠธ๋งจ ํ…Œ์ŠคํŠธ

6. GitHub ์›น์—์„œ ์ƒˆ repository  ์ƒ์„ฑ

- ReadMe, ์–ธ์–ด ์„ ํƒ ๋ชจ๋‘ ํ•˜์ง€ ๋ง ๊ฒƒ!
- Private๋กœ ์ƒ์„ฑ(์‹œํฌ๋ฆฟ ํ‚ค ๋“ฑ ๋ณด์•ˆ ๋ฌธ์ œ)

 

7. VSCODE ํ„ฐ๋ฏธ๋„ git ๋ช…๋ น์–ด ์‹คํ–‰

- $ git init
- $ gir remote add origin [๊นƒํ—ˆ๋ธŒ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ฃผ์†Œ]

 

8. .gitignore ํŒŒ์ผ ์ƒ์„ฑ

- .gitignore ํŒŒ์ผ์— node_modules/ ํด๋” ์—…๋กœ๋“œ ๋˜์ง€ ์•Š๋„๋ก ๋งจ ์œ„์— ์ถ”๊ฐ€
(๊ธฐ์กด์— ํ–ˆ๋˜ ํ”„๋กœ์ ํŠธ ์—์„œ ๋‚˜๋จธ์ง€ ๋ณต์‚ฌ ๋ถ™์—ฌ๋„ฃ๊ธฐ๋กœ ์ถ”๊ฐ€ or github ์ƒˆ๋กœ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ๋งŒ๋“ค๋ฉด ์ƒ๊ธฐ๋Š” .gitignore ์•ˆ์˜ ์ฝ”๋“œ ๋‚ด์šฉ ๋ณต์‚ฌ/๋ถ™์—ฌ๋„ฃ๊ธฐ ์ถ”๊ฐ€)

 

9. ํด๋” ๋ฐ key ๋ณด์•ˆ ํŒŒ์ผ ์ƒ์„ฑ

API ์ž‘์—…ํ•  resources ํด๋” ์ƒ์„ฑ, config.py, mysql_connection.py, utils.py 4๊ฐœ ํด๋” ๋ฐ ํŒŒ์ผ๋“ค ๋ณต์‚ฌ(private ๋กœ)

ํ…Œ์ŠคํŠธํ–ˆ๋˜ app.py๋„ ๋ณต์‚ฌ

 

10. ๋ฐ์Šคํฌํƒ‘ ๊นƒํ—ˆ๋ธŒ์—์„œ add existing repository

commit ์ „ ๊ผญ .gitignore ์ƒ์„ฑํ•ด์•ผ ํ•จ.

 

11. requirements.txt์— ์„ค์น˜ํ•  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถ”๊ฐ€

flask-restful 
mysql-connector-python 
psycopg-binary 
passlib 
flask-jwt-extended 
email-validator

Flask==1.1.4
Werkzeug==1.0.1
markupsafe==2.0.1

flask-restful 
mysql-connector-python 
psycopg-binary 
passlib 
flask-jwt-extended 
email-validator

12. ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ sls deploy ์‹คํ–‰

 

13. ์œ„ endpoint๋กœ ํฌ์ŠคํŠธ๋งจ ํ…Œ์ŠคํŠธ

endpoint์˜ ์ฃผ์†Œ๋กœ ํ…Œ์ŠคํŠธ ํ•ด๋ณด๋ฉด ์ž˜ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ˜์‘ํ˜•