AWS Lambda serverless 환경 변수 설정하기

Developer Ant·2023년 2월 20일
0

서버 환경은 대부분 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 옵션으로 지정해 줄 수 있습니다.

profile
develop for me

0개의 댓글