[추가 정보]
Parameter store 환경변수 관리를 쉽게 할 수 있는 툴인 chamber에 이미 같은 기능이 구현되어있다.
chamber import를 사용해보자.
문제 상황
Parameter store는 AWS 콘솔에서 값을 하나씩 업로드하는 방식만 제공한다.
프로젝트에서 env를 Parameter store에 보관한다고 할 때, env 양이 많은 경우 번거롭다.
심지어 배포 정책에 따라 dev, stag, prod와 같이 여러 환경이 존재한다면 노가다가 더 길어진다.
요구 사항
.env파일에 적힌 환경변수를 명령어 한번으로 Parameter store에 한번에 업로드 할 수 있다.
해결 방안
프로젝트 레포의 터미널에서 cli로 업로드를 하면 편할 것 같다.
shell 파일을 이용해보자.
아래와 같이 실행할 수 있다면 어떨까?
`./upload-env.sh ${env_file} ${aws_profile} ${prefix}`: env_file을 한 줄씩 읽어서 aws_profile로 prefix(env파일경로)에 환경변수를 업로드한다.
위 명령어를 정상적으로 실행하기 위해선 먼저 aws-cli, aws sso 계정 설정을 해두어야한다.

// .env.stag 예시
BASE_URL="https://example.com"
SECRET_KEY="HiHello"
ENVIRONMENT="stag"
aws sso 설정과 .env 설정이 끝났다면 `aws ssm put-parameter` 명령어를 이용해서 쉘 파일을 작성할 수 있다.
# upload-env.sh
#!/bin/bash
ENV_FILE="$1"
PROFILE="$2"
PREFIX="$3"
while IFS= read -r line || [ -n "$line" ]; do
# 빈 줄/주석 스킵
[[ -z "$line" || "$line" =~ ^# ]] && continue
# key/value 분리 (첫 번째 '=' 기준)
key="${line%%=*}"
value="${line#*=}"
# 따옴표 제거 + key 소문자 변환
clean_value=$(echo "$value" | sed 's/^"//; s/"$//')
clean_key=$(echo "$key" | tr '[:upper:]' '[:lower:]')
echo "Uploading $PREFIX/$clean_key ..."
aws ssm put-parameter \
--name "$PREFIX/$clean_key" \
--value "$clean_value" \
--type "SecureString" \
--overwrite \
--profile "$PROFILE"
done < "$ENV_FILE"
`upload-env.sh` 파일을 생성했다.
- 환경과 프로젝트별로 관리하기 위해 환경변수 경로에 prefix도 받을 수 있게 했다.
- 환경변수 업로드 기준에 따라 값을 포맷팅 해준다. (따옴표 제거, 소문자 변환)
- 보안을 위해 SecureString으로 저장한다.
aws sso 설정, `.env.stag` 파일 생성, `upload-env.sh`파일 생성 이 끝났다면
이제 명령어 한 줄로 업로드를 할 수 있다.
먼저 upload-env.sh 파일 실행 권한을 주자
chmod +x upload-env.sh
이후 명령어를 실행한다.
/upload-env.sh ./.env.stag stag /stag/my-service
결과

'Infrastructure' 카테고리의 다른 글
| AWS CLI로 AWS VPC 기본 아키텍처 구성하기 (0) | 2026.03.17 |
|---|---|
| AWS ECS 키워드 (0) | 2025.10.27 |
| AWS SQS + Lambda 구성 (2) | 2025.08.21 |
| Lightsail로 생성한 ALB에 Domain 과 https 적용하기 (1) | 2025.07.21 |
| 3. CloudFormation 템플릿 기본 개념 (0) | 2025.03.18 |