2022. 6. 25. 18:26ㆍ카테고리 없음
준비
- windows
- centOS
- anaconda
- dynamoDB (설명을 위해 환경 구성일 뿐 본 포스트에서 필수 아님)
- boto3 (설명을 위해 환경 구성일뿐 본 포스트에서 필수 아님)
아나콘다로 AWS-DynamoDB 연결을 할 일이 있어서
conda install -c conda-forge boto3
위 명령어로 boto3를 설치했다.
설치 한 다음 boto3로 DynamoDB 연결을 시도했는데

Unable to locate credentials
자격증명 에러가 났다.
boto3을 통해 AWS 리소스에 접근할 때 여러 접근 방법이 있다.
자세히 얘기하기엔 이 포스트 주제에서 멀어지니 이쯤 얘기하고 환경 변수를 이용해서 접근하는 방법을 시도했다.

고급 시스템 설정 보기(구:시스템 속성) -> 환경 변수 -> 시스템 변수에서 새로 만들기
- 변수 명 : aws_access_key_id
- 변수 값 : AWS 액세스 키 값
- 변수 명 : aws_secret_access_key
- 변수 값 : AWS 비밀 키 값
환경 변수 입력 후 프로그램 실행 시 권한 에러가 난다.
뭔가 잘못됐다 싶어 환경변수 리스트를 확인해 보니
#anaconda package 정보 가져오기
import os
for environ in os.environ:
print(environ)

왼쪽은 conda가 참고하는 환경 변수고 오른쪽은 windows 환경 변수이다
자세히 보면 내가 추가한 환경 변수가 없다!!
이 방법으로는 conda에서 환경변수 추가를 할 수 없다(이 글을 보는 분들도 나와 같은 상황으로 검색해서 이 글을 봤을 거라 생각 든다)
실제 콘다에 환경 변수를 추가하려면
1. 윈도우 환경
anaconda Prompt를 실행하고 적용할 가상 환경으로 접속 한 다음

cd %CONDA_PREFIX%
명령어를 입력하면 가상 환경 환경변수 위치로 간다.
mkdir .\etc\conda\activate.d
mkdir .\etc\conda\deactivate.d
type NUL > .\etc\conda\activate.d\env_vars.bat
type NUL > .\etc\conda\deactivate.d\env_vars.bat
위의 명령어를 차례대로 입력하면 etc부터 시작하는 폴더들 및 bat파일들이 생성된다. (base를 기본 환경으로 사용 중이라면 이미 etc폴더는 존재하니 그 하의 폴더들 및 파일들만 보면 된다)
activate.d폴더의 env_vars.bat 파일을 메모장으로 연 다음
set AWS_ACCESS_KEY_ID=엑세스키 입력
set AWS_SECRET_ACCESS_KEY=비밀키 입력
AWS에서 사용 중인 액세스 키 및 비밀키를 입력란에 각각 입력하고 메모장을 저장 한 다음
deactivate.d폴더의 env_vars.bat파일을 메모장으로 연 다음
set AWS_ACCESS_KEY_ID=
set AWS_SECRET_ACCESS_KEY=
위 내용을 입력 후 저장한다.
각각의 의미는 아나콘다에서 내가 설정한 가상 환경에 activate 하거나 deactivate 할 때 환경변수를 초기화하고 해제시키는 내용이다.
이런 식으로 아나콘다에서 환경 변수를 추가/해제할 수 있다.
2. 리눅스 환경
전체적인 흐름은 윈도우와 같다.
차이점은 해당 명령어가 약간 차이일 뿐.. root 계정으로 접속 후 anaconda 가상 환경 중 원하는 가상 환경으로 접속한 후

위와 같이 echo $CONDA_PREFIX를 입력하면 가상 환경의 환경변수 주소를 알수 있다.
cd $CONDA_PREFIX
명령어를 입력하면 가상환경 환경변수 위치로 간다.
mkdir -p ./etc/conda/activate.d
mkdir -p ./etc/conda/deactivate.d
touch ./etc/conda/activate.d/env_vars.sh
touch ./etc/conda/deactivate.d/env_vars.sh
위의 명령어를 차례대로 입력하면 etc부터 시작하는 폴더들 및 bat파일들이 생성된다. (base를 기본 환경으로 사용 중이라면 이미 etc폴더는 존재하니 그 하의 폴더들 및 파일들만 보면 된다)
activate.d폴더의 env_vars.bat 파일을 vi로 연 다음
#!/bin/sh
export AWS_ACCESS_KEY_ID=엑세스키 입력
export AWS_SECRET_ACCESS_KEY=비밀키 입력
AWS에서 사용 중인 액세스 키 및 비밀키를 입력란에 각각 입력하고 vi을 저장 한 다음
deactivate.d폴더의 env_vars.bat파일을 vi로 연 다음
#!/bin/sh
unset AWS_ACCESS_KEY_ID
unset export AWS_SECRET_ACCESS_KEY
위 내용을 입력 후 저장한다.
각각의 의미는 아나콘다에서 내가 설정한 가상 환경에 activate 하거나 deactivate 할 때 환경변수를 초기화하고 해제시키는 내용이다.
이런 식으로 아나콘다에서 환경 변수를 추가/해제할 수 있다.
관련되어 참고한 사이트 : https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#windows