- 公開日:2018年12月02日
- 最終更新日:2018年12月05日
記事概要
PyCharm CEでAWS Toolkits for PyCharmを使ってAws lambdaをlocalで動かす方法を記載した記事です。
記事の対象者
- Aws lambdaにpythonアプリをdeployしたことがある
- PyCharmを使ってAws lambdaをアプリを実装したい
記事で学べること
- PyCharmでAws lambdaの開発環境を構築する
環境
- macOS Mojavve10.14
- Python 3.6.3
- aws lambda
- Docker Desktop version2.0.0.0-mac81
PyCharmインストール
公式サイトからPyCharm Communityをダウンロード します。もちろん、Professionalでも問題ありません。
PyCharm CEを立ち上げて適当なプロジェクトを作成します。
Pluginインストール
PluginでAWS Toolkitをインストールします。操作手順は以下の通り。
- Preference選択
- Plugins選択
- AWSで検索
- AWS Toolkitをインストール
AWS Toolkitのインストールが完了したら、次の作業に進みます。
AWS SAM CLI を導入
AWS SAM CLIが必要になります。
公式サイトに記載してある手順を実行します。
AWS SAM CLIの導入ついでに、aws-cliも最新にしておくとさらに良いです。
// 現在バージョン確認 $ aws --version aws-cli/1.16.47 Python/3.6.3 Darwin/18.0.0 botocore/1.12.37 // AWS CLI を最新バージョンに更新 pip install awscli --upgrade --user // 更新後のバージョン確認 $ aws --version aws-cli/1.16.67 Python/3.6.3 Darwin/18.0.0 botocore/1.12.57 // aws-sam-cli install pip install aws-sam-cli
公式サイトだとbrewのコマンドが記載されていますが、brewでpythonを導入していない場合、brewだとインストールに失敗しました。
なので、私はpipで導入しました。
自分の環境に合わせてaws-sam-cliを導入してください。
プロジェクト作成
準備が完了したので、プロジェクトを作成しましょう。
NewProjectを選択すると、AWS Serverless Applicationが出現しています。
択しプロジェクト名、SAM Templateから「AWS SAM Hello World」を選んで作成します。
*注意点1.pythonをVirtualenv環境で利用している場合は、Virtualenv Environmentを選択するようにします。公式サイトに詳しい説明が記載されています。
*注意点2.aws-sam-cliをpipで入れた場合は、pathを自分で設定する必要があります。
pathはwhichコマンドで確認できます。
which sam /Users/{username}/.pyenv/shims/sam
上記のpathをCIのpathに設定してください。
lambdaをdockerで動かす。
プロジェクト作成すると、デフォルトでlambdaプロジェクトが作成されています。
テスト環境で動かす場合はλマークをクリックします。[Run local app]でlambdaをdocker環境で動かすことができます。
2018-12-02 22:05:01 Found credentials in environment variables. 2018-12-02 22:05:01 Invoking app.lambda_handler (python3.6) 2018-12-02 22:05:01 Decompressing /var/folders/_k/82kvh_6s4bz0w8j8lhkp674c0000gn/T/2220729341239739084.zip Fetching lambci/lambda:python3.6 Docker container image................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................... 2018-12-02 22:17:48 Mounting /private/var/folders/_k/82kvh_6s4bz0w8j8lhkp674c0000gn/T/tmpco54kn1p as /var/task:ro inside runtime container START RequestId: c4106c2a-a762-4881-90c1-d3abf01a9a96 Version: $LATEST END RequestId: c4106c2a-a762-4881-90c1-d3abf01a9a96 REPORT RequestId: c4106c2a-a762-4881-90c1-d3abf01a9a96 Duration: 1444 ms Billed Duration: 1500 ms Memory Size: 128 MB Max Memory Used: 26 MB {"statusCode": 200, "body": "{\"message\": \"hello world\", \"location\": \"61.12.128.21\"}"}
jsonが取得できています。初回はdockerのイメージを取得してくるので、かなり時間がかかります。気長に待ちましょう。
virtualenvに対応
プロジェクト毎に使用パッケージをvirtualenvで隔離します。lambdaAPIは量を作るケースが多いので、virtualenvは必須です。
ターミナルで作業します。
// プロジェクトルートへ cd project_root // 仮想環境(virtualenv)の構築 $ virtualenv --python="`which python`" virtualenv // virtualenvのactivate source virtualenv/bin/activate (virtualenv)$
コマンドをvirtualenv name のようにして名称をつけても問題ありません。
あとは、PyCharm → Preferences → Project Interpreterでaddボタンを押して作った仮想環境を設定すればOKです。
まとめ
AWS Toolkitを使うと、間違いなく生産性は上がります。
一日で設定可能なので、是非利用しましょう。
WEB開発者はもちろん、機械学習開発者にもおすすめです。
次は、testコードと本番deployと機械学習のmodel APIを試してみようと思います。
以上です。
0 件のコメント:
コメントを投稿