Skip to main content

awsgetsts

AWS STS 임시 자격증명(session token)을 MFA/TOTP 와 함께 자동으로 발급·갱신하여 ~/.aws/config[profile sts-<name>] 섹션으로 저장하는 CLI 유틸리티.

Small CLI that issues AWS STS session tokens (with MFA/TOTP) and merges them into ~/.aws/config as [profile sts-<name>] sections.

특징 / Features

  • MFA 디바이스 ARN + TOTP shared secret 으로 sts:GetSessionToken 호출
  • 기존 토큰 유효기간 확인 후 만료 임박 시에만 갱신 (--force 로 강제)
  • 다중 프로필 지원, --profile 반복 지정 가능
  • 대화형 마법사(--setup)로 최초 설정 파일 생성
  • 종합 진단(--check): 설정 파일 / AWS 프로필 / 토큰 유효성 점검
  • 한/영 자동 전환 (터미널 UTF-8 지원 여부 기준, AWSGETSTS_LANG 로 강제)
  • 컬러 상태 표시 (TTY 자동 감지, FORCE_COLOR / NO_COLOR 존중)

요구사항 / Requirements

  • Python 3.9+
  • 의존성 / dependencies: boto3, pyotp, python-dateutil, cplogger, termcolor

설치 / install:

pip install boto3 pyotp python-dateutil cplogger termcolor

빠른 시작 / Quick start

# 최초 설정 (대화형 마법사) / first-time setup
./awsgetsts.py --setup

# 상태 진단 / diagnose
./awsgetsts.py --check

# 모든 프로필 갱신 / refresh all profiles
./awsgetsts.py

# 특정 프로필만 / one profile
./awsgetsts.py -p dev

# 강제 재발급 / force refresh
./awsgetsts.py --force

# 파일에 쓰지 않고 미리보기 / dry-run
./awsgetsts.py --dry-run

# 특정 프로필만 수정 / edit one profile
./awsgetsts.py --edit -p dev

# 특정 프로필만 삭제 / delete one profile
./awsgetsts.py --clean -p dev

CLI 옵션 / Options

옵션 설명
-p, --profile NAME 대상 프로필 (반복 가능). 생략 시 설정된 모든 프로필.
-c, --config PATH 사용자 설정 파일 경로
-d, --duration SEC 세션 지속시간(초). 기본값은 sts 모듈의 DEFAULT_DURATION
--force 기존 토큰이 유효해도 재발급
--dry-run ~/.aws/config 에 쓰지 않고 표준출력에 INI 출력
--cli-pager 각 sts 섹션에 cli_pager = 추가 (프롬프트 스킵)
--no-cli-pager cli_pager = 추가 안 함 (프롬프트 스킵)
--setup 대화형 설정 마법사 실행
--edit 선택한 프로필만 대화형으로 수정 (-p 필수, 필드별 Enter로 기존값 유지)
--list 사용자 설정 파일의 프로필 이름 목록
--list-aws ~/.aws/config 의 프로필 이름 목록
--check 설정 / AWS 프로필 / 토큰 유효성 진단 (STS 미호출)
--clean 도구가 만든 파일 삭제 (사용자 JSON + awsUserConfig.json 프로필과 매칭되는 sts-* 섹션만). -p 지정 시 해당 프로필만 부분 삭제 (파일 유지). --dry-run 병용 시 미리보기
-v, --verbose DEBUG 로그까지 출력
-q, --quiet 경고/오류만 출력
-V, --version 버전 표시

설정 파일 / Config file

기본 위치 / default location:

~/.config/getAwsSTS/awsUserConfig.json

탐색 순서 / lookup order:

  1. --config 로 명시한 경로
  2. AWSGETSTS_CONFIG 환경변수
  3. ~/.config/getAwsSTS/awsUserConfig.json (정규 기본값)
  4. (legacy) 엔트리 스크립트 옆 aws_user_config.json
  5. (legacy) 현재 디렉토리 ./aws_user_config.json

포맷 / format:

