2019.01.28
AWS Lambdaでサードパーティーモジュールを使うためには、モジュールをAWS Lambdaにアップロードする必要がある。 モジュールのアップロードはZipファイルかAmazon S3のみ対応しているので、今回はZipファイルでアップロードしてみる。
なお、AWS Lambda上でコードを編集しつつ、任意のZipファイルを任意のタイミングでアップロードすることはできないようなので注意が必要。
方法としては以下の2通りがある。
lambda_function.py
を追加してLambda関数を作っていく後者の方法だと、最初にサードパーティーモジュールを追加した後に他のモジュールを追加したりすることはできない。 サードパーティーモジュールを利用するようなAWS Lambda関数は全てローカルで開発して最後にAWS Lambdaにアップロードするのが良さそう。
# ディレクトリを作成
$ mkdir lambda_workspace
# ディレクトリに移動
$ cd lambda_workspace
# AWS Lambdaに呼び出されるハンドラを記述するファイルを作成
$ touch lambda_function.py
# -t:インストール先を指定してインストール
$ pip install pytz -t .
手に入れたディレクトリを先ほど作成したlambda_workspace
に入れる。
ディレクトリの中身だけを圧縮する必要があることに注意。
$ cd lambda_workspace
$ zip -r lambda_workspace.zip *
AWS Lambdaの関数編集画面の「関数コード」のエリアの「コード エントリ タイプ」を「.zip ファイルをアップロード」にして「アップロード」ボタンをクリックする。
先ほど作成したlambda_workspace.zip
を選択して、「保存」をクリック。
関数一式がAWS Lambdaにアップロードできた。
動作するかテスト。