こんにちは、ちゃりおです。
みなさん、Lambda使ってますか。
Lambdaはサーバレスのアプリケーション開発以外にも、cronぽい処理で使うこともあると思います。
僕もちょっとした処理をLambdaで書いてました。
AWSのアップデートで使わなくてもできるようになり、不要になったLambdaも数知れずですw
今回は、以前Lambdaを使わないとできなかったけどAWSの機能でできるようになったものを紹介します。
EC2インスタンスの自動起動・停止
料金節約の観点からも、使っていない時間帯はEC2を停止しておきたいです。
cronぽいLambdaで一番最初に思いつくのは、こちらじゃないでしょうか。
Lambdaで書くと
import boto3
instances = ['X-XXXXXXXXX']
def lambda_handler(event, context):
ec2 = boto3.client("ec2")
ec2.stop_instances(InstanceIds=instances)
こんな感じのコードを書いて、CloudwatchEventで定期実行するとか。
ec2-schedulerを使う
ec2-schedulerを使うと簡単にできます。
AWS Answerで紹介されています。

DynamoDBにスケジュールを書いて、EC2にタグを付けると自動起動停止が実現できます。
デプロイもCloudformationが用意されているので簡単です。
RDSの自動起動停止もできます。(内部的にはlambda使っているので、正確には自分で書かなくて良くなったですね)
ec2-schedulerでEC2を定期的に停止してコストを節約しよう
EC2インスタンスのスナップショットの自動取得
バックアップは自動で取得しておきたいものです。
Lambdaで書くと
スナップショットの取得は、「EC2インスタンスの自動起動・停止」と同じ感じでできます。
スナップショットを取得するLambdaを作って、CloudwatchEventで定期実行します。
しかし、バージョン管理もしたいです。自分でその仕組まで書くのは結構面倒です。
DLMを使う

去年の8月くらいにリリースされました。
定期的にスナップショットを取得して、世代管理もしてくれるサービスです。
マネジメントコンソールから簡単に設定できます。
DLM自体の料金はかかりません。別途EBSやスナップショットの料金は発生します。
【新サービス】EBSスナップショットのライフサイクルを自動化するAmazon DLMが登場!
RDSのログをCloudwatchLogsに出力
「できたらCloudwatchLogsにLogは統合したいよね」という話がありました。
Lambdaで書くと
以前はPostgreはCloudwatchLogsにログを出力できなかったです。
RDSのエラーログを定期的にCloudwatchLogsに出力する処理を書きました。

RDSの機能でできるようになった
去年の12月にできるようになりました。
RDSのコンソールから可能です。既存のインスタンスにも追加できます。

Amazon RDS が Amazon CloudWatch Logs への PostgreSQL ログファイルの発行をサポート
[アップデート]RDS for PostgreSQLのログをCloudWatch Logsに出力できるようになりました
まとめ
アップデートで、より簡単にできるようになるのはAWSでよくあります。
当たり前のことですが、以下を意識していきたいです。
- アップデートをこまめに確認する
- 検索する際は、更新日時に注意する


