Serverless Framework Setup for AWS Lambda
Last updated
Last updated
serverless.yml ํ์ผ ์์ฑ๋ฒ ๋ฐ deploy commands๋ฅผ ์ ๋ฆฌํด์
serverless.yml ํ์ผ์ project์ root๊ฒฝ๋ก์ ์์ฑํ๋ค
ํด๋น ํ์ผ์ ๊ธฐ์ค์ผ๋ก Serverless Framework๋ ๋ฐฐํฌํ๋ค
Project ์ด๋ฆ
name
Cloud service provider์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ฌํ๋ค
์ฌ๊ธฐ์๋ AWS Lambda ์ ๋ฐฐํฌํ๊ธฐ ์ํ yaml file ์ด๋ฏ๋ก aws ๊ฐ ๊ธฐ์ฌ๋์ด ์๋ค
runtime
์ฌ์ฉํ๋ runtime version์ ๊ธฐ์ฌํ๋ค
stage
๋ฐฐํฌํ๋ ค๋ stage๋ฅผ ๊ธฐ์ฌํ๋ค
${opt: stage, 'dev'}
local ํ๊ฒฝ์์ sls ๋ช ๋ น์ด๋ฅผ ํ์ฉํ์ฌ ๋ฐฐํฌ ์ stage option์ ์ฃผ๋ฉด ํด๋น stage๋ก, ๋ฐ๋ก ๋ช ๋ น์ด๋ฅผ ์ฃผ์ง ์์ผ๋ฉด default๋ก dev๊ฐ ์ ์ฉ๋๋ค
ex) sls deploy -s prod
stage ์ค์ ์ ์ํ option
-s
--stage
region
๋ฐฐํฌํ๋ lambda์ region ์ ๋ณด๋ฅผ ๊ธฐ์ฌํ๋ค
versionFunctions
versioning์ ์ํ๋ฉด true๋ก ์ค์ ํ๋ค
memorySize
memory size๋ฅผ ๊ธฐ์ฌํ๋ค
default๋ก๋ 1024๊ฐ ์ค์ ๋์ด ์๋ค
deploymentBucket
๋ฐฐํฌ๋๋ฉด ์ ์ฅ๋ AWS S3 bucket์ ์ด๋ฆ์ ์ง์ ํ๋ค
๋ฐ๋ก ์ค์ ํ์ง ์์ผ๋ฉด ์๋ก์ด bucket์ด ์์ฑ๋๋ค
deploymentPrefix
๋ฐฐํฌ๋๋ bucket ๋ด์ prefix๋ฅผ ์ง์ ํ์ฌ ์ ์ฅํ ์ ์๋ค
default๋ก๋ serverless๋ก ์ค์ ๋์ด ์๋ค
include
deployment package์ ํฌํจ์ํฌ directory๋ฅผ ๊ธฐ์ฌํ๋ค
exclude
deployment package์ ํฌํจ์ํค์ง ์์ directory๋ฅผ ๊ธฐ์ฌํ๋ค
individually
function๋ณ๋ก ๊ฐ๊ฐ packaging ํ๊ธธ ์ํ๋ฉด ture๋ก ์ค์ ํ๋ค
default๊ฐ์ false์ด๋ค
pythonRequirements
serverless-python-requirements plugin
์ฌ์ฉ์ ์ํด ํ์ํ ๋ถ๋ถ์ด๋ค
dockerizePip
docker packaging ์ ์ฌ์ฉํ๋ ค๋ฉด true ๋ก ์ค์ ํ๋ค
default๋ false ์ด๋ค
layer
์์ฑ๋ dependency๋ฅผ Lambda Layer๋ก ์์ฑํ๋ ค๋ฉด true๋ก ์ค์ ํ๋ค
default๋ false ์ด๋ค
function_name
ํจ์๋ช (serverless framework์์ ์ฌ์ฉ๋ ํจ์๋ช ์ด๋ค. Lambda ํจ์๋ช ์๋)
name
AWS Lambda์ ์์ฑ๋๋ function name์ด๋ค
stage์ ๋ฐ๋ผ ๋ค๋ฅธ ํจ์๋ฅผ ์์ฑํ๊ธฐ ์ํด
${opt: stage, 'dev'}
๋ก ์ค์ ํ๋ค
์์ provider >stage ์ ๊ฐ์ ์ค์ ์ด ๋์ด์๋ค
handler
ํด๋น ํจ์์ ํ์ผ๊ณผ ํจ์๋ช ์ ๊ธฐ์ฌํ๋ค
ex) handler.do_optimize
ํด๋น Lambda function์ handler.py ๋ด์ do_optimize() ํจ์์์ ์คํ๋๋ค
layers
ํด๋น ํจ์์ ๋ฑ๋กํ layer๋ฅผ ๊ธฐ์ฌํ๋ค
์ฌ๊ธฐ์๋ serverless-python-requirements plugin ์ ํ์ฉํ์ฌ ์์ฑํ layer๋ฅผ lambda layer๋ก ๋ฑ๋กํ๋ฏ๋ก - { Ref: PythonRequirementsLambdaLayer }
๋ก ์ค์ ํ์๋ค
npm์ผ๋ก ์ค์นํ serverless plugin ์ค ์ฌ์ฉํ plugin์ ๊ธฐ์ฌํ๋ค
ํด๋น ํ๋ก์ ํธ์ root ์ external plugin์ด ์ค์น๋์ด ์์ด์ผ๋ง ์ ์ ์๋ํ๋ค
vpc
Lambda ํจ์์ VPC์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ฌํ๋ค
securityGroupIds
ํด๋น lambda ํจ์์ Security group ID๋ฅผ ๊ธฐ์ฌํ๋ค
subnetIds
ํด๋น lambda ํจ์์ subnet ID๋ฅผ ๊ธฐ์ฌํ๋ค
+
VPC ์ ๋ณด๋ฅผ serverless.yml
์ ๊ธฐ์ฌํ์ง ์์ผ๋ฉด lambda ํจ์๋ง ๋ฐฐํฌ ํ๋๊ฒ์ด ์๋ ์ ์ฒด ๋ฐฐํฌ ์, VPC ์ ๋ณด๊ฐ ์ด๊ธฐํ ๋๊ณ AWS Console์์ ์ฌ ์ค์ ํด์ผํ๋ค!
๊ผญ Serverless.yml์ VPC ์ ๋ณด๋ฅผ ๊ธฐ์ฌํ์!
๋ช ๋ น์ด ์ค ์ผ๋ถ๋ง ์ด๊ณณ์ ์ ๋ฆฌ ํ๋ฏ๋ก ์ ์ฒด command ๋ฅผ ํ์ธํ๋ ค๋ฉด ์๋์ ์ฐธ๊ณ ์๋ฃ๋ฅผ ์ด์ฉํ๋ฉด ๋๋ค
--stage
or -s
๋ฐฐํฌํ๋ ค๋ stage๋ฅผ ์ค์ ํ ์ ์๋ค
ex)
sls deploy -s prod
--function
or -f
ํน์ ํจ์๋ง ๋ฐฐํฌํ ์ ์๋ค
์์ ์์์์ Lambda Layer๋ฅผ ํจ๊ป ์์ฑํด์ ๋ฐฐํฌํ๋ฏ๋ก ์ต์ด ๋ฐฐํฌ ํ ์ฌ๋ฐฐํฌ ์, code ๋ง ๋ณ๊ฒฝ ๋์์ผ๋ฉด layer๋ฅผ ๋ค์ ์์ฑํ ํ์ ์์ผ๋ฏ๋ก ํด๋น option์ ํ์ฉํ๋ฉด ๋๋ค
ex)
sls deploy -f do_optimize
+