배경
AWS를 공부하고 처음 프로젝트에 투입되면서 단일 Account가 아닌 여러 개의 Account를 관리하게 되었다. 그런 과정에서 AWS CLI config 관련 내용을 정리할 필요가 있어 기록한다.
기본적인 config
AWS CLI를 사용하기 위해 최초에 명령어를 사용하게 되는데, 이 때 입력되는 정보가 config 파일에 저장된다.
aws configure해당 명령어 실행 시, 아래의 정보들을 입력하게 된다.
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
region
output
정보를 입력하면 아래의 경로에 저장되며 2가지 파일이 생성된다.
~/.aws/credentials
~/.aws/configcredentials의 경우에는 key 값들이 들어가며, config의 경우에는 region과 output이 들어가게 된다.
# credentials
[default]
aws_access_key_id = [ACCESS_KEY]
aws_secret_access_key = [SECRET_KEY]# config
[default]
region = [REGION]
output = [OUTPUT]이후에 AWS 관련 명령어를 입력하면 정상적으로 동작하는 것을 확인할 수 있다.
단일 User 환경이 아니라면
여러 개의 Account 또는 특정 Role에 접근해서 CLI를 사용해야 한다면 특정 옵션이 추가되어야 한다. profile 설정이다. 해당 옵션을 통해 여러 account 및 role에 접근해서 CLI를 동작시킬 수 있다. 기본적인 골격은 다음과 같다.
aws [RESOURCE_TYPE] [ACTION] --profile [YOUR_PROFILE]그럼 해당 profile 설정은 어디에서 하는 것일까? 바로 config에서 설정한다.
1. 단일 Account의 다른 Role 등록이 필요할 때
작업을 하다 보면 특정 Account에서 나에게 권한이 부족하여 다른 Role로 Assume하여 동작을 수행해야 할 때가 있다. 이 때 config 설정은 다음과 같다.
# config
[profile test]
role_arn = [TEST_ROLE_ARN]
source_profile = default
role_session_name = [SESSION_NAME]
region = [REGION]
output = [OUTPUT]
[default]
region = [REGION]
output = [OUTPUT]이렇게 설정 시, test라는 role로 assume해서 이용할 수 있다.
aws [RESOURCE_TYPE] [ACTION] --profile test 2. 타 Account Profile 등록이 필요할 때
단일 Account가 아닌 여러 Account 관리가 필요할 때가 있다. 이럴 때는 아래와 같이 config뿐만 아니라 credentials도 수정되어야 한다.
# credentials
[other_test] # 이 때, 해당 이름을 작성하는 곳에는 profile을 기입하지 않는다.
aws_access_key_id = [OTHER_ACCESS_KEY]
aws_secret_access_key = [OTHER_SECRET_KEY]
[default]
aws_access_key_id = [ACCESS_KEY]
aws_secret_access_key = [SECRET_KEY]# config
[profile other_test_role]
role_arn = [OTHER_TEST_ROLE_ARN]
source_profile = other_test # credentials에서 정의한 이름을 기입한다.
role_session_name = [SESSION_NAME]
region = [REGION]
output = [OUTPUT]
[profile test_role]
role_arn = [TEST_ROLE_ARN]
source_profile = default
role_session_name = [SESSION_NAME]
region = [REGION]
output = [OUTPUT]
[default]
region = [REGION]
output = [OUTPUT]