share facebook facebook twitter menu hatena pocket slack

2014.07.21 MON

DB Parameter Groupの設定をコピーするワンライナー

磯辺 和彦

WRITTEN BY 磯辺 和彦

cloudpack磯辺です。

DB Parameter Groupでユーザによる設定を変更したものを、別のDB Parameter Groupにコピーしたかったのだが、AWS CLIのドキュメントを読んでいて、ワンライナーで簡単にコピー出来そうだと思って試行錯誤したら出来た。

% aws rds describe-db-parameters --db-parameter-group-name param1 | 
  jq '[.Parameters[]|select(.Source == "user") + {"ApplyMethod": "immediate"}]' | 
  tr -d 'n' | 
  xargs -I{} aws rds modify-db-parameter-group --db-parameter-group-name param2 --parameters '{}'

今回は行ごとに解説してみる。

1行目
コピー元となるDB Parameter Group (param1) の設定を取得している。
2行目
その結果からjqを使って、ユーザによって変更されたもののみをフィルタして取得し、その結果それぞれについて、”ApplyMethod”: “immediate”という項目を追加している。
3行目
JSONに含まれる改行を全て削除している。
4行目
コピー先となるDB Parameter Group (param2) にmodify-db-parameter-groupを実行する。xargsを使って–parametersオプションに、jqで加工したJSONを渡している。

describe-db-parametresで、ユーザによって変更されたパラメータの一覧をJSONで取得し、その内容をそのままmodify-db-parameter-groupに渡しているということになる。そのまま渡してもだめで、ApplyMethodの追加が必要となるので、それをjqで行なっている。

元記事は、こちら

磯辺 和彦

磯辺 和彦

cloudpackに参加して以来、設計・構築・運用・開発・セキュリティなど様々な経験を経て、現在は主に社内インフラ関連を担当中。WEB+DB Press Vol.85に記事書きました。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。