AWS Lambda+Python3で複数のRDSを起動停止

aws python rds

リンクバル技術部の川畑です。9月も残すところあと3日。今年の台風は勢力が強く、今週末には台風24号が上陸するとの予報なので、皆様お気をつけてお過ごしください。
今回は、少しでもサーバー費用を削減すべく、特定のタグを設定して指定したタグ全てのRDSを起動停止するスクリプトを作成しましたので、ご紹介させていただきます。
(以前こちらの記事で似たようなスクリプトを紹介させて頂いたのですが、1つのRDSしか起動停止できないものでした)

スクリプト説明

  • boto3でRDSを操作するために高レベルAPIのResourcesを使いたかったけど、RDSは提供されていないようなので低レベルAPIのClientsを使用
  • AWSアカウントの指定リージョン全てのRDS情報を取得
  • RDS情報より指定したタグとRDSのステータスによりフィルタリング(すでに停止されているRDSを停止しようとすると、スクリプトでエラーとなるため)
  • フィルタリングされたRDSを起動停止

使用言語

  • python3.6
  • boto3

RDS起動スクリプト

  • こちらをコピーして使います

RDS停止スクリプト

  • こちらをコピーして使います

使い方

  • 起動したいRDSにタグを指定(タグ名「AutoStart」、値「True」)
  • 停止したいRDSにタグを指定(タグ名「AutoStop」、値「True」)

  • AWS Lambda Functionを作成して、スクリプトをコピーペースト

このスクリプトを設定して、CloudWatchでスケジュールを設定するだけで、開発系の複数のRDSがスケジュールで起動・停止できるようになりました。今後は開発系のAWSアカウントではデフォルトで設定しようと思います。

リンクバルに興味がある方は こちら ご覧ください。