본문 바로가기
Ruby on Jets

ruby로 서버리스 개발하기 aws lambda - ruby on jets 2. dotenv로 환경변수 설정하기

by 혜리루 2020. 2. 6.

1.서론

 

서버개발을 할때 보통 db config나 외부 서비스의 credential등의 정보는 코드에 노출시키지 않고 환경변수에 저장합니다. 보안상의 이유도 있고 개발 환경에서에서 사용하는 config와 실제 prod환경에서 사용하는 config가 다를때가 많기때문인데요. 직접 각각의 서버에 환경변수를 넣어주는 방법도 있지만 한대의 서버에서 여러개의 프로젝트가 돌아가는 경우에는 각각 설정을 따로 해줘야하기 때문에 좀 귀찮습니다. jets에서는 이런 귀찮음을 해결해주는 dotenv라는 gem을 기본적으로 사용합니다. 오늘은 dotenv를 이용해서 jets 프로젝트의 prod, dev, test 환경들의 환경변수를 설정해보도록 하겠습니다.

 

 

2.dotenv 기본 사용방법

 

사용 방법은 아주 간단합니다. 프로젝트 폴더에 .env 파일을 넣고 (jets 프로젝트를 생성하면 기본적으로 .env 파일들이 생성됩니다) 아래와 같이 config 정보를 넣어주면 됩니다. 

# .env
KEY1 = haeree
KEY2 = dongdong

.env 파일에는 모든 환경에 공통적으로 들어갈 변수들을 넣어줍니다.

 

그리고 .env.development, .env.test, .env.production 에는 각각의 환경에서 사용할 변수들을 넣어줍니다. 환경이름은 원하는 꼭 test, developement가 아니더라도 원하는대로 지을 수 있습니다.

# .env.development

KEY3 = haeree_dev
KEY4 = dongdong_dev
# .env.production

KEY3 = haeree_prod
KEY4 = dongdong_prod

 

3. 환경변수 사용하기

터미널에 아래처럼 커맨드를 입력하면 dotenv로 설정한 환경변수들을 볼 수 있습니다.

jets dotenv:show

# # Env from evaluated dotenv files
# KEY1=haeree
# KEY2=dongdong

 

.env를 이용해 설정한 환경변수는 jets 프로젝트 안에서 다음처럼 사용할 수 있습니다.

key = ENV['KEY1']
puts key
# haeree

 

아래처럼 문장 앞에 export를 붙이면 bash 에서 source 명령어를 사용해 파일을 실행할 수 있습니다.

# .env
export KEY1 = haeree
export KEY2 = dongdong
> source .env
> echo $KEY1
# haeree

 

환경별로 콘솔을 열거나, 서버를 띄우는 것도 가능합니다.

> JETS_ENV=development jets console
> JETS_ENV=development jets server

 

그 이외의 응용 사용방법은 https://github.com/bkeepers/dotenv

 

bkeepers/dotenv

A Ruby gem to load environment variables from `.env`. - bkeepers/dotenv

github.com

에 자세히 나와있습니다.

 

3. 환경변수 배포하기

.env의 정말 좋은 점은 배포 또한 환경별로 쉽게 할 수가 있고 환경변수도 자동으로 lambda에 배포 해준다는 점입니다! lambda 콘솔에서 일일이 작성해줄 필요가 없죠! 후후

한번 테스트해보겠습니다.

 

혹시 aws cli를 설치하지않았다면 설치해야합니다. 

참고 링크 :https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-install.html

 

https://docs.aws.amazon.com/ko_kr/cli/latest/userguide/cli-chap-install.html

 

docs.aws.amazon.com

한번 개발환경으로 배포를 해보겠습니다.

> JETS_ENV=development jets deploy

끝입니다! 너무 간단하네요.

 

 

저같은 경우에는 aws 프로필이 두개 이상이어서

AWS_PROFILE=sandbox JETS_ENV=development jets deploy

이런식으로 aws 프로필을 먼저 특정해주었습니다. 

 

 

 

배포가 완료된 후 lambda 콘솔에 가보면

이렇게 자동으로 환경변수가 세팅이 된 모습을 보실 수 있습니다! 짝짝짝

 

 

출처:

https://github.com/bkeepers/dotenv

https://rubyonjets.com/docs/env-files/

댓글