AWS CLI로 multiple profile 사용하기
by Yangeok
작업환경
- windows 10
cli 설치
aws-cli를 링크를 참고해 사용해 설치합니다. 한글설명서로 아주 자세히 나와있습니다. 참고로 저는 msi파일로 설치했습니다.
cli가 2버전이 베타로 나왔다고 하네요. 여기에서 확인하실 수 있습니다.
cli 및 credential 파일 설정
aws-cli를 사용하는 이유
iam profile을 설정해줘야 cli를 사용할 수 있습니다. aws-cli를 쓰는 이유는 다음과 같습니다. aws 계정은 모르는데 accesskeyId
, secretAccessKey
만 안다면 웹상에서 콘솔에 접속이 불가능합니다. 그래서 어떤 권한을 가진 profile로 aws에 로그인하기 위해 사용합니다. 액세스키를 관리하는데는 정말정말 만전을 기해야 합니다. aws측에서도 가능하면 루트키를 만들지 말라고 당부하는 것도 실수로 github에 액세스키를 공개하는 순간 지옥을 맛 볼 수도 있기 때문입니다.
혹은 웹 콘솔에 직접 들어가는 과정이 복잡하기도 하고, 스크립트로 만들어서 어떤 액션에 대한 확장성을 가질 수도 있기 때문이죠.
profile 설정
.pem 파일을 사용하는 방법
profile을 따로 설정하지 않더라도 iam profile을 만든 후에만 다운 받을 수 있는 .pem
파일을 인자로 주면 아래와 같이 사용할 수는 있지만 .pem
파일을 유실할 위험이 있으므로 아래와 같이 합니다.
aws s3 ls -K /path/to/key.pem
여기서 -K
옵션은 private key를 의미합니다.
대화형 profile 설정
aws-cli에 accesskeyId
, secretAccessKey
를 설정합니다. 아래와 같이 대화형으로 입력할 수 있습니다.
$ aws configure
AWS Access Key ID : EXAMPLE_ACCESS_KEY_ID
AWS Secret Access Key : EXAMPLE_SECRET_ACCESS_KEY
Default region name : EXAMPLE_REGION_NAME
Default output format : EXAMPLE_OUTPUT_FORMAT
4번째 질문인 Default output format
에 들어갈 수 있는 옵션은 여기에서 확인하실 수 있습니다. 기본값은 text
이므로 아무것도 입력해주지 않아도 무방합니다.
profile 파일 위치
~/.aws/
디렉토리에서 credential
, config
에 저장됩니다. 파일을 열어보면 아래와 같이 나올겁니다. credential
에는 awsAccessKeyId
, secretAccessKey
가 저장되며,
# credential
[default]
aws_access_key_id = EXAMPLE_ACCESS_KEY_ID
aws_secret_access_key = EXAMPLE_SECRET_ACCESS_KEY
config
에는 region
, output
이 저장됩니다.
# config
[default]
region = EXAMPLE_REGION_NAME
output = EXAMPLE_OUTPUT_FORMAT
자, 이젠 .pem
파일 없이도 aws api를 이용할 수 있게 됐어요. 아래와 같이 입력하면 버킷 목록이 나올겁니다.
aws s3 ls
profile 여러개 사용하기
하지만 다른 profile로 업로드를 해야하는 경우가 생길 있을겁니다. 먼저 credential
, config
파일을 열어서 아래와 같이 직접 수정해줍니다.
# credential
[default]
aws_access_key_id = EXAMPLE_ACCESS_KEY_ID
aws_secret_access_key = EXAMPLE_SECRET_ACCESS_KEY
[base]
aws_access_key_id = EXAMPLE_ACCESS_KEY_ID
aws_secret_access_key = EXAMPLE_SECRET_ACCESS_KEY
[yangeok]
aws_access_key_id = YANGEOK_ACCESS_KEY_ID
aws_secret_access_key = YANGEOK_SECRET_ACCESS_KEY
# config
[default]
region = EXAMPLE_REGION_NAME
output = EXAMPLE_OUTPUT_FORMAT
[base]
region = EXAMPLE_REGION_NAME
output = EXAMPLE_OUTPUT_FORMAT
[yangeok]
region = YANGEOK_REGION_NAME
output = YANGEOK_OUTPUT_FORMAT
위와 같이 base, yangeok이란 profile을 입력했습니다. cli 명령어를 입력할때 --profile
옵션을 붙여주면 profile들을 돌려가면서 사용하는게 가능합니다.
이제 다음과 같이 입력해봅니다. yangeok이 가진 버킷 목록이 나올겁니다.
aws s3 ls --profile yangeok