AWS Systems Manager Parameter Store(이하 Parameter Store)는 애플리케이션 설정값, 환경 변수, 암호화가 필요한 문자열 등을 안전하게 저장하고 조회할 수 있는 관리형 서비스입니다. 코드 배포 없이 설정값을 변경하거나, 환경(개발·스테이징·프로덕션)별로 설정을 분리하여 관리할 때 유용합니다. AWS Systems Manager(SSM)의 기능 중 하나로 제공되며, 별도 에이전트 설치 없이 SDK나 AWS CLI로 바로 사용할 수 있습니다.
SSM(Systems Manager): EC2 인스턴스 및 AWS 리소스를 중앙에서 운영·관리하기 위한 AWS 서비스 모음.
Parameter Store는 세 가지 데이터 타입을 지원합니다.
일반 평문 문자열입니다. 암호화 없이 저장되며, 데이터베이스 호스트 주소, 리전 이름, 기능 플래그(on/off) 같은 비민감 설정값에 사용합니다.
AWS KMS를 사용하여 값을 암호화하여 저장합니다. 비밀번호, API Key처럼 노출되면 안 되는 값에 사용합니다. 조회 시 자동으로 복호화되며, IAM 정책으로 접근을 제어합니다.
쉼표로 구분된 문자열 목록입니다. 허용된 IP 목록이나 여러 값을 배열로 관리할 때 사용합니다.
Parameter Types
/myapp/db/host = "rds.example.com" (String)
/myapp/db/password = "s3cr3t!" (SecureString, KMS 암호화)
/myapp/allowed-ips = "10.0.0.1,10.0.0.2" (StringList)
Parameter Store는 슬래시(/)를 구분자로 사용하는 계층적 이름을 지원합니다. 이 구조를 활용하면 환경별·서비스별로 파라미터를 체계적으로 관리할 수 있습니다.
/
+-- prod/
| +-- myapp/
| +-- db/host
| +-- db/password
| +-- api-key
|
+-- dev/
+-- myapp/
+-- db/host
+-- db/password
+-- api-key
경로 기반으로 일괄 조회(GetParametersByPath)가 가능하므로, /prod/myapp/ 하위의 모든 파라미터를 한 번의 API 호출로 가져올 수 있습니다.
파라미터를 수정할 때마다 버전이 자동으로 증가합니다. 특정 버전을 명시하여 조회하거나 이전 버전으로 롤백하는 것도 가능합니다.
/myapp/db/host
Version 1: "rds-old.example.com"
Version 2: "rds-new.example.com" <-- 현재
ECS 태스크 정의에서 파라미터를 컨테이너 환경 변수로 직접 주입할 수 있습니다. 컨테이너가 시작될 때 Parameter Store에서 값을 가져와 환경 변수로 설정하므로, 이미지에 비밀 값이 포함되지 않습니다.
Lambda의 경우 SDK를 사용하여 런타임에 파라미터를 조회합니다. Lambda Extension을 사용하면 외부 캐시 레이어를 통해 반복 API 호출을 줄일 수도 있습니다.
| 항목 | Parameter Store | Secrets Manager |
|---|---|---|
| 주 용도 | 설정값, 환경 변수 | 민감한 비밀 값 (비밀번호, Key) |
| 자동 교체 | 미지원 | 지원 (Lambda 기반) |
| 암호화 | SecureString에서만 | 기본 제공 (KMS 필수) |
| 비용 | 표준 파라미터 무료, 고급은 유료 | 시크릿당 월 $0.40 |
| 파라미터 크기 | 최대 4KB (표준) / 8KB (고급) | 최대 64KB |
| 계층 구조 | 지원 | 미지원 |
자동 교체나 감사 추적이 중요한 민감한 인증 정보는 Secrets Manager가 적합하고, 설정값이나 기능 플래그처럼 단순한 값은 Parameter Store가 비용 효율적인 선택입니다. 두 서비스를 함께 사용하는 것도 일반적인 실무 패턴입니다.