Conda 환경에서 환경 변수 설정하기
AWS의 Access Key와 Secret Key 등의 환경 변수를 Conda 환경에 설정하는 방법에 대해 아카이브를 진행할 것이다. 환경 변수를 사용하면 중요한 키 값들을 코드에서 분리하여 보안을 유지하고, 여러 프로그램 간에 키 값을 공유하는 등의 작업을 용이하게 할 수 있다.
Conda 환경이란?
먼저, Conda 환경에 대해 간단히 설명하자면, Conda는 오픈 소스 패키지 관리 시스템이며, Python 등 여러 언어의 소프트웨어 패키지를 설치하고 관리하는 데 사용된다. Conda 환경은 독립적인 공간으로, 각 환경마다 다른 패키지의 버전이나 설정을 가질 수 있기에, 필자는 각 프로젝트마다 새로운 환경에서 프로그래밍을 진행한다.
환경 변수 설정하기
- 먼저, 설정하려는 Conda 환경에 들어간다. 예를 들어, myenv라는 환경에 들어가려면 터미널에서 다음 명령어를 실행한다.
1
$ conda activate myenv
- 이제 해당 Conda 환경의 위치를 확인한다.
conda env list
명령어를 실행하면 현재 설치된 모든 Conda 환경의 목록과 각 환경의 위치를 볼 수 있다. - 해당 위치로 이동하여
etc/conda/activate.d
디렉토리를 찾는다. 이 디렉토리가 없는 경우 생성한다. activate.d
디렉토리 안에 환경 변수를 설정할 새 스크립트를 만든다. 예를 들어,env_vars.sh
라는 새 스크립트를 만들어서 환경 변수를 설정한다.1
$ nano env_vars.sh
- 이 스크립트에 다음과 같은 코드를 추가한다.
1
2
3#!/bin/sh export AWS_ACCESS_KEY_ID="your_access_key_id" export AWS_SECRET_ACCESS_KEY="your_secret_access_key"
여기서 your_access_key_id와 your_secret_access_key는 실제 AWS 액세스 키 ID와 시크릿 액세스 키로 바꿔야 한다.
- 변경사항을 저장하고 나가려면
Ctrl + X
를 누르고,Y
를 누른 후Enter
를 눌러 저장하고 나간다.
이제 해당 환경을 활성화할 때마다 환경 변수가 자동으로 설정된다. 이렇게 하면, AWS 액세스 키와 시크릿 키를 안전하게 관리하고, 필요한 프로그램에서 쉽게 접근할 수 있게 된다.
파이썬에서 환경 변수 사용하기
파이썬에서 등록한 환경 변수를 사용하는 것은 매우 간단하다. os
모듈의 environ
객체를 사용하여 환경 변수에 접근할 수 있다. 이 객체는 환경 변수의 이름을 키로, 해당 환경 변수의 값을 값으로 가지는 사전과 같은 객체이다.
예를 들어, 앞서 설정한 AWS_ACCESS_KEY_ID
와 AWS_SECRET_ACCESS_KEY
환경 변수를 파이썬에서 사용하는 코드는 다음과 같다.
1 |
|
위 코드에서 os.environ['AWS_ACCESS_KEY_ID']
와 os.environ['AWS_SECRET_ACCESS_KEY']
는 각각 AWS_ACCESS_KEY_ID와 AWS_SECRET_ACCESS_KEY 환경 변수의 값을 반환한다.
환경 변수가 설정되어 있지 않을 때 기본값을 사용하도록 하려면 os.environ.get
메서드를 사용할 수 있다. 이 메서드는 첫 번째 인자로 환경 변수의 이름을, 두 번째 인자로 해당 환경 변수가 설정되어 있지 않을 때 사용할 기본값을 받는다. 예를 들어, AWS_ACCESS_KEY_ID
환경 변수가 설정되어 있지 않을 때 기본값으로 'default_access_key_id'
를 사용하도록 하려면 다음과 같이 코드를 작성할 수 있다.
1 |
|
이상으로, Conda 환경에서 환경 변수를 설정하고, 파이썬에서 이 환경 변수를 사용하는 방법에 대해 알아보았다. 환경 변수를 이용하면, 코드에서 중요한 키 값을 분리하고, 여러 프로그램에서 키 값을 공유하는 등의 작업을 용이하게 할 수 있다. 이 외에도 환경 변수는 여러가지 용도로 사용될 수 있으니, 활용해보길 적극 추천한다.
부록. 환경 변수의 다양한 용도
- 설정 값 관리: 환경 변수는 애플리케이션의 설정 값을 관리하는 데 널리 사용된다. 예를 들어, 데이터베이스 연결 문자열, API 키, AWS 액세스 키, 비밀번호 등과 같은 민감한 정보는 코드에 직접 포함시키기보다는 환경 변수에 저장하는 것이 안전하다. 또한, 이렇게 하면 개발, 테스트, 프로덕션 등 다른 환경에서 다른 설정 값을 쉽게 사용할 수 있다.
- 환경 구별: 환경 변수를 사용하여 실행 중인 환경을 구별할 수 있다. 예를 들어, NODE_ENV라는 환경 변수를 사용하여 Node.js 애플리케이션의 실행 환경이 개발 환경인지 프로덕션 환경인지 구별할 수 있다.
- 파일 경로 지정: 환경 변수는 파일 시스템의 경로를 지정하는 데도 사용된다. 예를 들어, PATH 환경 변수는 운영 체제가 실행 파일을 찾을 위치를 지정하는 데 사용된다.
- 시스템 행동 변경: 운영 체제나 어떤 소프트웨어의 행동을 변경하기 위해 사용된다. 예를 들어, LANG 환경 변수는 소프트웨어의 로케일을 설정하는 데 사용된다.
- 시스템 리소스 제어: 환경 변수를 사용하여 시스템 리소스를 제어할 수도 있다. 예를 들어, Java 애플리케이션에서 JAVA_HOME은 JDK의 위치를 가리키고, Xmx와 Xms는 JVM의 힙 메모리 크기를 제어하는 데 사용된다.