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