Lambdaで1時間に1回RDSのスナップショットをとる方法

RDSのスナップショットはデフォルトで1日に1回取れるのですが、1時間に1回スナップショットを取りたいと思ったのでその方法をまとめます

  1. Lambda用のロールの作成 AmazonRDSFullAccessのポリシーを付与してロールを作成、この辺は適宜調整お願いします

  2. Lambdaの作成 この設定でLambda関数を作成します、ロールは先ほど作成したロールを入れてください

コードソースを以下のように変更します

import boto3
from datetime import datetime

# RDSスナップショットを作成
def lambda_handler(event, context):
    rds = boto3.client('rds')
    clusterIdentifier = 'sample-db-cluster'
    snapshotIdentifier = 'sample-db-snapshot-{}'.format(datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))

    response = rds.create_db_cluster_snapshot(
        DBClusterIdentifier=clusterIdentifier, 
        DBClusterSnapshotIdentifier=snapshotIdentifier,
        Tags=[
            {
                'Key': 'Name', 
                'Value': snapshotIdentifier
            },
        ]
    )

テストを実行してRDSからスナップショットが登録されていることを確認してください

  1. EventBridgeの設定 トリガーを追加

以上で1時間に1回スナップショットをとるようになりました