AWS Lambda で Amazon RDS を自動停止するスクリプトを作成したので解説します。
以下、過去に AWS Lambda を使用して EC2 インスタンスの自動停止・自動起動のスクリプトを作成した記事です。
【AWS】【Python】Lambda で EC2 インスタンスを起動・停止するプログラム&スケジュール化手順【2018年最新版】
【AWS】【Python】Lambda で RDS インスタンスを起動・停止するプログラム&スケジュール化手順【2017年最新版】
【AWS】【Python】Lambda で EC2 インスタンスを起動・停止するプログラム&スケジュール化手順【2017年最新版】
検証環境がある場合 AWS Lambda で Amazon RDS を管理した方がいい理由
検証用に Amazon RDS を使用していて、RDS の利用料金が高いので「ステータス」を以下のように「停止中」にしたとします。
しかしここに落とし穴があります。
実は Amazon RDS は「停止中」にしていても 7 日間が経過すると自動的に Amazon RDS が起動します。(もちろん課金されます)
AWS 一時的に Amazon RDS DB インスタンスを停止する
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_StopInstance.html
【AWS】RDS(Amazon Relational Database Service)はインスタンスを停止しても7日間後(8日後)に自動的に起動するので注意【料金が発生する】
そのため、もし検証環境で Amazon RDS を使用しており、且つ検証しない時は停止しておきたい場合は、AWS Lambda で定期的に停止処理を繰り返し行うようにしましょう。
相当なコスト削減が期待できます。
Lambda で Amazon RDS を自動停止するスクリプトの作成
AWS 管理コンソールにログインします。
「サービス」-「コンピューティング」-「Lambda」をクリックします。
右側にある「関数の作成」ボタンをクリックします。
「基本的な情報」画面で、以下のように設定します。
- 関数名 ← 分かりやすい名前を設定します。
- ランタイム ← Python 3.6 を選択します。
- 実行ロール ← 以前 AWS Lambda 用に作成した既存のロールを使用するため、既存のロール を使用するを選択します。
- 既存のロール ← 以前 AWS Lambda 用に作成した既存のロール Lambda_basic_execution を選択します。
設定が完了したら「関数の作成」ボタンをクリックします。
関数を作成すると下図のような画面が表示されるので、「テスト」ボタンをクリックします。
「テストイベントの設定」画面で、以下のように設定します。
- 新しいテストイベントの作成 ← チェックを入れます。
- イベントテンプレート ← Hello World を選択します。
- イベント名 ← 分かりやすい名前を入力します。
設定を完了したら「作成」ボタンをクリックします。
左側ペインの「トリガーの追加」より「CloudWatch Events」を選択して追加します。
下図のような「トリガーの設定」画面が表示されたら、以下のようにトリガーのルールを設定します。
- ルール ← 新規ルールの作成 を選択します。
- ルール名 ← 分かりやすい名前を付けます。
- ルールタイプ ← スケジュール式 を選択します。
- スケジュール式 ← cron の形式でスケジュールを入力します。(時刻は UTC になるので注意)
- トリガーの有効化 ← チェックを入れます。
設定が完了したら「追加」ボタンをクリックします。
次に「Stop_RDS_Instances」を選択します。
lambda_function に以下のようにプログラムを入力し「保存」ボタンをクリックします。
■プログラム
import boto3 |
プログラムは以下で詳細に解説しています。
【AWS】【Python】Lambda で RDS インスタンスを起動・停止するプログラム&スケジュール化手順【2017年最新版】
Lambda 関数の動作確認
Lambda 関数を設定したら動作確認をします。
「テスト」ボタンをクリックします。
下図のように「実行結果:成功」が表示されることを確認します。
下図のように対象の RDS インスタンスが停止していることを確認します。
コメント