[Lambda]로컬 os.environ의 변수를 사용할 수 있도록 serverless.yml 설정

2020. 2. 10. 15:52프로그래밍/프로그래밍 이것저것

Problem

direnv를 사용할 때 .envrc 파일에 환경변수를 추가하면
로컬에서는 os.environ이 출력되고 파이썬 파일에서도 os.environ.get으로 변수를 사용할 수 있지만,

람다로 배포(sls deploy) 해서 사용해야 할 때는 os.environ를 프린트 해봐도 변수가 추가되어 있지 않고,
그래서 당연히 os.environ.get으로 변수값을 사용하지 못한다.


Solution

serverless.yml

environment:
  NS_HOSTNAME: ${env:NS_HOSTNAME}
  NS_KEYNAME: ${env:NS_KEYNAME}
  NS_CPCODE: ${env:NS_CPCODE}
  NS_KEY: ${env:NS_KEY}

다음과 같이 serverless.yml 파일에 environment를 설정하면, 람다 배포 후 람다의 os.environ에 변수가 추가된 것을 볼 수 있다.

file.py

NS_HOSTNAME = os.environ.get('NS_HOSTNAME', None)
NS_KEYNAME = os.environ.get('NS_KEYNAME', None)
NS_CPCODE = os.environ.get('NS_CPCODE', None)
NS_KEY = os.environ.get('NS_KEY', None)

설정한 값은 이렇게 쓰면 된다.