はじめに
昨日、macOSのcronで自動実行するためにmacOSの省電力モードをOFFにすると1ヶ月で1,200円程度電気代がかかるのでは!?という記事を書きました(あくまで試算です)
やはり、オンプレ運用はよくないと。これからはクラウドっしょ!
ただ、AWS Lambdaってよくわからん。
って思っている方いますね?(私)
ってことで本日はAWS Lambda へPython実行環境を移行にチャレンジしてみました。
少し長くなるので、事前準備編とLambda編とEventBridge編で分けて投稿します。
環境
・既にAWSのアカウントを持っている(お持ちでない方でもすぐ発行できますよ。)
・Python3.9
・macOS Catalina10.15.7
・定期実行したいpythonがある
事前解説
今回はサンプルとして、ccxtという複数の仮想通貨取引所のAPI操作が集約されたライブラリをAWS Lambdaで実行したいと思います。
AWS Lambdaにはデフォルトではccxtがインストールされていません。
またmacOSならターミナルで簡単にpip3コマンドでccxtをインストールできますが、残念ながらAWS Lambdaにはインストールできません。なので、みなさんが一生懸命作ったpythonプログラムの1行目のimportコマンドでいきなりエラーになります。
import ccxt →エラー発生
{
"errorMessage": "Unable to import module 'lambda_function': No module named 'ccxt'",
"errorType": "Runtime.ImportModuleError"
}
この時点でAWS Lambda へPython実行環境を移行を諦める人多いと思います。(私)
でも今日は諦めません。だって電気代高いんだもん!
ではどうすればいいのか。簡単に書きます。
◆事前準備編◆
1.macOSのデスクトップにtempフォルダを作る
2.tempフォルダにccxtをpip3でインストールする
3.既に作ったpythonプログラムを lambda_function.py へリネームしてtempフォルダに入れる
4.lambda_function.py の先頭に指定プログラムを追記する
5.ターミナルでzipでまとめる
◆Lambda編◆
6.AWSへログインし、5をアップロードする
◆EventBridge編◆
7.EventBridge (CloudWatch Events)に定期実行ルールを登録する
今回は1-5までを説明します。(次回以降で6-7)
手順
1.macOSのデスクトップにtempフォルダを作る
1-1.ターミナルを起動します。pwdコマンドで自分がどこにいるか確認します。
% pwd
/Users/Hiroki
1-2.デスクトップに移動します。
% cd /Users/Hiroki/Desktop
Desktop %
1-3.デスクトップにtempフォルダを作ります。
Desktop % mkdir temp
1-4.tempフォルダに移動します。
Desktop % cd temp
temp %
2.tempフォルダにccxtをpip3でインストールする
2-1.ccxtをフォルダ指定してインストールします。
temp % pip3 install ccxt -t ./
2-2.デスクトップにあるtempフォルダにccxtフォルダがあるか確認します。
3.既に作ったpythonプログラムを lambda_function.pyへリネームしてtempフォルダに入れる
4.lambda_function.py の先頭に指定のプログラムを追記する
def lambda_handler(event, context):
return {
}
おまじないです。
5.ターミナルでzipでまとめる
temp % zip -r zip_file ./*
tempフォルダの中に zip_file.zip というファイルがあれば成功です。
最後に
うまく事前準備できましたでしょうか。
次回はAWSへアップロードして、定期実行を設定していきます。
AWSアカウントをお持ちでない方はご準備をお願いします。
ご参考になれば幸いです。
続き↓
続き↓