AWS

[AWS] API Gateway + Lambda + RDS(MySQL) ์—ฐ๊ฒฐ (1)

yyyeun 2024. 2. 14. 12:22

์œ ์ € ์ธก์—์„œ API๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ „๋‹ฌํ–ˆ์„ ๋•Œ, RDS์— ๊ฐ’์„ ์ ์žฌํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

์ด ๊ธ€์—์„œ๋Š” ์šฐ์„  API Gateway์™€ Lambda๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ  API์— ์ „๋‹ฌํ•œ ๊ฐ’์ด ์ œ๋Œ€๋กœ ๋ฐ˜ํ™˜๋˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

 

API Gateway

1. API ์ƒ์„ฑ

 

POST ์š”์ฒญ์„ ๋ณด๋‚ผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— REST API๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ด๋ฆ„ ์ž…๋ ฅํ•˜๊ณ  ๋‚˜๋จธ์ง„ ๊ธฐ๋ณธ ์„ค์ •์œผ๋กœ ๋‘๊ณ  ์ƒ์„ฑํ•œ๋‹ค.

 

๋”๋ณด๊ธฐ

์ฐธ๊ณ : API ์—”๋“œํฌ์ธํŠธ ์œ ํ˜•

- ์ง€์—ญ (๋ฆฌ์ „ API): ํ˜„์žฌ ๋ฆฌ์ „์— ๋ฐฐํฌ๋จ

- ์ตœ์ ํ™”๋œ ์—์ง€ (์—ฃ์ง€ ์ตœ์ ํ™” API): CloudFront์— ๋ฐฐํฌ๋จ

- ํ”„๋ผ์ด๋น— (ํ”„๋ผ์ด๋น— API): ํŠน์ • VPC์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ

 

 

2. ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ

 

Lambda์— ์ ‘๊ทผํ•  ๊ฒฝ๋กœ ๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.

 

 

3. ๋ฉ”์„œ๋“œ ์ƒ์„ฑ

 

๋ฉ”์„œ๋“œ ์œ ํ˜•์—๋Š” ANY, GET, POST, PUT, DELETE, HEAD, OPTIONS, PATCH๊ฐ€ ์žˆ๋‹ค.

ํ†ตํ•ฉ ์œ ํ˜•์€ Lambda์™€ ์—ฐ๊ฒฐํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Lambda ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•œ๋‹ค.

Lambda ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „์—์„œ ์—ฐ๊ฒฐํ•  Lambda ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

 

4. API ๋ฐฐํฌ

 

์Šคํ…Œ์ด์ง€๋ฅผ ์ƒ์„ฑํ•˜๊ณ  API ๋ฐฐํฌ ํ›„, ํ˜ธ์ถœ URL์„ ํ™•์ธํ•œ๋‹ค.

 

 

5. ๋ฉ”์„œ๋“œ/ํ†ตํ•ฉ ์š”์ฒญ ์„ค์ •

 

๋ฉ”์„œ๋“œ ์š”์ฒญ > ์š”์ฒญ ๋ณธ๋ฌธ์—์„œ ์ฝ˜ํ…์ธ  ์œ ํ˜•์„ application/json์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  ํ†ตํ•ฉ ์š”์ฒญ > ๋งคํ•‘ ํ…œํ”Œ๋ฆฟ์—์„œ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ฝ˜ํ…์ธ  ์œ ํ˜•์„ application/json์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

(๋งคํ•‘ ํ…œํ”Œ๋ฆฟ์„ ์„ค์ •ํ•˜๋ ค๋ฉด Lambda ํ”„๋ก์‹œ ํ†ตํ•ฉ์„ False๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋”๋ผ..)

 

 

Lambda

 

Lambda์™€ API Gateway๋ฅผ ์—ฐ๊ฒฐํ•  ๊ฒƒ์ด๋‹ค. ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€์—์„œ API Gateway๋ฅผ ์„ ํƒํ•œ๋‹ค.

 

 

์ฝ”๋“œ๋Š” API ๋ฐ˜ํ™˜ ๊ฐ’์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ผ๋‹จ ๋ชจ๋“  event ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค. lambda_function.py๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

 

 

 

 

 

 

ํ…Œ์ŠคํŠธ ํƒญ์—์„œ ์ด๋ฒคํŠธ JSON์„ ์ž…๋ ฅํ•˜๊ณ  ์‹คํ–‰ํ•ด๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค!

 

 

Postman์—์„œ๋„ ํ™•์ธํ•ด๋ณด์ž

 

POST๋ฅผ ์„ ํƒํ•œ ํ›„, API Gateway์—์„œ stage ์ƒ์„ฑ ํ›„ ํ™•์ธํ–ˆ๋˜ URL์„ ๋ถ™์—ฌ ๋„ฃ๋Š”๋‹ค.

์ด๋•Œ ์ฃผ์˜ํ•  ์ ์€ URL ๋’ค์— API ๋ฆฌ์†Œ์Šค ์ƒ์„ฑ ์‹œ ์ž…๋ ฅํ–ˆ๋˜ ๊ฒฝ๋กœ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ !

Status 200์œผ๋กœ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰์ด ๋˜์—ˆ๊ณ , ๋งคํ•‘ ํ…œํ”Œ๋ฆฟ๊ณผ Lambda ํ•จ์ˆ˜์—์„œ ์„ค์ •ํ•œ๋Œ€๋กœ ๋ชจ๋“  event๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.