LoginSignup
0
1

More than 3 years have passed since last update.

Serverless Frameworkを使ったLambda+Pythonのローカル開発環境を構築

Posted at

Windows上にServerless Frameworkを使ったLambda+Pythonのローカル開発環境を構築した時のメモ。実際にAWSにデプロイせずにローカルで単体テストまでできる環境を構築します。

Pythonのインストール

本家のWindows用ダウンロードサイトから最新版(執筆時点では3.8.1)をダウンロードし、実行する。

最初の画面で「Add Python 3.8 to PATH」にチェックを入れて「Install Now」で標準インストールする。最後の画面で「Disable path length limit」をクリックして、パス文字列長の制限を解除しておく。

>python --version
Python 3.8.1

バージョンが正しく表示されればOK。

pipenvのインストール

Pythonのパッケージ管理システムpipを使ってインストールする。

>pip install pipenv
(略)
Successfully installed appdirs-1.4.3 certifi-2019.11.28 distlib-0.3.0 filelock-3.0.12 pipenv-2018.11.26 six-1.14.0 virtualenv-20.0.1 virtualenv-clone-0.5.3

>pipenv --version
pipenv, version 2018.11.26

Node.jsのインストール

Serverless FrameworkはNode.jsで作られているため、Node.jsのインストールをする。

本家のダウンロードサイトから最新版のWindows用インストーラー(執筆時点では12.15.0)をダウンロードし、実行する。
オプションは特に変更しないでデフォルトのままインストールする。

>node --version
v12.15.0

Serverless Frameworkのインストール

Node.jsのパッケージ管理システムnpmを使ってインストールする。

>npm install -g serverless
(略)
+ serverless@1.63.0
added 527 packages from 335 contributors in 21.542s

>sls --version
Framework Core: 1.63.0
Plugin: 3.3.0
SDK: 2.3.0
Components Core: 1.1.2
Components CLI: 1.4.0

プロジェクトの作成

Serverless Frameworkのプロジェクトを作成。テンプレートはAWSのPython3用。

>sls create -t aws-python3 -p helloworld
(略)
Serverless: Successfully generated boilerplate for template: "aws-python3"

-tは使用するテンプレートの指定。AWS上のLambdaでPython3を使って開発するのでaws-python3を指定する。
-pはプロジェクトディレクトリのパス(-nを指定しなければ、そのままプロジェクト名にもなる)

カレントパスの下にhelloworldというプロジェクトディレクトリが作成され、Serverless Frameworkの設定ファイルserverless.ymlとLambda関数の実装が書かれているhandler.pyと.gitignoreが作成される。

Python仮想環境の作成

プロジェクトごとにPythonライブラリを管理するため、プロジェクトディレクトリの中に入り、このプロジェクト用の仮想環境を作る。

>cd helloworld
>pipenv install
Creating a virtualenv for this project…
(略)
Successfully created virtual environment!
(略)
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.

サンプル関数の実行

テンプレートに最初から定義されているhelloという名前のLambda関数をローカル実行してみる。

>sls invoke local -f hello
{
    "statusCode": 200,
    "body": "{\"message\": \"Go Serverless v1.0! Your function executed successfully!\", \"input\": {}}"
}

handler.pyに記述されたhello関数が実行され、レスポンスが返った。
invoke localで実行しているため、ローカル実行となる。

これでひとまずLambda + Pythonでローカル開発する環境が完成。

0
1
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
0
1