Amazon SageMakerのノートブックインスタンスを毎日停止するLambda関数
はじめに
最近、機械学習を勉強しておりAmazon SageMakerを利用していますが、 高頻度でノートブックインスタンスを停止し忘れてしまいます。
2018/10現在東京リージョン最も安価なml.t2.medium
で$0.0608/hour
で30日立ち上げっぱなしだと、$43
ほど。
結構無駄なので、僕が寝ているときは停止してもらうことにしました。
[toc]
概要
機能としては、、
- 毎日2:00にcron(Cloudwatch Event)が起動し、Lambda関数を起動する
- Lambda関数で、ステータスが
InService
のノートブックインスタンスをリストする - 該当のインスタンスがなければ、その旨をSlackに通知する
- あればそのインスタンスを停止させた上で、その旨をSlackに通知する
- あくまで個人のAWS/Slackアカウントでの運用を想定
- ↓こんな感じ
利用した技術/ツールは、、
- Python3(Lambda)
- Cloudwatch Event (cron起動)
- Apex (Lambdaのデプロイ)
- Terraform(apex infra / IAM作成、Cloudwatch Event設定)
リポジトリは以下。
https://github.com/mickey390/sagemaker-observer
手順
READMEに書いておきました。
実施した環境は、以下の通り。
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G65
$ apex version
Apex version 1.0.0-rc2
$ terraform version
Terraform v0.11.9
まとめ
- やりたい機能は実装できた
- ちょっとした機能のLambda関数の管理は、今の所Apex+Terraformがシンプルで使いやすい
- IAM(Lambda用)作成→Lambda作成の流れが、やはり煩雑に感じる