효율적으로 여러 AWS CLI 프로필을 구성하고 관리하는 방법

AWS CLI 명명된 프로필을 사용하여 여러 AWS 계정 및 환경을 효율적으로 관리하는 방법을 알아보세요. 이 가이드는 다양한 AWS 자격 증명 및 설정 세트를 구성하고, 전환하고, 보호하는 방법에 대한 단계별 지침을 제공합니다. 프로필 관리를 마스터하여 생산성과 보안을 향상시키고 클라우드 워크플로를 최적화하십시오.

여러 AWS CLI 프로필을 효율적으로 구성하고 관리하는 방법

AWS CLI 프로필은 계정, 역할, 리전 및 출력 형식을 분리하여 유지합니다. 동일한 노트북에서 개발, 스테이징 및 프로덕션 환경을 관리하는 경우 프로필은 잘못된 AWS 계정에 대해 명령을 실행하는 것을 방지하는 데 도움이 됩니다.

목표는 간단합니다. 의도한 계정을 명시적으로 만들고, 가능한 경우 장기 자격 증명을 줄이고, 파괴적인 명령을 실행하기 전에 빠른 확인을 수행하는 것입니다.

AWS CLI 구성 파일 설정

AWS CLI는 프로필 설정을 두 개의 공유 파일에 저장합니다.

  • ~/.aws/credentials: 액세스 키 및 세션 자격 증명용
  • ~/.aws/config: 리전, 출력 형식, 역할 설정 및 기타 CLI 옵션용

Windows에서는 동일한 파일이 %USERPROFILE%\.aws\ 아래에 있습니다.

기본 프로필

--profile 없이 aws configure를 실행하면 [default]에 대한 설정이 기록됩니다. CLI는 다른 프로필을 지정하지 않고 관련 환경 변수 재정의가 없는 경우 이 프로필을 사용합니다.

