DBエンジニアの嫁と息子が大好きなだいちです。
ティアキンのコログですが、密かに全部集めようと考えているけど流石に攻略を見ないとつらいよなと最近思い始めてます。
ハイラルの大地に旅している皆さんはどうしてますか?
はじめに
先日、AWS RDSのマイナーバージョンのサポートが切れるということでバージョンアップを行いました。
他のリソースと連携していることもあり、手動でアップデートを実施する必要があったのですが、マネジメントコンソールでポチポチアップデートをしてもいいのですが、弊社ではナレッジがなくてアップデートと合わせてナレッジも纏める必要がありました。
ナレッジを纏めるとなるとマネジメントコンソールのスクショを撮って貼ってをする必要があると第一に考えましたがとにかく「面倒くさい」と思ったのがスタートです。
ならCLIで完結させたらいいじゃんと考えたのです。
なぜCLIでの対応を考えたのかメリット・デメリットを纏めると以下のようになります。
マネジメントコンソールでの対応
メリット
視覚的にわかりやすい
デメリット
UIが変わるとナレッジとの情報が一致しにくくなる(頻度多)
AWS CLI
メリット
ナレッジにはコマンドを貼るだけ(スクショは必要最低限でOK)
デメリット
コマンドの理解に学習コストがかかる
メリット・デメリットの比較
#### デメリット
UIが変わるとナレッジとの情報が一致しにくくなる(頻度多)
こちらマネジメントコンソールのデメリットはマネジメントコンソールを使っている限り永久不滅ですよね。
でも、AWS CLIであれば学習コストが高くても一度慣れてしまえば以降はデメリットにならないと考えます。コマンドの廃止などもありますがUIの更新よりは頻度が低いと考えてます。
#### デメリット
コマンドの理解に学習コストがかかる
これでナレッジ作成も楽になるならAWS CLIでやるべきでしょとなった次第です。
実際にやってみた
事前情報
AWS RDS for MySQL 8.0.23 → 8.0.32
aws-cli/2.11.6
ブルーグリーンデプロイでのバージョンアップ
バージョンアップの実施
1. RDSのARNを取得する
対象インスタンスのRDS ARNを控えておきます。
aws rds describe-db-instances --db-instance-identifier <インスタンス名> --query 'DBInstances[*].[DBInstanceArn]' --output text
2. DBパラメーターグループを取得する
スタンバイインスタンスに適用させるパラメータグループを控えておきます。
aws rds describe-db-instances --db-instance-identifier <インスタンス名> --query 'DBInstances[*].[DBParameterGroups]' --output text
3. 作成する
スタンバイインスタンスを作成します。
aws rds create-blue-green-deployment \
--blue-green-deployment-name <スタンバイインスタンス名> \
--source arn:aws:rds:ap-northeast-1:<xxxx>:db:<インスタンス名> \
--target-engine-version 8.0.32 \
--target-db-parameter-group-name <パラメータグループ名>
--blue-green-deployment-name <スタンバイインスタンス名>
ではスタンバイインスタンスに利用するインスタンス名を指定します。
--target-engine-version 8.0.32
では今回バージョンアップ後の値を指定しています。
変えない場合は不要です。
4. ブルーグリーンデプロイの詳細を表示する
aws rds describe-blue-green-deployments --filters Name=blue-green-deployment-name,Values=<スタンバイインスタンス名>
SwitchoverDetailsのStatusで進行状況を確認します。
また、BlueGreenDeploymentIdentifierの値を控えておく
5. 切り替えを実施する
ブルーグリーンを入れ替えます。
aws rds switchover-blue-green-deployment \
--blue-green-deployment-identifier <BlueGreenDeploymentIdentifier> \
--switchover-timeout 300
--blue-green-deployment-identifier <BlueGreenDeploymentIdentifier>
には先程控えた値を指定します。
switchover-timeout
は切り替えの制限時間を秒単位で指定します。デフォルトは 300 です。
6. ブルーグリーンデプロイを削除
バージョンアップが無事に完了したらブルーグリーンデプロイを削除します。
aws rds delete-blue-green-deployment \
--blue-green-deployment-identifier <BlueGreenDeploymentIdentifier> \
--no-delete-target
--no-delete-target
で元インスタンスを削除しないようにします。
おわりに
今回まとめた記事はほぼ弊社でも纏めたナレッジと同じような内容になっております。
個人的にはすごくシンプルなナレッジとなって大変満足しています。
AWS CLIをこの機会に利用してみてください!