こんにちは。技術3課の森です。
今までコーヒーはちょっと甘めしか飲めませんでしたが、最近はブラックで飲めるようになりました。大人に近づいた気がします。
Lambd Functionの環境構築
個人的に過去Lambda Functionを作成したときは、Javaで作成することが多かったですが、最近は、Pythonで作るようにしているため、開発環境を整える必要があります。
今回は、現在利用している開発環境を以下の手順でご紹介します。
- virtualenvのインストール
- python-lambda-localのインストール
- lambda-uploaderのインストール
事前情報
- PC: Mac Book Pro Late 2016 13inch
- OS: macOS Sierra(10.12.3)
virtualenvのインストール
まずはじめに、virtualenvのインストールを行います。
$ sudo easy_install pip $ sudo pip install virtualenv
python-lambda-localのインストール
次にpython-lambda-localのインストールを行います。
このモジュールはローカルでコードを実行する時に使うコマンドです。
$ sudo pip install python-lambda-local
lambda-uploaderのインストール
最後にlambda-uploaderをインストールを行います。
このモジュールはAWS Lambdaに開発したコードなどをデプロイするコマンドです。
$ sudo pip install lambda-uploader
開発時に必要なもの
上記の手順で、virtualenv / python-lambda-local / lambda-uploaderがインストールされ、開発環境が整いました。
次は実際に開発を始めるにあたり必要なファイルの準備手順を紹介します。
- requirements.txt
- event.json
- lambda.json
pipモジュールが書かれたファイルです。
記述方法としては、「<モジュール名>==<バージョン>」となります。
例としてboto3をpipモジュールとしてインストールした場合を書きます。
boto3==1.4.4 botocore==1.5.7
また、以下のコマンドを実行することでも作成してくれます。
$ pip freeze > requirements.txt
イベント起動する場合などに利用します。
今回はイベント起動はしないので、中身は以下のようにしておきます。
{}
AWS Lambdaの設定ファイルになります。
Management Consoleで入力するような内容を書きます。
以下に例を書きます。
{ "name": "LambdaFunctionName", "description": "Description of LambdaFunciton", "region": "ap-northeast-1", "handler": "lambda_function.lambda_handler", "role": "arn:aws:iam::111111111111:role/MyLambdaExecRole", "timeout": 300, "memory": 128 }
項目名 | 説明 |
name | Lambda関数の名前 |
description | Lambda関数の説明 |
region | 実行するリージョン |
handler | Lambdaのハンドラ名 |
role | Lambda関数に付与するロール |
timeout | Lambda関数の実行タイムアウト値 |
memory | Lambda関数に付与するメモリサイズ |
Lambda Functionの実行とデプロイ
インストールは終わって環境ができたので、動作させて、デプロイしていきます。
それでは、実行コマンドを書いていきます。
ローカルでLambda Functionを実行
まずはコマンド実行例を紹介します。
$ python-lambda-local -f
引数 | 説明 |
<Handler> | Lambda関数のハンドラー Lambda関数で一番最初に実行してほしいメソッド名 |
<Python File Name> | Pythonファイル名 |
<JSON File(Event)> | ハンドラーに渡すイベント情報をJSON形式でファイルに記載しておき、そのファイルパスを指定 |
ローカルからのデプロイ
コマンド一発でデプロイができます。
$ lambda-uploader λ Building Package λ Uploading Package λ Fin
これで、Lambda関数をAWSにデプロイすることができました。 実行結果のスクリーンショットを確認してみましょう。 以上で作業完了です。
まとめ
これまで、ローカルで開発後、実行する度にAWSへデプロイしてから動作確認する手順には時間を要しましたが、今回ご紹介したモジュールを利用することで、ローカルで実行できたり、簡単にデプロイすることが可能となります。
Lambdaをデプロイ可能ですが、現段階で機能が提供されていないためトリガーの設定はできません。
このあたりについては、また別の記事を書いてみる予定です。
また、もしこんなことすればもっと楽になるとかあれば、教えていただけると幸いです。