
Serverless Framework에서는 opt와 self를 통해 변수를 참조 가능
provider:
stage: ${opt:stage, 'dev'} # 기본값 dev로 설정
# stage가 prod로 설정됨
serverless deploy --stage prod
# stage가 기본값 dev로 설정됨
serverless deploy
provider:
stage: ${opt:stage, 'dev'} # 먼저 정의
environment:
STAGE: ${self:provider.stage} # 위에서 정의한 stage 값 참조
project/
├── serverless.yml
├── package.json
├── requirements.txt
│
├── src/
│ ├── handlers/
│ ├── services/
│ ├── clients/
│ └── utils/
│
├── tests/
│
└── config/
├── dev.yml
├── prod.yml
└── test.yml
# serverless.yml
provider:
name: aws
runtime: python3.9
environment: ${file(./config/${opt:stage}.yml)}
# config/dev.yml
STAGE: dev
API_URL: http://dev-api.example.com
KAKAO_API_KEY: ${ssm:/dev/kakao/api-key}
# config/prod.yml
STAGE: prod
API_URL: http://api.example.com
KAKAO_API_KEY: ${ssm:/prod/kakao/api-key}
Resource: "arn:aws:ssm:${self:provider.region}:*:parameter/${self:provider.stage}/*"
# stage: dev, region: ap-northeast-2인 경우
arn:aws:ssm:ap-northeast-2:*:parameter/dev/*
# 접근 가능한 파라미터 예시
/dev/kakao/api-key
/dev/naver/client-id
/dev/google/api-key
이 설정을 통해 Lambda 함수는 지정된 stage에 해당하는 Parameter Store의 값들을 읽기 가능