AWS Lambdaとは
AWS(Amazon Web Service)が提供しているクラウドコンピューティングサービスのことです。
ある条件で発火して任意のコードを立ち上げるだけなのでサーバーコストがかからず手軽にコードを自動化することができめちゃくちゃ便利です。
AWS LambdaでPythonコードを自動化
それでは試しにAWS LambdaでPythonを立ち上げてみましょう。
1. functionを生成する
i. AWS Lambdaホーム画面からCreate Functionを選択
ii. Auther from ScratchからPythonを選択してfunctionを生成
2. 外部モジュールをアップロードする
Pythonの外部モジュールをimportするにはモジュールのzipファイルをアップロードする必要があります。
i. 任意のディレクトリでモジュールをインストール
以下のコードでカレントディレクトリにモジュールをインストールすることができます
$ pip install <module> -t .
ii. インストールしたモジュールをzip化
以下のコードですべてのファイルをupload.zip
という一つのファイルに閉じ込めることができます
zip -r upload.zip *
iii. zipをアップロード
Function CodeからCode entry typeでupload a zip file
を選択しzip化したファイルをアップロードします
*ファイルサイズが大きい場合、functionを複数に切り分けるなどをおこなわないといけません
3. 関数を記述する
lambda_function.lambda_handler
にHandlerをセットしているので、lambda_function.pyというファイルを生成し、lambda_handler()関数を書き、実行させたい処理をその関数内に記述します。完了したらsaveしてください。
4. タイムトリガーをセットする
毎時実行したいので、「Add Trigger」から「CloudWatch Events」を選択してスケジューリングします
cron()
やrate()
の書き方はこちら。
これで完了です。Triggerに他のAWS Lambda FunctionやEC2, S3などを設定することによって他のクラウドのアクションを発火条件に設定することもできます。
最後に
kerasやscikit-learnのモジュールの容量がバカみたいに大きいので、AWS Lambdaだけで機械学習モデルを回すのは無理そうです。
やはりSageMakerと繋ぐのがベストプラクティスな気がする。