본문 바로가기
AWS

[AWS] AWS CLI 설정하기 (SSO Login 방식)

by chan10 2025. 7. 13.

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