AWS CLI를 사용하면 강력한 기능을 손쉽게 제어할 수 있지만, 다수의 계정이나 리전을 관리해야 하는 상황에서는 설정이 번거로울 수 있습니다. 이를 해결하기 위해 AWS CLI는 프로파일(Profile) 기능을 제공합니다. 이번 글에서는 AWS CLI의 프로파일 설정과 활용법을 실습과 함께 자세히 알아보고, 효율적인 사용을 위한 팁을 공유하겠습니다.
1. AWS CLI 프로파일이란?
AWS CLI 프로파일은 여러 계정 또는 설정을 별도로 저장하고 관리할 수 있는 기능입니다. 기본 프로파일 (default
) 외에도 사용자 지정 프로파일을 생성하여 다양한 환경(예: 개발, 테스트, 프로덕션)이나 계정을 체계적으로 관리할 수 있습니다.
프로파일을 사용해야 하는 상황
- 여러 AWS 계정을 사용하는 경우
- 서로 다른 리전을 자주 변경해야 하는 경우
- 다양한 인증 정보를 관리해야 하는 경우
2. AWS CLI 기본 프로파일 설정
AWS CLI를 설치한 후 가장 먼저 해야 할 일은 기본 프로파일 설정입니다. 아래 명령어를 실행하면 기본 프로파일(default
)을 설정할 수 있습니다.
aws configure
설정 단계 예시
AWS Access Key ID [None]: <Access Key ID>
AWS Secret Access Key [None]: <Secret Access Key>
Default region name [None]: ap-northeast-2
Default output format [None]: json
설명
- Access Key ID / Secret Access Key: AWS IAM에서 발급받은 인증 정보
- Default Region: AWS 리전. 예:
ap-northeast-2
(서울 리전) - Default Output Format: CLI 출력 형식.
json
,text
,table
중 선택
3. 사용자 지정 프로파일 설정
여러 계정을 사용하거나 특정 프로젝트를 구분해 관리하려면 사용자 지정 프로파일을 설정해야 합니다.
aws configure --profile <프로파일 이름>
예시: my-profile 프로파일 생성
aws configure --profile my-profile
AWS Access Key ID [None]: <다른 Access Key ID>
AWS Secret Access Key [None]: <다른 Secret Access Key>
Default region name [None]: us-west-1
Default output format [None]: json

이렇게 설정하면 my-profile
이라는 이름으로 새로운 프로파일이 생성됩니다.
4. 프로파일 설정 파일 구조
AWS CLI 프로파일 설정은 ~/.aws/credentials
파일과 ~/.aws/config
파일에 저장됩니다.
1) credential 파일
AWS Access Key ID와 Secret Access Key를 저장합니다.

2) config 파일
리전, 출력 형식 등 기타 설정을 저장합니다.

5. 프로파일 사용 실습
현재 기본 프로파일(default
) 에는 S3 관련 권한이 없습니다. 사용자 지정 프로파일(my-profile
)에는 S3 관련 권한이 있습니다. S3에 대한 권한 차이가 있는 두 프로파일을 통해 실습을 진행해보도록 하겠습니다.
1) 기본 프로파일 사용
default
프로파일은 아무런 지정 없이 사용할 수 있습니다.
aws s3 ls

2) 사용자 지정 프로파일 사용
특정 프로파일을 사용하려면 --profile
옵션을 추가합니다.
aws s3 ls --profile my-profile

3) 환경 변수로 프로파일 사용
매번 --profile
옵션을 입력하는 것이 번거롭다면 환경 변수로 설정하세요.
(환경 변수로 설정한 AWS_PROFILE 값을 지우려면 unset AWS_PROFILE
명령어를 입력하면 됩니다.)
export AWS_PROFILE=my-profile
aws s3 ls

6. 프로파일 활용 고급 설정
AWS CLI의 프로파일은 단순한 인증 정보 저장뿐 아니라 다양한 고급 설정을 지원합니다. 이 설정을 활용하면 복잡한 계정 구조나 보안 요구 사항에 더욱 유연하게 대응할 수 있습니다.
1) Assume Role 설정
Assume Role은 하나의 AWS 계정에서 다른 계정으로 권한을 전환하는 기능입니다. 이 기능은 여러 계정을 사용하는 조직에서 보안을 강화하거나 권한을 분리하는 데 유용합니다
설정 방법: ~/.aws/config
파일에 역할 전환 설정을 추가합니다.
[profile admin-role]
role_arn = arn:aws:iam::123456789012:role/Ec2ReadonlyRole
source_profile = my-profile
region = ap-northeast-2

- role_arn: 전환할 IAM 역할의 ARN
- source_profile: 역할 전환시 사용할 기본 프로파일
- region: 기본 리전 설정
실습
- 기존에 S3 권한만 가지고 있는
my-profile
프로파일로 EC2 인스턴스 리스트 출력
→ EC2 관련 권한이 없으므로 권한 부족 오류 발생

- EC2 권한이 있는
ec2-readonly-role
프로파일로 EC2 인스턴스 리스트 출력
→ 성공

참고사항
- Assume Role은 보안상 민감한 작업을 보호하고, 특정 계정에 최소 권한 원칙을 적용하는 데 효과적입니다.
- 세션 제한: Assume Role 세션은 기본적으로 최대 1시간(3600초) 동안 유지됩니다. 더 긴 세션이 필요하면 역할 설정에서 최대 세션 기간을 증가시킬 수 있습니다.
- 로그 관리: Assume Role은 AWS CloudTrail에 기록되므로, 역할 전환 작업을 추적할 수 있습니다.
2) MFA(Multi-Factor Authentication) 연동
MFA를 사용하는 계정은 임시 인증 토큰을 사용해야 CLI 명령어를 실행할 수 있습니다.
설정 방법:
- 프로파일을 설정한 후 MFA 디바이스 ARN과 MFA 코드를 사용해 임시 세션 토큰을 발급합니다.
aws sts get-session-token --profile my-profile --serial-number <MFA 디바이스 ARN> --token-code <MFA 코드>

- 반환된 JSON 결과에서 Access Key, Secret Key, Session Token을 가져와 새로운 프로파일에 추가합니다. (
~/.aws/credentials
)
[my-mfa-profile]
aws_access_key_id = <Access Key ID>
aws_secret_access_key = <Secret Access Key>
aws_session_token = <Session Token>

실습
새롭게 설정한 프로파일(my-mfa-profile
)을 사용하여 S3 버킷 목록을 조회합니다.
aws s3 ls --profile my-mfa-profile

참고사항
- MFA를 통해 얻은 임시 세션 토큰은 만료 시간이 있습니다(기본 12시간).
Expiration
필드를 확인하여 만료 전에 새로 갱신해야 합니다.
AWS CLI의 프로파일 기능을 잘 활용하면 여러 계정과 환경을 손쉽게 관리할 수 있습니다. 프로파일을 설정하고 사용하는 방법은 간단하지만, 이를 통해 업무의 효율성을 크게 높일 수 있습니다. 특히 다중 계정을 사용하는 경우, 프로파일 설정은 필수적입니다.
NDS는 많은 클라우드 경험을 통해 서비스 도입에 도움을 드릴 수 있습니다. 관련하여 문의 사항이나 기술 지원이 필요하신 경우 NDS Sales팀으로 연락주시길 바랍니다.
[참고링크]
[+] https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html