カテゴリー
AWS

Amazon RDS(Aurora)を定期的に止めたいンゴ

AWSは何にコストがかかるかって言ったら、そらもう(RDSが群を抜いて)あれ(かかる)よ。便利やからね。はっきりわかんだね。

せやけどね、検証環境や開発環境は一年中稼働してる必要はないわけやから、時間を決めてね、止めておきたい。

というわけでね、Lambda使ってね、やってみるで。

まずRoleを作る。

まず、lambda.amazonaws.comが信頼されたエンティティやね。

ほんで、ポリシーとしては、次が必要かな。

  • rds:StartDBCluster
  • rds:StopDBCluster
  • rds:DescribeDBClusters

本番止めてしまったら、そんなもん、オマエ…。

と言うわけで、リソースにはちゃんと対象のARNを指定しておくとええね。

そしたら、Lambda作るで。ランタイムはPython3.8で、実行ロールにはさっき作ったロールを指定する。ちな、RDSはAuroraや。

import boto3
def lambda_handler(event, context):
    client = boto3.client('rds')
    response = client.describe_db_clusters(DBClusterIdentifier=くらすたーの識別子)
    for DBCluster in response['DBClusters']:
        if DBCluster['Status'] == "available":
            client.stop_db_cluster(DBClusterIdentifier=くらすたーの識別子)

これは止める方。次、動かす方や。

import boto3
def lambda_handler(event, context):
    client = boto3.client('rds')
    response = client.describe_db_clusters(DBClusterIdentifier=くらすたーの識別子)
    for DBCluster in response['DBClusters']:
        if DBCluster['Status'] == "stopped":
            client.start_db_cluster(DBClusterIdentifier=くらすたーの識別子)

これだけやね。あとは、それぞれの関数のトリガーにイベントを設定する。今は、「EventBridge (CloudWatch Events)」になっとるんやね。

ルールタイプをスケジュール式にしたときの設定方法は正直意味わからんので、https://docs.aws.amazon.com/ja_jp/AmazonCloudWatch/latest/events/ScheduledEvents.htmlを参照するんやで。

これで、好きなタイミングでRDSを止めたり動かしたりできる。最高や。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です