AWS Parameter Store에서 값 조회
#!/usr/bin/env bash
# your-profile을 실제 프로필로 변경하기
export AWS_PROFILE=your-profile
echo 'export AWS_PROFILE=your-profile'
for P in $(aws ssm describe-parameters | jq '.Parameters[].Name' | sed 's/"//g' | sed 's/\(.*\/\).*/\1/g' | uniq)
do
aws ssm get-parameters-by-path \
--path "$P" \
--with-decryption \
--query "Parameters[*].[Name,Value]" \
--output text | sed 's/\(.*\)\t\(.*\)/aws ssm put-parameter --name \1 --value "\2" --type SecureString --key-id alias\/aws\/ssm --tier Standard --overwrite > \/dev\/null /g'
done
운영/베타 환경 구성을 하면서 파라미터 스토어의 모든 값을 받아와서 변경해야 할 일이 있었다.
위 스크립트를 run.sh에 저장한다면, bash run.sh > update-param-store-values.sh 를 실행해서 현재 값 상태 그대로 업데이트하는 스크립트를 생성할 수 있다.
@나 ! 같은 값은 스크립트에서 의도하지 않은 방향으로 처리할 수 있으므로 꼭 모든 값을 확인하기…
pagination 적용한 스크립트
#!/usr/bin/env bash
# your-profile을 실제 프로필로 변경하기
export AWS_PROFILE=your-profile
RES=$(aws ssm describe-parameters --max-items 10)
while : ; do
for P in $(echo "$RES" | jq '.Parameters[].Name' | sed 's/"//g' | sed 's/\(.*\/\).*/\1/g' | uniq)
do
if [[ $P == /* ]]; then
aws ssm get-parameters-by-path \
--path "$P" \
--with-decryption \
--query "Parameters[*].[Name,Value]"
else
aws ssm get-parameters \
--names "$P" \
--with-decryption \
--query "Parameters[*].[Name,Value]"
fi
done
NEXT_TOKEN=$(echo "$RES" | jq '.NextToken')
if [ -z "$NEXT_TOKEN" ]; then
break;
fi
RES=$(aws ssm describe-parameters --max-items 10 --starting-token "$NEXT_TOKEN")
done
AWS Parameter Store에 값 설정
#!/bin/bash
# csv header line needed
export AWS_PROFILE=deer-prod
while IFS="," read -r key value
do
aws ssm put-parameter --name "$key" --value "$value" --type "SecureString" --overwrite --no-cli-pager || exit 1
done < <(tail -n +2 "${1:-/dev/stdin}")
example.csv
key,value
/serverless/deer-delete-old-record-prod/DB_USERNAME,username
/serverless/deer-delete-old-record-prod/DB_PASSWORD,password
/serverless/deer-delete-old-record-prod/DB_HOST,url
cat example.csv | run.sh