LoginSignup
2
2

More than 1 year has passed since last update.

【Python】importが必要なPythonをAWS Lambda へ移行してみた 事前準備編

Last updated at Posted at 2021-09-15

はじめに

昨日、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フォルダに入れる

スクリーンショット 2021-09-15 10.33.10.png

4.lambda_function.py の先頭に指定のプログラムを追記する

lambda_function.py
def lambda_handler(event, context):
    return {
    }

おまじないです。

スクリーンショット 2021-09-15 10.51.18.png

5.ターミナルでzipでまとめる

temp % zip -r zip_file ./*

tempフォルダの中に zip_file.zip というファイルがあれば成功です。

最後に

うまく事前準備できましたでしょうか。
次回はAWSへアップロードして、定期実行を設定していきます。
AWSアカウントをお持ちでない方はご準備をお願いします。

ご参考になれば幸いです。

続き↓

続き↓

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2