{
    "dev": {
        "account_id": "123456789012",
        "profile": "dev",
        "mfa_serial": "arn:aws:iam::123456789012:mfa/your-username",
        "totp_secret": "BASE32SECRET"
    }
}
  • account_id: 12자리 AWS 계정 ID
  • profile: ~/.aws/config 의 base 프로필 이름 (자격증명 조회 소스)
  • mfa_serial: MFA 디바이스 ARN
  • totp_secret: MFA 등록 시 발급되는 base32 shared secret

파일은 wizard 가 자동으로 chmod 600 처리.

동작 흐름 / How it works

  1. ~/.aws/config 에 base profile (profile <name>) 존재 확인
  2. 기존 profile sts-<name> 섹션의 만료시각 확인 → 유효하면 스킵
  3. sts:GetSessionToken 호출 (TOTP 코드로 MFA 인증)
  4. 발급된 자격증명을 [profile sts-<name>] 로 병합 저장
  5. 옵션에 따라 cli_pager = 추가

환경변수 / Environment variables

변수 용도
AWSGETSTS_CONFIG 사용자 설정 파일 경로 override
AWSGETSTS_LANG ko / en — 출력 언어 강제 (기본: 터미널 인코딩)
FORCE_COLOR 비-TTY 에서도 컬러 강제
NO_COLOR 컬러 비활성화

--check 출력 예 / Sample --check output

[awsgetsts --check] 프로필 진단
────────────────────────────────────────────────────────────
Files
  user_config      : FOUND    ~/.config/getAwsSTS/awsUserConfig.json
  aws_config       : FOUND    ~/.aws/config
  aws_credentials  : FOUND    ~/.aws/credentials
────────────────────────────────────────────────────────────
[dev] user_config=OK | aws_profile=OK | token=VALID (until 2026-09-02 03:15:00 KST)
[prod] user_config=OK | aws_profile=OK | token=EXPIRED (2026-09-01 08:00:00 KST)
────────────────────────────────────────────────────────────
[awsgetsts --check] Summary
  total                  : 2
  valid                  : 1
  expired                : 1
  no_token               : 0
  missing_user_cfg       : 0
  missing_aws_profile    : 0

종료 코드 / Exit codes

코드 의미
0 정상 종료
1 STS 호출 실패 등 발급 실패 존재
2 잘못된 인자 / 설정 로드 실패 / 알 수 없는 프로필
130 사용자 취소 (Ctrl+C / EOF)

보안 / Security

  • awsUserConfig.json 은 TOTP shared secret 을 포함 → 반드시 chmod 600, 유출 금지
  • 노출된 secret 은 즉시 MFA 재등록으로 폐기
  • .aws/credentials 의 Access Key 도 동일하게 취급

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

awsgetsts-0.1.1.tar.gz (25.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

awsgetsts-0.1.1-py3-none-any.whl (26.1 kB view details)

Uploaded Python 3

File details

Details for the file awsgetsts-0.1.1.tar.gz.

File metadata

  • Download URL: awsgetsts-0.1.1.tar.gz
  • Upload date:
  • Size: 25.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.8

File hashes

Hashes for awsgetsts-0.1.1.tar.gz
Algorithm Hash digest
SHA256 023a5bc8300f6ca14032158846ccf6fba616b9be55106a2c44df598023ba48d8
MD5 cc496c3549c287e36b2e9c8dacb433e4
BLAKE2b-256 4d8c882f7906a391cb1f0fa77cf15d790216395698ecf7807987958b2d48b667

See more details on using hashes here.

File details

Details for the file awsgetsts-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: awsgetsts-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 26.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.8

File hashes

Hashes for awsgetsts-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d58250d107ec364c757926362055bb3ff8bf050c62ac08fe5c1e38b0d3455be
MD5 a6e7c543c7972d82ace8b273e19719a8
BLAKE2b-256 0e2dd506d98772076518c1938d6c7cdc235af31745a5a14eb4d32c1ae88e91ea

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page