Spring 심화 (AWS Parameter Store)

KimGwangmin·2026년 9월 28일

AWS Parameter Store

설정값을 안전하게 저장하고 관리하는 서비스

  • 버전 관리: 변경 이력 자동 기록
  • IAM 권한 제어: 누가 읽을 수 있는지 세밀하게 제어
  • 재부팅 무관: AWS에서 관리하므로 서버 재부팅과 무관
  • 무료

참고: AWS Secrets Manager

  • 마찬가지로 설정값을 저장하는 서비스
  • 고급 기능 지원
    - 비밀번호 자동 순환 기능: 일정 주기로 비밀번호를 자동 변경하며 보안성을 올려줌
  • 유료: 설정값 1개당 $0.4/월

파라미터 생성

이름, 유형, 값으로 구성

  • Name
    • 이름 규칙: /{앱이름}/{환경}/{키}
    • 계층 구조로 관리하면 권한 제어가 쉬움
  • Type
    • String
    • StringList: ,로 구분된 문자열 리스트
    • SecureString: 암호화된 문자열
  • Value

application-prod.properties에 있는 파라미터를 Parameter Store에 등록

spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
  • /{app이름}/prod/DB_HOST: String, DB 엔드포인트
  • /{app이름}/prod/DB_PORT: String, 3306 (mysql 포트)
  • /{app이름}/prod/DB_NAME: String, 데이터베이스명
  • /{app이름}/prod/DB_USERNAME: String, 사용자명
  • /{app이름}/prod/DB_PASSWORD: String, 비밀번호

Spring Cloud AWS 연동

의존성 추가

implementation 'io.awspring.cloud:spring-cloud-aws-starter-parameter-store:4.0.0-RC1'

application-prod.properties 설정

spring.config.import=aws-parameterstore:/camp-health-app/prod/

spring.datasource.url=jdbc:mysql://${DB_HOST}:${DB_PORT}/${DB_NAME}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
  • 앱 시작시 Parameter Store에서 해당 변수들을 가져온 뒤 환경변수로 사용

EC2에서 AWS Parameter Store 권한 설정

EC2가 AWS Parameter Store 서비스에 접근하려면 IAM 권한(Role)이 필요

IAM 정책 예시

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ssm:GetParameter",
                "ssm:GetParameters",
                "ssm:GetParametersByPath"
            ],
            "Resource": "arn:aws:ssm:ap-northeast-2:*:parameter/app/*"
        }
    ]
}

EC2 Role에 정책 연결

  1. AWS 콘솔 → IAM → Roles
  2. EC2에 연결된 Role 선택
  3. Add permissions → Attach policies
  4. 앞서 만든 정책 연결

0개의 댓글