pile·
프론트엔드·쏘카쏘카·

CLI로 환경변수 관리하기

쏘카 common resource 팀이 여러 프로젝트에 파편화된 환경 변수 관리를 AWS Secrets Manager로 일원화하고, 수동 복사/붙여넣기를 npx CLI로 자동화한 과정을 담았다. 쉘 스크립트의 유지보수 한계를 Commander.js+Prompts 기반 JavaScript CLI로 극복해 팀 전체가 단일 명령어로 .env를 생성하게 됐다.

핵심 포인트
  • 기존 문제: GitHub Secrets는 저장 후 값 재확인 불가, 팀마다 환경 변수 관리 방식 파편화, 프로젝트 수 증가로 설정 비효율 심화
  • AWS Secrets Manager 선택: IAM Role로 서비스별 세부 접근 권한 설정 가능, 조직 내 AWS 기반 친숙
  • 쉘 스크립트 한계: 레포마다 파일 복사 필요, package.json 명령어 추가 필요, 팀원에게 낯선 언어라 유지보수 어려움
  • CLI 전환: create-next-app처럼 npx로 원격 패키지 실행 → 모든 프로젝트에서 단일 명령어로 .env 자동 생성 가능
  • 구현 스택: Commander.js(명령어·옵션 정의) + Prompts(인터랙티브 선택) + npx(원격 실행)
  • AWS 인증 자동 처리: ~/.aws/config SSO 설정 → SSO 인증, MFA 설정 → MFA 인증 자동 처리 후 .env 파일 생성
상세 정리
  • 쉘 스크립트 초기 해결: aws-vault + AWS CLI로 Secrets Manager 값 읽어 jq로 key=value 변환 → .env 생성
  • 쉘 스크립트 문제 1: 레포마다 파일 복사, package.json에 download-env 명령어 추가 필요
  • 쉘 스크립트 문제 2: 팀원에게 낯선 언어라 코드 유지보수 어려움, 사용 방법 문서화 강제
  • npx 전환 동기: 원격 저장소 코드를 npx로 로컬 실행 → 모든 레포에 파일 복사 없이 단일 패키지로 관리
  • Commander.js 활용: `download-secret [secrets-manager]` 명령어 + --profile(비기본 프로파일) + --move <path>(다른 경로에 .env 생성) 옵션
  • Prompts 활용: 기존 .env 존재 시 덮어쓰기/업데이트 인터랙티브 선택 프롬프트
  • npx 실행 흐름: `npx <패키지> download-secret` → SSO/MFA 인증 → Secrets Manager 읽기 → .env 자동 생성
  • 결과: 단 한 줄 명령어로 환경 변수 파일 생성, 모든 프로젝트 레포에 스크립트 복사 불필요
왜 읽나AWS Secrets Manager를 조직 환경 변수 통합 저장소로 도입하고 npx CLI로 .env 자동화까지 연결한 사례 — 쉘 스크립트의 유지보수 한계를 JavaScript CLI로 극복하는 의사결정과 구현을 한 편에서 볼 수 있다.
쏘카
쏘카 블로그
원문은 여기서 이어서 읽을 수 있어요
원문 읽기
읽음 (0)

이 글과 비슷한

  1. 프론트엔드·LINE EngineeringLINE Engineering·

    AI로 웹 엔지니어 없이 LINE 앱 안에서 그룹 영상 통화 서비스 만들기

    LINE Planet 팀의 PM과 Android 엔지니어 두 명이 웹 전문 엔지니어 없이 LINE 앱 내에서 그룹 영상 통화 서비스를 개발한 과정을 다룬다. LIFF(LINE Front-end Framework)와 LINE Planet SDK를 활용해 React/Vite 기반 웹 앱을 구성했고, Firebase Cloud Functions로 별도 서버 인프라 없이 구현을 완료했다.

    #react#webrtc#firebase+2