2018年12月2日日曜日

【python】PyCharm CEでAWS Toolkits for PyCharmを使う

  • 公開日: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も最新にしておくとさらに良いです。

terminal

// 現在バージョン確認
$ 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コマンドで確認できます。

terminal

which sam

/Users/{username}/.pyenv/shims/sam

上記のpathをCIのpathに設定してください。

lambdaをdockerで動かす。

プロジェクト作成すると、デフォルトでlambdaプロジェクトが作成されています。

テスト環境で動かす場合はλマークをクリックします。[Run local app]でlambdaをdocker環境で動かすことができます。

terminal

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は必須です。

ターミナルで作業します。

terminal

// プロジェクトルートへ
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を試してみようと思います。

以上です。

参照サイト


この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加
Related Posts Plugin for WordPress, Blogger...