노트

AWS CLI 프로필

AWS CLI Named Profiles

인프라#aws · 연결된 개념 4개

쉽게 말하면

AWS 프로필은 여러 집 열쇠에 '본가', '회사' 같은 이름표를 붙여 한 열쇠고리에 걸어 두는 거예요. 명령마다 이름표만 고르면 한 컴퓨터에서 여러 계정과 역할을 헷갈리지 않고 오갈 수 있어요.

비유의 한계 이름표를 골랐다고 꼭 그 열쇠가 쓰이진 않아요. 환경변수 AWS_ACCESS_KEY_ID가 잡혀 있으면 프로필보다 우선하니 get-caller-identity로 확인하고, 오래 가는 키 대신 SSO 임시 자격 증명을 써요.

AWS 프로필은 AWS CLI(Command Line Interface)·SDK(Software Development Kit)가 쓸 자격 증명(credentials)과 설정 묶음에 붙인 이름이다. 한 기기에서 여러 계정·역할을 바꿔 가며 쓸 수 있게 해 준다.

파일 두 개

# ~/.aws/credentials  — 비밀값
[default]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
 
[prod]
aws_access_key_id = AKIA...
aws_secret_access_key = ...
# ~/.aws/config  — 리전·출력 형식·역할
[default]
region = ap-northeast-2
 
[profile prod]
region = ap-northeast-2
output = json

credentials 파일은 [이름], config 파일은 [profile 이름]으로 적는다(default만 예외).

고르는 방법

aws s3 ls --profile prod          # 명령마다
export AWS_PROFILE=prod           # 셸 세션 전체
aws sts get-caller-identity       # 지금 누구로 인증됐는지 확인

지정하지 않으면 default를 쓴다. 권한 오류가 나면 먼저 get-caller-identity로 의도한 계정·역할인지 본다. 환경변수 AWS_ACCESS_KEY_ID가 잡혀 있으면 프로필보다 우선하므로 그것도 확인한다(환경변수 스코프와 source).

오래 가는 키 대신 SSO

장기 액세스 키를 파일에 두는 대신 IAM(Identity and Access Management) Identity Center(SSO, Single Sign-On) 프로필을 쓰면 짧게 만료되는 임시 자격 증명을 받는다.

aws configure sso
aws sso login --profile prod

비밀값을 다루는 방식이라 인증과 인가와, 앱이 시작할 때 비밀 저장소에서 설정을 받아오는 구조는 스프링 설정 외부화와 프로파일와 이어진다. AWS가 어떤 층까지 관리해 주는지는 IaaS·PaaS·SaaS를 본다.

출처: AWS CLI 설정 파일 형식 · 프로필 사용 · IAM Identity Center 설정

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • SSH 키: Ed25519와 RSA

    SSH 키를 만들 때 고르는 서명 알고리즘이다. RSA는 큰 수의 소인수분해가 어렵다는 데 기댄 오래된 방식이고, Ed25519는 Curve25519 타원곡선을 쓰는 EdDSA(Edwards-curve Digital Signature Algorithm) 구현으로 더 짧은 키로 비슷하거나 높은 보안 수준을 낸다. 지금은 Ed25519가 기본 권장이다.

  • 버전 스큐와 정적 자산 오프로드

    버전 스큐(Version Skew)는 새 버전을 배포한 뒤에도 브라우저에 떠 있는 이전 빌드의 클라이언트가 새 서버와 통신하면서 생기는 불일치다. 대표 증상은 이전 HTML이 참조하던 JS 청크를 늦게 불러오려다 404가 나는 ChunkLoadError다.

  • 저장소 역할 분담 (DB·캐시·큐·검색)

    서버 애플리케이션 옆에는 거의 늘 관계형 DB, 인메모리 캐시, 메시지 브로커(message broker), 검색 엔진이 붙는다. 하나로 다 하지 않는 이유는 데이터의 성격(영구성·속도·전달·검색)마다 잘하는 도구가 다르기 때문이다.

  • JDBC와 JdbcTemplate

    JDBC(Java Database Connectivity)는 자바가 여러 DB와 통신하기 위한 표준 API이고, Hibernate·MyBatis·스프링 JDBC 모두 그 위에 있다. JdbcTemplate은 스프링이 JDBC의 반복 작업(연결 열고 닫기, 예외 변환, 결과 순회)을 대신해 주는 클래스다.

  • Terraform

    Terraform은 클라우드와 온프렘 리소스를 사람이 읽는 설정 파일로 만들고, 바꾸고, 버전 관리하는 IaC(Infrastructure as Code) 도구다. 콘솔에서 클릭해 만들던 서버·스토리지·DNS 레코드를 코드로 적어 두면 같은 파일로 같은 인프라를 다시 만들 수 있고, 설정 파일을 git 같은 버전 관리 시스템에 올려 변경 이력을 남길 수 있다.

보기 옵션