aws credentials 여러개

  • 여러개의 자격 증명 프로필을 가질 수 있다
  • 이 경우에 aws cli, aws sam cli 등 커맨드라인을 사용할 때
  • 프로필을 지정해 줘야한다

프로필 추가

terminal
1
2
# aws configure --profile {profile name}
aws configure --profile newprofile

AWS Access Key ID [None]: new
AWS Secret Access Key [None]: newkey
Default region name [None]:
Default output format [None]:

  • aws configure --profile {profile name} 명령을 치면 위 처럼 나오는데
  • 여기에 키아이디와 키를 입력한다
%USERPROFILE%/.aws/credentials
1
2
3
4
5
6
7
[default]
aws_access_key_id = xxxxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

[newprofile]
aws_access_key_id = new
aws_secret_access_key = newkey
  • %USERPROFILE%/.aws/credentials 파일을 열어보면 위처럼 [default] 프로필 아래에
  • 새로운 프로필이 등록되었을 것이다

프로필 스위치

  • 나는 두 가지 방법을 써봤다

방법 1; AWS_PROFILE 환경 변수 설정

  • 환경 변수 AWS_PROFILE을 원하는 프로필명으로 설정한다
  • set AWS_PROFILE {profilename}
  • setx AWS_PROFILE {profilename}
  • 이렇게 2가지를 사용할 수 있다
  • set은 해당 터미널에서만 적용된다. 해당 터미널이 닫히면 같이 날라간다
  • setx는 모든 터미널에서 적용된다
  • setx의 경우 모든 터미널을 닫았다가 열어야 적용된다. vscode 전부 닫았다가 켜야 적용된다
1
2
3
4
5
# bash
echo $AWS_PROFILE

# cmd (windows)
echo %AWS_PROFILE%
  • 환경 변수 적용 확인을 꼭하자
  • 방법 1은 가장 자주 쓰는 프로필을 지정할 때 좋을 것 같다

방법 2; 옵션 사용

  • 환경변수 세팅 말고,
  • aws cli를 사용할 때 --profile옵션을 줄 수 있다
  • aws cli를 사용하다 보면 옵션을 주지 않아도 프로필이 한 개가 아니면 명령을 실행하다가도 어떤 프로필을 사용할지 물어본다
  • 근데 실수로 다른 계정에 배포를 할 수 있으니까.. --profile 옵션을 쓰는 게 좋을 것 같다
  • sam cli의 경우 deploy 할 때 sam deploy --profile newprofile 이런 식으로 할 수 있겠다

방법 3 (번외?); config file 사용 (aws-sdk)

  • cli에 적용되는 것은 아닌데, nodejs app에서 aws sdk 자격 증명하는데 json 파일을 쓸 수 있다
  • 로컬에서 개발하고 클라우드 환경으로 올릴 때, 그 환경마다 aws configure 하는 게 귀찮다
config.json
1
2
3
4
5
{
"accessKeyId": "xxxxxxxxxxxxxxxxxxxx",
"secretAccessKey": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"region": "ap-northeast-2"
}
example.js
1
2
3
import AWS from 'aws-sdk';
import path from 'path';
AWS.config.loadFromPath(path.join(__dirname, './config.json'));
  • json 파일로 자격 증명할 수 있다

참고