# ~/.aws/credentials의 기본 프로필 예시
[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY
# ~/.aws/config의 기본 프로필 예시
[default]
region = us-east-1
output = json

명명된 프로필 생성

aws configure --profile을 사용하여 명명된 프로필을 생성할 수 있습니다.

aws configure --profile dev
aws configure --profile prod

파일을 직접 편집할 수도 있습니다. ~/.aws/credentials에서는 일반 프로필 이름을 사용하십시오.

~/.aws/credentials:

[default]
aws_access_key_id = YOUR_DEFAULT_ACCESS_KEY
aws_secret_access_key = YOUR_DEFAULT_SECRET_KEY

[prod]
aws_access_key_id = YOUR_PROD_ACCESS_KEY
aws_secret_access_key = YOUR_PROD_SECRET_KEY

[dev]
aws_access_key_id = YOUR_DEV_ACCESS_KEY
aws_secret_access_key = YOUR_DEV_SECRET_KEY

~/.aws/config에서 명명된 프로필은 profile 접두사를 사용합니다.

~/.aws/config:

[default]
region = us-east-1
output = json

[profile prod]
region = us-west-2
output = text

[profile dev]
region = eu-central-1
output = json

중요한 세부 사항:

  • ~/.aws/config에서 프로필을 정의할 때는 프로필 이름 앞에 profile 을 접두사로 붙여야 합니다(예: [profile prod]). 이는 프로필 이름만 사용하는 ~/.aws/credentials(예: [prod])과 다릅니다.
  • [default] 프로필은 명명된 프로필의 상위 프로필 역할을 자동으로 수행하지 않습니다. prod에 리전이 필요한 경우 [profile prod] 아래에 region을 설정하거나 다른 방법으로 제공하십시오.

프로필 간 전환

명명된 프로필이 설정되면 AWS CLI 명령에 --profile 옵션을 지정하여 사용할 수 있습니다.

예시: 프로덕션 계정의 S3 버킷을 나열하려면:

aws s3 ls --profile prod

예시: 개발 계정의 EC2 인스턴스를 설명하려면:

aws ec2 describe-instances --profile dev

위험한 명령을 실행하기 전에 자신이 누구인지 확인하십시오.

aws sts get-caller-identity --profile prod

그러면 CLI가 사용 중인 자격 증명의 계정 ID와 ARN이 반환됩니다.

환경에 대한 기본 프로필 설정

--profile을 계속 입력하는 것은 번거로울 수 있습니다. 현재 셸 세션에 대해 AWS_PROFILE을 설정할 수 있습니다.

Linux/macOS:

export AWS_PROFILE=prod

# 이제 명령은 기본적으로 'prod' 프로필을 사용합니다.
aws s3 ls
aws ec2 describe-instances

설정을 해제하려면:

unset AWS_PROFILE

Windows 명령 프롬프트:

set AWS_PROFILE=prod

# 이제 명령은 기본적으로 'prod' 프로필을 사용합니다.
aws s3 ls

설정을 해제하려면:

set AWS_PROFILE=

Windows PowerShell:

$env:AWS_PROFILE = "prod"

# 이제 명령은 기본적으로 'prod' 프로필을 사용합니다.
aws s3 ls

설정을 해제하려면:

Remove-Item Env:\AWS_PROFILE

명령줄 옵션은 환경 변수보다 우선 순위가 높습니다. AWS_PROFILE=dev가 설정되어 있지만 aws s3 ls --profile prod를 실행하면 명령은 prod를 사용합니다.

여러 AWS 계정을 프로필로 관리

프로필은 다음에 유용합니다.

  • 개발 vs. 프로덕션: 안전을 위해 개발 및 프로덕션 환경을 분리합니다.
  • 다른 팀/프로젝트: 다른 팀 또는 프로젝트에 대한 리소스 및 권한을 격리합니다.
  • 교차 계정 액세스: 여러 계정에서 리소스를 관리해야 하는 관리자 또는 개발자인 경우.

모범 사례: IAM 역할 사용

모든 계정에 대해 장기 액세스 키를 저장하지 마십시오. 일반적인 패턴은 하나의 소스 프로필 또는 SSO 프로필을 유지한 다음 대상 계정으로 역할을 전환하는 것입니다.

역할 전환의 경우 다음과 같이 프로필을 구성하십시오.

# ~/.aws/config

[profile dev-role]
role_arn = arn:aws:iam::ACCOUNT_ID:role/ROLE_NAME
source_profile = default
region = us-east-1
output = json

--profile dev-role로 명령을 실행하면 CLI는 default 프로필을 사용하여 AWS STS를 호출하고 역할을 전환한 후 명령에 임시 자격 증명을 사용합니다.

조직에서 IAM Identity Center를 사용하는 경우 프로필은 액세스 키 대신 SSO 설정을 사용할 수 있습니다.

[profile sandbox]
sso_start_url = https://example.awsapps.com/start
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = DeveloperAccess
region = us-east-1
output = json

그런 다음 다음으로 인증합니다.

aws sso login --profile sandbox

고급 구성 옵션

자격 증명 및 리전 외에도 프로필은 다른 AWS CLI 설정을 지정할 수 있습니다.

  • output: json, text, table
  • region: 예: us-east-1
  • s3.max_concurrent_requests: S3 작업에 대한 병렬 요청 수입니다.
  • s3.max_queue_size: S3 멀티파트 업로드를 위한 큐 크기입니다.
  • cli_binary_format: AWS CLI v2에서 바이너리 매개변수가 해석되는 방식입니다.

예시: 특정 프로필에 대한 S3 설정 구성

들여쓰기 오류를 방지하려면 aws configure set을 사용하십시오.

aws configure set s3.max_concurrent_requests 20 --profile s3-optimized
aws configure set s3.max_queue_size 10000 --profile s3-optimized

그러면 ~/.aws/config의 프로필 아래에 S3 설정이 기록됩니다.

# ~/.aws/config

[profile s3-optimized]
region = us-east-1
output = json
s3 =
    max_concurrent_requests = 20
    max_queue_size = 10000

팁 및 모범 사례

  • 설명적인 프로필 이름 사용: 프로필 이름을 명확하게 만들고 해당 프로필이 나타내는 계정 또는 환경을 나타내도록 하십시오(예: prod-admin, dev-web, sandbox-research).
  • 자격 증명 보호: ~/.aws/credentials 파일을 버전 관리에 커밋하지 마십시오. 가능하면 교차 계정 액세스에 IAM 역할을 사용하여 장기 액세스 키 저장을 피하십시오.
  • 액세스 키 정기적으로 검토: 액세스 키를 사용해야 하는 경우 정기적으로 교체하고 이전 키를 비활성화하십시오.
  • 환경 변수 활용: 임시 전환 또는 특정 계정을 대상으로 해야 하는 CI/CD 파이프라인에 AWS_PROFILE을 사용하십시오.
  • 자격 증명 환경 변수 주의: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN은 프로필의 자격 증명을 재정의할 수 있습니다. CLI가 잘못된 ID를 사용하는 것 같으면 지우십시오.
  • 블래스트 반경별로 프로필 이름 지정: prod-readonly, prod-adminsandbox-dev와 같은 이름은 main 또는 test와 같은 모호한 이름보다 안전합니다.

실용적인 요점

자주 사용하는 모든 계정 및 역할에 대해 프로필을 사용하고 프로덕션 리소스를 변경하기 전에 aws sts get-caller-identity를 확인하십시오. 장기 액세스 키보다 SSO 또는 역할 기반 프로필을 선호하고 명령이 잘못된 계정을 대상으로 하는 것 같으면 환경 변수를 염두에 두십시오.