最初に謝辞
この記事の内容はサーバーワークスさんの記事と同等です。
アレンジした部分はありますが、やってることの本質はまるで変わってないです。
動作原理とかの細かい説明はそちらをご覧ください。
どなたかのお役に立てれば幸いです。
お役に立ちまくりましたありがとうございます。
デフォルトDBパラメータグループ
元記事では仮のDBグループを作ってから表示させていましたが、DBエンジン名の前に default.
を付ければ使用したことがなくても表示させることができます。
DBエンジン名の一覧を出してー
aws rds describe-db-engine-versions \
--query "DBEngineVersions[].DBParameterGroupFamily" \
--output text | uniq
DBエンジン名の前に default.
を付けて中身の表示
aws rds describe-db-parameters \
--db-parameter-group-name default.aurora-mysql5.7 \
--query "Parameters[].[ParameterName,ParameterValue]" \
--output text
デフォルトDBクラスタパラメータグループ
クラスタを作成できるDBエンジンであれば同等の処理で表示させることができます。
describe-db-parameters
を describe-db-cluster-parameters
に、--db-parameter-group-name
を --db-cluster-parameter-group-name
に変えるだけですね。
aws rds describe-db-cluster-parameters \
--db-cluster-parameter-group-name default.aurora-mysql5.7 \
--query "Parameters[].[ParameterName,ParameterValue]" \
--output text
差分の確認
元記事では一旦ファイルを作成して sdiff
をしていましたが、bash
ならこんな感じ
sdiff -s <(これ) <(それ)
でコマンドを渡せますので、そのままAWS CLIのコマンドを引き渡せます。
sdiff -s <(aws rds describe-db-parameters --db-parameter-group-name default.aurora-mysql5.7 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-parameters --db-parameter-group-name my-custom-db-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text)
sdiff -s <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-mysql5.7 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name my-custom-db-cluster-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text)
差分の反映
上記の差分確認を利用できます。
sdiff -s <(aws rds describe-db-parameters --db-parameter-group-name default.aurora-mysql5.7 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-parameters --db-parameter-group-name my-custom-db-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text) | while read line
do
pname=$(echo $line | awk '{print $1}')
pvalue=$(echo $line | awk '{print $5}')
aws rds modify-db-parameter-group \
--db-parameter-group-name my-custom-new-db-parameter \
--parameters ParameterName=$pname,ParameterValue=$pvalue,ApplyMethod=immediate
done
sdiff -s <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-mysql5.7 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name my-custom-db-cluster-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text) | while read line
do
pname=$(echo $line | awk '{print $1}')
pvalue=$(echo $line | awk '{print $5}')
aws rds modify-db-cluster-parameter-group \
--db-cluster-parameter-group-name my-custom-new-db-cluster-parameter \
--parameters ParameterName=$pname,ParameterValue=$pvalue,ApplyMethod=immediate
done
設定確認
入れ子が深いし長いしでアレなので元のままの方が良い気もしますが、テンポラリファイルを作るのが嫌いな人、他にもいますでしょ?
sdiff
の時と同様に
diff <(これ) <(それ)
できるので、そこに新旧の sdiff
を突っ込む感じでイケます。
diff <(sdiff -s <(aws rds describe-db-parameters --db-parameter-group-name default.aurora-mysql5.7 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-parameters --db-parameter-group-name my-custom-db-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text)) <(sdiff -s <(aws rds describe-db-parameters --db-parameter-group-name default.aurora-mysql8.0 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-parameters --db-parameter-group-name my-custom-new-db-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text))
diff <(sdiff -s <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-mysql5.7 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name my-custom-db-cluster-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text)) <(sdiff -s <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name default.aurora-mysql8.0 --query "Parameters[].[ParameterName,ParameterValue]" --output text) <(aws rds describe-db-cluster-parameters --db-cluster-parameter-group-name my-custom-new-db-cluster-parameter --query "Parameters[].[ParameterName,ParameterValue]" --output text))