프로그래밍/프로그래밍 이것저것
[Lambda]로컬 os.environ의 변수를 사용할 수 있도록 serverless.yml 설정
오엔 ohen
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)
설정한 값은 이렇게 쓰면 된다.