작업환경

  • 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