AWS Toolkits for PyCharmを試してみた

re:invent 2018 のKeyNote内でAWS toolkitにて愛用のPyCharm対応が可能になったので試してました。

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">ここで、 AWS Toolkit for popular IDEs をアナウンスします！主要な統合開発環境に、AWSの機能を容易に活用できるようにするものです。 <a href="https://twitter.com/hashtag/reInvent?src=hash&amp;ref_src=twsrc%5Etfw">#reInvent</a> <a href="https://t.co/INyfRFQoga">pic.twitter.com/INyfRFQoga</a></p>&mdash; AWS / アマゾンウェブサービス (@awscloud_jp) <a href="https://twitter.com/awscloud_jp/status/1068200881466667008?ref_src=twsrc%5Etfw">2018年11月29日</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

[AWSの公式ブログ](https://aws.amazon.com/jp/blogs/news/new-aws-toolkits-for-pycharm-intellij-preview-and-visual-studio-code-preview/)の通りですが一瞬、すっと分からない部分があったので手順を残しておきました。

# インストール

## プラグインのインストール
IDEA Plugin RepositoryからPyCharmのプラグインとして導入が可能な様なので、早速「Preference..＞Plugins」から、AWSで検索すると「AWS Toolkit」があるのでINSTALLボタンをクリックして導入。（下図）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/e50c3bb6-2318-1e91-2d96-b2e5bcb2cc5f.png)

## CLIのインストール

前述のプラグインはAWS Serverless Application Model(SAM) CLIなるものを裏で使うようなので、[公式サイト](https://aws.amazon.com/jp/serverless/sam/)を見ると分かりやすくコマンドが書いてあるのでそのままコピペ導入。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/824173a6-6b7c-b74f-42c7-f5fdbb02f671.png)
私はMacなので、以下のコマンドでインストールしました。

```
brew tap aws/tap
brew install aws-sam-cli
```
PyCharmの再起動が必要なのでやっておきましょう。

# サンプルプロジェクトの作成

では、必要なツールの導入が終わったので、何か作ってみましょう（というより、ボイラープレートがあるのでそのまま実行してみる）。
- **NewProject**を選択すると、**AWS Serverless Application**が出現しているので、選択しプロジェクト名、**SAM Template**から好きなの（一旦「AWS SAM Hello World」）を選んで作成。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/8c278865-3704-d936-c33c-21ac6bf34395.png)

すると、サーバーレスサプリ構築の最低限のファイルは自動生成（まあIDEなので当然だけと）されている。
下図の様にlambda関数の横っちょにλマークが付いてる。ここから**ローカル実行**するらしい。クリック。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/27178579-dcc5-464f-b3cb-b992c1620800.png)

ここでプチトラップがあるので、メモ。

* 当然だがAWSのCredentialを設定しておかないと行けない。PyCharmの右下の隅に**AWS Connection Setting**なるものがしれっと表示されており、ここからregionやCredentialが簡単に切り替えられる。（普段何が表示されてたっけ・・・）
`~/.aws/credentials`を読み込んでいるようで、PyCharm上からも編集出来るが、反映するにはPyCharmを再起動しないと行けないので面倒くさい・・・

* Docker起動しとかなきゃいけないんですね。MacOS上ので生Dockerは気が進まないけどインストールしておきましょうか。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/1308daee-d140-616e-cb30-3e144da02a00.png)

さあ、そうすると先に進めて、lambda関数の実行時に渡す引数を何にするか選んだりするウィンドウが開く。適当に「AWS Proxy」あたり選んで実行してみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/f13c3c59-b408-8886-6c15-1e0f67fac74a.png)


プチトラップ。

* 多分、動かない。パッケージ足りない場合は、ソース見ると`import requests`とあるので、`requests`は入れておきましょう。

でもやっぱり嬉しいのは、DEBUGモードで実行すると、簡単にBREAK実行出来ることですね。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/0152bfe3-8e21-63f9-64f8-49930c4fbd9c.png)

# AWSにデプロイしてみる。

つぎは勿論AWSにデプロイしてみたいわけで、既に存在している`template.yml`ファイルを右クリック「Deploy Serverless Application」してみましょう。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/b1072151-d2e5-f7d1-5fc2-0401048e913a.png)

AWS CloudFormationのスタック名や、lambda関数の環境変数、デプロイパッケージを保存するS3バケット名（ここでバケット作成可能）などをここで設定しておけるので、よしなに入力してDEPLOYしてみましょう。

1分ほどで、lambda関数がデプロイされます。PyCharmの左下あたりに「AWS Explorer」ウィンドウがあるので、見てみるとlambda関数が作成されています！

![image.png](https://qiita-image-store.s3.amazonaws.com/0/70466/45d39ec3-3147-1bcc-dcf5-5c8146eec977.png)

右クリックすると、リモート実行ボタンなるものがあるので、クリックすると、デプロイされたlambda関数が実行され、動作確認が可能になります。

# 所感
lambdaを使ったアプリが業務でも増えていく中で、開発効率向上は間違いなさそう。
でも野良lambda、野良バケットが量産されそうなので、どうやってガバナンスするかは課題ですね。