서버 환경은 대부분 dev, stg, prd로 구성되어 있습니다.
여기에 local 환경까지 포함하여 총 local, dev, stg, prd로 볼 수 있겠네요.
그럼 아래 코드를 한번 보시죠.
custom:
env: ${file(./env/${opt:stage,'local'}.json)}
serverless-offline:
httpPort: 3000
noPrependStageInUrl: true
useChildProcesses: true
lambdaPort: 3002
provider:
name: aws
runtime: nodejs14.x
stage: dev
region: ap-northeast-2
environment:
MariaDB_HOST: ${self:custom.env.MariaDB_HOST}
MariaDB_PORT: ${self:custom.env.MariaDB_PORT}
MariaDB_USER: ${self:custom.env.MariaDB_USER}
MariaDB_PASSWORD: ${self:custom.env.MariaDB_PASSWORD}
MariaDB_NAME: ${self:custom.env.MariaDB_NAME}
여기서 env는 custom 섹션 내에 정의된 환경 변수입니다.
이 환경 변수는 JSON 파일을 읽어들여 설정값을 정의합니다.
${opt:stage,'local'} 구문은 ${} 안에 있는 값이 없는 경우 local 값을 기본으로 사용한다는 것을 의미합니다.
즉, opt:stage라는 변수를 이용하여 stage 값을 입력받을 수 있으며, 입력값이 없는 경우 local로 설정됩니다.
실행은 다음처럼 하시면 됩니다.
serverless deploy -s dev
이렇게 하면 dev 환경으로 deploy 하겠다는 뜻이 됩니다. dev대신 stg, prd를 넣고 json file도 작성하시면 되겠죠?
그렇다면 local환경으로는 어떻게 실행하느냐.
serverless offline
이렇게만 실행해도 됩니다. 왜냐하면 env의 default값으로 local.json이 되도록 했으니 말이죠. 하지만 필요에 의해 stage 옵션을 주고 싶으면
serverless offline --stage local
위와 같이 --stage 옵션으로 지정해 줄 수 있습니다.