[AWS] API Gateway + Lambda + RDS(MySQL) ์ฐ๊ฒฐ (1)
์ ์ ์ธก์์ 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๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.