AWS Console(GUI)은 직관적이고 처음 사용하는 데에는 편리하지만, 실무에서 점점 더 많은 AWS 리소스를 다루다 보면 반복 작업, 대규모 리소스 관리, 자동화의 한계를 느끼게 됩니다. 이럴 때 강력한 대안이 바로 AWS CLI(Command Line Interface)입니다.
CLI는 단순한 도구를 넘어 스크립트 기반 자동화, 버전 관리 및 이력 추적, 대량 작업의 일괄 처리로 클라우드 운영과 개발을 더욱 유연하고 효율적으로 만들어 줍니다.
이번 포스팅에서는 AWS CLI를 로컬 환경에 설치하고, 실무에 바로 활용할 수 있도록 설정하는 방법을 알아봅니다. GUI 사용에 익숙했던 분들도, CLI의 장점을 느껴보는 계기가 될 수 있습니다.
AWS CLI를 사용하려면 먼저 `awscli` 패키지를 설치해야 합니다. macOS 사용자라면 Homebrew를 이용해 간편하게 설치할 수 있습니다.
만약 Homebrew가 설치되어 있지 않다면, 공식 링크를 참고하여 먼저 Homebrew를 설치해 주셔야 합니다. (https://brew.sh/)
brew install awscli
`awscli` 패키지 설치가 완료되면, 이제 터미널에서 `aws` 명령어를 사용할 수 있게 됩니다.
이제 SSO(Single Sign-On) 로그인을 설정하기 위해 아래 명령어를 입력합니다.
aws configure sso
명령어 입력 후 아래 사항에 대해 로그인에 대한 정보를 작성합니다.
| SSO session name | - SSO 세션을 식별하기 위한 이름 - 여러 개의 SSO 세션을 사용할 때 각각을 구분하는 데 사용 |
| SSO start URL | 사용자가 인증을 시작할 때 접속하는 AWS SSO URL |
| SSO region | SSO 포털이 위치한 AWS 리전 |
| SSO registration scopes | 클라이언트가 SSO에서 액세스할 수 있는 범위(scopes) |
| CLI default output format | AWS CLI 명령어 결과의 출력 형식 |
| Profile name | SSO 설정에 사용할 AWS CLI 프로파일 이름 |
➜ ~ aws configure sso
SSO session name (Recommended): test-poc
SSO start URL [None]: https://xxx-sso.awsapps.com/start#/
SSO region [None]: ap-northeast-2
SSO registration scopes [sso:account:access]: //[엔터 입력]
Attempting to automatically open the SSO authorization page in your default browser.
If the browser does not open or you wish to use a different device to authorize this request, open the following URL:
https://oidc.ap-northeast-2.amazonaws.com/authorize?response_type=code&client_id=gApFFzdC0y&redirect_uri=http%3A%2F%2F127.0.0.1%3A52194%2Foauth%2Fcallback&state=09c2244d-b887-4f1db74&code_challenge_method=S256&scopes=sso%3Aaccount%3Aaccess&code_challenge=LdGrq-WTPYQVFOdApB0iAJCQwgLnkF1SpyCerDciIZA
There are 5 AWS accounts available to you.
infra, infra-aws@xxx.com (************)
> test-poc, poc-aws@xxx.com (************) //계정 선택
xxxdev, it@xxx.com (************)
prod-xxx, prod-xxx-aws@xxx.com (************)
...
➜ ~ aws sts get-caller-identity --profile sso-test-poc --output json
{
"UserId": "AROA3JAARUIS5LF6YF7ZR:kyungchan.kim@xxx.com",
"Account": "************",
"Arn": "arn:aws:sts::************:assumed-role/AWSReservedSSO_AdministratorAccess_4a45c7a24a16cce8/kyungchan.kim@xxx.com"
}
SSO로 접속해야 하는 AWS 계정이 여러 개인 경우, 각 계정마다 별도의 profile이 필요하므로, 앞서 진행한 설정 절차를 계정별로 반복해야 합니다.
하지만 계정이 많을수록 이러한 반복 작업은 번거롭기 때문에, `~/.aws/config` 파일을 직접 수정하여 프로파일을 보다 간편하게 등록할 수 있습니다.
`aws configure sso` 명령어를 통해 프로파일을 생성하면, 해당 설정은 자동으로 `config` 파일에 저장되며, 각 프로파일과 연결된 `sso-session` 정보도 함께 기록됩니다.
📁 설정 파일 경로: `/Users/[사용자명]/.aws/config`
[profile sso-test-poc]
sso_session = test-poc
sso_account_id = ************
sso_role_name = AdministratorAccess
output = text
[sso-session test-poc]
sso_start_url = https://xxx-sso.awsapps.com/start#/
sso_region = ap-northeast-2
sso_registration_scopes = sso:account:access
추가로 다른 프로파일을 등록하고자 할 경우, 기존 `config` 파일에 작성된 프로파일 설정을 복사해서 붙여넣은 뒤, `profile 이름`, `sso_session 이름`, `sso_account_id` 정도만 수정하면 새로운 프로파일을 손쉽게 추가할 수 있습니다.
모든 프로파일 설정이 완료되면, 이제 AWS CLI를 통해 로그인할 수 있습니다.
로그인 시에는 `--profile` 옵션을 사용하여 접속하고자 하는 프로파일을 명시하면 됩니다.
# login
> aws sso login --profile sso-test-poc
// 에러 발생
➜ ~ aws ec2 describe-vpcs
You must specify a region. You can also configure your region by running "aws configure".
SSO 로그인을 완료한 후 `aws` 명령어를 입력해보면, region 설정이 누락되어 에러가 발생하는 경우가 있습니다. 이는 AWS CLI에서 사용할 기본 리전(default region)이 지정되지 않았기 때문입니다.
이 문제는 `~/.aws/config` 파일에 region 항목을 추가하거나, 명령어 실행 시 `--region` 옵션을 명시함으로써 해결할 수 있습니다.
하지만 계정마다 적용해야 할 리전이나 프로파일이 다를 수 있기 때문에, 매번 수동으로 설정하는 것은 번거롭습니다. 그래서 여러 AWS SSO 프로파일을 보다 편리하게 전환할 수 있도록 `alias`를 설정하여 사용할 수 있습니다.
이 방식은 계정별로 필요한 프로파일과 리전을 한 번에 적용할 수 있어, 유용하게 활용됩니다.
// alias 명령어를 추가해 명령어를 짧게 줄여서 실행할 수 있게 함
➜ ~ vi ~/.zshrc
... 아래 내용 추가 ...
alias sso-test-poc='export AWS_PROFILE=sso-test-poc; export AWS_REGION=ap-northeast-2; aws configure list'
alias sso-dev-aws='export AWS_PROFILE=sso-dev-aws; export AWS_REGION=ap-northeast-2; aws configure list'
alias sso-infra='export AWS_PROFILE=sso-infra; export AWS_REGION=ap-northeast-2; aws configure list'
alias sso-prod-xxx='export AWS_PROFILE=sso-prod-xxx; export AWS_REGION=ap-northeast-2; aws configure list'
// ~/.zshrc의 변경 내용을 현재 쉘에 적용
➜ ~ source ~/.zshrc
// alias 실행: AWS_PROFILE과 AWS_REGION을 설정하고 aws configure list 명령이 자동 실행
➜ ~ sso-test-poc
Name Value Type Location
---- ----- ---- --------
profile sso-test-poc env ['AWS_PROFILE', 'AWS_DEFAULT_PROFILE']
access_key ****************73OO sso
secret_key ****************MEtM sso
region ap-northeast-2 env ['AWS_REGION', 'AWS_DEFAULT_REGION']
alias 적용 후 vpc list 확인 명령어를 입력해보면 정상적으로 목록을 불러오는 것을 볼 수 있습니다.
➜ ~ aws ec2 describe-vpcs --output json
{
"Vpcs": [
{
"OwnerId": "************",
"InstanceTenancy": "default",
"CidrBlockAssociationSet": [
{
"AssociationId": "vpc-cidr-assoc-0284379efccdd41c9",
"CidrBlock": "10.253.0.0/16",
"CidrBlockState": {
"State": "associated"
}
}
],
"IsDefault": false,
"Tags": [
{
"Key": "Name",
"Value": "eks-test-vpc"
}
],
"BlockPublicAccessStates": {
"InternetGatewayBlockMode": "off"
},
"VpcId": "vpc-0439bda04001dbec4",
"State": "available",
"CidrBlock": "10.253.0.0/16",
"DhcpOptionsId": "dopt-00b5b823faced42ad"
},
...
아래 명령어를 통해 현재 접속한 계정에서 로그아웃 할 수 있습니다.
# logout ( 다른 profile로 변경 시 사용하시면 됩니다 )
> aws sso logout
'AWS' 카테고리의 다른 글
| [AWS] Secret Manager에 SSH Key 등록하기 (2) | 2025.07.27 |
|---|---|
| [AWS] IDC/AWS Site-to-Site VPN 구성하기 (with BGP, Active-Active) (2) (0) | 2025.03.10 |
| [AWS] IDC/AWS Site-to-Site VPN 구성하기 (with BGP, Active-Active) (1) (0) | 2025.03.05 |
| [AWS][EC2] 클라우드 컴퓨팅으로 게임하기 (2) | 2024.02.22 |
| [AWS][VPC] Traffic Mirroring으로 패킷 확인하기 (0) | 2024.01.25 |