AWS Cloud9上で作成したLambda関数でPython3外部モジュールを利用する
Lambda関数でPythonの外部モジュールを利用する場合、Lambda関数デプロイパッケージに含める必要があります。
ローカルの場合は、zipにまとめてAWS Lambdaへアップロードする必要がありますが、AWS Cloud9上からデプロイする場合(つまりSAM)は簡単です。
Lambda関数を作成・デプロイ・実行の仕方は、下記のエントリを参照してください。
ローカル上にLambda関数を作成
ローカル上にLambda関数を作成します。
右側サイドバーにある、[AWS Resources] を選択して [AWSリソース] ウィンドウを開き、[λ+] ボタンをクリックします。
- 関数名
- getLastDayOfNextMonth
- アプリケーション名
- GetLastDayOfNextMonth
- ランタイム
- Python 3.6
- 設計図
- empty-python
- 関数トリガー
- none
- メモリ
- 128MB
- ロール
- 自動生成(Automatically generate role)
AWS Cloud9上に、GetLastDayOfNextMonth
ディレクトリが作成されます。
年月を指定して翌月末日を取得するLambda関数
lambda_function.py
を下記コードに差し替えて、保存 (Command+S) します。
lambda_function.py
import datetime from dateutil import relativedelta def lambda_handler(event, context): today = datetime.date.today() first_day = datetime.date(event.get('year', today.year), event.get('month', today.month), 1) last_day = first_day + relativedelta.relativedelta(months=+1, day=99) return { 'year' : last_day.year, 'month': last_day.month, 'day': last_day.day }
今回は、日付操作用のdateutils
モジュールを利用します。
- 入力に年月を指定
- 省略した場合は当日の年月をデフォルト値に設定
- 戻り値に翌月末日の年月日を返却
- 2018年12月なら、2019年1月31日
外部モジュールのインストール
dateutils
モジュールをインストールします。
ターミナルから、GetLastDayOfNextMonth
ディレクトリに移動してインストールします。
$ cd GetLastDayOfNextMonth/ $ pip-3.6 install dateutils -t .
-t
はどこにインストールするかのターゲットを、.
はカレントディレクトリを意味します。
必要なモジュールがインストールされました。
ローカル上のLambda関数を実行
正しく動作するか、ローカル上で確認をします。
- [Local Functions] 内のLambda関数getLastDayOfNextMonthを右クリックしてメニュー表示
- [Run] - [Run Local] を選択
- [Payload] ペインに入力値を設定して [Run] ボタンをクリック
Payload
{ "year": 2018, "month": 12 }
Response
{ "year": 2019, "month": 1, "day": 31 }
正しく表示されました。
AWS上でLambda関数を実行
ローカル上のLambda関数をAWS上にデプロイして実行します。
デプロイ
- [Local Functions] 内のLambda関数getLastDayOfNextMonthを右クリックしてメニュー表示
- [Deploy] を選択
Lambda関数のリモート実行
- [Local Functions] 内のLambda関数getLastDayOfNextMonthを右クリックしてメニュー表示
- [Run] - [Run Remote] を選択
AWS Lambdaコンソール画面上で、モジュールがデプロイされていることが確認できます。
参考
- AWSドキュメント