はじめに
この投稿はアイスタイル Advent Calendar 2023 の20日目の記事です。
アイスタイルのDBREチームに所属している新卒1年目のisomです。
アイスタイルでは様々なデータベースを使っているのですが、その一部にAmazon Auroraを利用しています。
必要に応じてAuroraのスケールアウト・スケールアップを手作業で行うのですが、そこで利用されるコマンドの統一がされていなかったため、今回AWSの勉強もかねて、動作検証を重ねよく使用するCLIの一覧を作成しました。
実行環境
AWS CLI バージョン2~
CLI 出力フォーマットについて
ユーザガイド
下記のオプションをコマンドにつけることで、出力フォーマットを指定することができます
オプション | 説明 |
---|---|
--output json |
JSON 文字列としてフォーマットされる |
--output yaml |
YAML 文字列としてフォーマットされる |
--output text |
AWS CLI の出力がタブ区切りの行に整形されて出力される |
--output table |
テーブルとしてフォーマットされる |
コマンド一覧
Aurora クラスター一覧
【入力項目】
- Aurora クラスター名
【出力項目】
- インスタンス名
- インスタンスクラス
- AZ
- CA
- メンテナンスウィンドウ
- 拡張モニタリングの詳細度
- モニタリングロール
- パラメータグループ
- タグ
aws rds describe-db-instances \
--filters "Name=db-cluster-id,Values=<Aurora クラスター名>" \
--query 'DBInstances[*].{InstanceName: DBInstanceIdentifier, InstanceClass:DBInstanceClass,AZ:AvailabilityZone,CA:CACertificateIdentifier, PreferredMaintenanceWindow:PreferredMaintenanceWindow, CopyTagsToSnapshot:CopyTagsToSnapshot, MonitoringRoleArn:MonitoringRoleArn,MonitoringInterval:MonitoringInterval, DBParameterGroups:DBParameterGroups,Tags:TagList}'
[
{
"InstanceName": "database-sample-instance-1",
"InstanceClass": "db.t4g.medium",
"AZ": "ap-northeast-1a",
"CA": "rds-ca-2019",
"PreferredMaintenanceWindow": "fri:16:01-fri:16:31",
"CopyTagsToSnapshot": true,
"MonitoringRoleArn": "arn:aws:iam::xxxxxxxxxx",
"MonitoringInterval": 60,
"DBParameterGroups": [
{
"DBParameterGroupName": "db-sample",
"ParameterApplyStatus": "in-sync"
}
],
"Tags": [
{
"Key": "sample1",
"Value": "sample1"
},
]
}
]
Aurora クラスター内のインスタンス一覧(ライター・リーダー確認)
【入力項目】
- Aurora クラスター名
【出力項目】
- インスタンス名
- ライターかの真偽値(ライターならtrueを返します)
aws rds describe-db-clusters \
--db-cluster-identifier <Aurora クラスター名> \
--query 'DBClusters[*].DBClusterMembers[*].{InstanceName: DBInstanceIdentifier, IsClusterWriter:IsClusterWriter}' \
--output table
-------------------------------------------------------------------
| DescribeDBClusters |
+---------------------------------------------+-------------------+
| InstanceName | IsClusterWriter |
+---------------------------------------------+-------------------+
| database-sample-instance-1 | False |
| database-sample-instance-2 | True |
+---------------------------------------------+-------------------+
Aurora クラスター起動
aws rds start-db-cluster --db-cluster-identifier <Aurora クラスター名>
(例)
aws rds start-db-cluster --db-cluster-identifier database-sample-cluster
Aurora クラスター停止
DBクラスターは最大7日間停止できます。
放置すると7日後に自動で起動され、課金されるので注意してください
aws rds stop-db-cluster --db-cluster-identifier <Aurora クラスター名>
(例)
aws rds stop-db-cluster --db-cluster-identifier database-sample-cluster
スケールアウト
【入力項目】
- 新しく作成するインスタンス名
- Aurora クラスター名
- インスタンスタイプ
- AZ
- パラメータグループ
- メンテナンスウィンドウ
- モニタリングロール
- 拡張モニタリングの詳細度
- タグのキー、バリュー(スペース区切りで複数指定可)
必要に応じてオプションを追加・削除してください
aws rds create-db-instance \
--db-instance-identifier <新しく作成するインスタンス名> \
--db-cluster-identifier <Aurora クラスター名> \
--engine aurora-mysql --db-instance-class <インスタンスタイプ> \
--availability-zone <AZ> \
--db-parameter-group-name <パラメータグループ> \
--preferred-maintenance-window <メンテナンスウィンドウ> \
--monitoring-role-arn <モニタリングロール> \
--monitoring-interval <拡張モニタリングの詳細度> \
--copy-tags-to-snapshot \
--tags Key=<キー1>,Value=<バリュー1> Key=<キー2>,Value=<バリュー2>
フェイルオーバー
【入力項目】
- Aurora クラスター名
- ライターにしたいインスタンス名
aws rds failover-db-cluster \
--db-cluster-identifier <Aurora クラスター名> \
--target-db-instance-identifier <ライターにしたいインスタンス名>
(例)
aws rds failover-db-cluster \
--db-cluster-identifier database-sample-cluster \
--target-db-instance-identifier database-sample-instance-1
インスタンスクラス変更
スケールアップ、スケールダウンに使います。
ドキュメント
【入力項目】
- インスタンス名
- インスタンスクラス
【オプションの説明】
オプション | 説明 |
---|---|
--apply-immediately |
すぐに適用 |
--no-apply-immediately |
次のメンテナンスウィンドウ中に適用 |
aws rds modify-db-instance \
--db-instance-identifier <インスタンス名> \
--db-instance-class <インスタンスクラス> \
--apply-immediately
(例)
aws rds modify-db-instance \
--db-instance-identifier database-sample-instance-1 \
--db-instance-class db.t3.medium \
--apply-immediately
コマンドを実行し、jsonが出力されたら成功 完了までに10分ほどかかります。
インスタンス削除
【入力項目】
- 削除したいインスタンス名
【オプションの説明】
オプション | 説明 |
---|---|
--no-delete-automated-backups |
自動バックアップを保持 |
--delete-automated-backups |
自動バックアップを保持しない |
--final-db-snapshot-identifier <スナップショット名> |
最終スナップショットを作成 |
--skip-final-snapshot |
最終スナップショットを作成しない |
aws rds delete-db-instance \
--db-instance-identifier <削除したいインスタンス名> \
--skip-final-snapshot \
--delete-automated-backups
(例)
aws rds delete-db-instance \
--db-instance-identifier database-sample-instance-1 \
--skip-final-snapshot \
--delete-automated-backups
まとめ
最後まで読んでいただきありがとうございました。
CLIの記載方法が最初はわからず苦労しましたが、ドキュメントやユーザガイドを読み進めていくうちに理解できました。
AWSのドキュメントやユーザガイドはAWS初心者の私にも読みやすくてありがたかったです🙏
今回のCLIは一度作成すれば流用できるので、ぜひ使ってみてください!