AWS Cloud9でLambda関数を作成〜デプロイ〜ローカルでテストまで 

# 概要
[Serverless Advent Calendar 2017](https://qiita.com/advent-calendar/2017/serverless) の17日目です。
先日AWSよりCloud9(クラウドベースのIDE)がリリースされました。
謳い文句の一つとしてサーバレスアプリケーションの迅速な開発が挙げられており、例えばLambda関数のローカルテスト/デバッグが可能です。というわけで、ざっと試してみます。

# Cloud9セットアップ

AWS Cloud9
https://us-west-2.console.aws.amazon.com/cloud9/home/product

`Create environment`をクリック
![Welcome to AWS Cloud9 2017-12-17 22-30-53.png](https://qiita-image-store.s3.amazonaws.com/0/190125/87a4ef1a-9105-a122-ff33-249fac244c03.png)

Cloud9の`環境名(Name)`を入力します。（後から変更可能)
![Create a new environment 2017-12-17 22-32-08.png](https://qiita-image-store.s3.amazonaws.com/0/190125/4509bff0-a437-4844-0357-8c4e77732e73.png)

環境設定を設定し、`Next step`をクリック。今回は全てデフォルトで進めます。
 - Environment type: 新規EC2 or SSHをサポートするLinuxサーバ(既存EC2など)に相乗り
 - Cost-saving setting: 一定時間IDEを利用しない場合に、EC2を自動停止する設定(`After 30 Minutes`でIDEのタブを閉じて30分後に自動停止)
 - Network settings: どのVPC/Subnetにたてるかの設定
![Create a new environment 2017-12-17 22-32-56.png](https://qiita-image-store.s3.amazonaws.com/0/190125/aa6c6464-0438-ee1a-ba04-60486f764b72.png)

最終確認をし、`Create environment`をクリック
![Create a new environment 2017-12-17 22-33-49.png](https://qiita-image-store.s3.amazonaws.com/0/190125/2cede2bf-c28d-d138-dc7c-3890d34c9c2b.png)

環境構築が開始されるので、しばらく待ちます(1,2分)
![test9 - AWS Cloud9 2017-12-17 22-34-34.png](https://qiita-image-store.s3.amazonaws.com/0/190125/6ee28b92-4f83-bc84-26bd-55c2aa47f418.png)

# Lambda関数の作成

`Create Lambda Function..`をクリック
![test9 - AWS Cloud9 2017-12-17 22-57-48.png](https://qiita-image-store.s3.amazonaws.com/0/190125/caac73af-3228-4fc8-36e4-f2b2b0ce46a0.png)

Lambda関数名を入力し、`Next`をクリック
![test9 - AWS Cloud9 2017-12-17 22-59-13.png](https://qiita-image-store.s3.amazonaws.com/0/190125/7459e901-7b40-8bfc-d307-c4f72ff6e073.png)

今回はお試しで、`Python3.6`の`hello-world-python3`を選択し、`Next`をクリック
![test9 - AWS Cloud9 2017-12-17 23-00-43.png](https://qiita-image-store.s3.amazonaws.com/0/190125/edc469c5-e1ea-44c8-6d81-ed8313134d52.png)

関数のトリガー設定をします。`API Gateway`が選択可能ですが、今回は無しで進めます。
![test9 - AWS Cloud9 2017-12-17 23-03-11.png](https://qiita-image-store.s3.amazonaws.com/0/190125/6bf932e4-0371-eef6-c240-eb5233b76dfa.png)

メモリ、サービスロールもデフォルトのまま進めます。
![test9 - AWS Cloud9 2017-12-17 23-04-28.png](https://qiita-image-store.s3.amazonaws.com/0/190125/97d59fd0-fc71-805e-9428-e013a780e265.png)

最終確認をし、`Finish`をクリック
![test9 - AWS Cloud9 2017-12-17 23-05-27.png](https://qiita-image-store.s3.amazonaws.com/0/190125/0defa649-d098-76f7-8528-1d74bf7142ee.png)

こんな感じで表示されました。この時点で初回Lambdaデプロイは完了しています。
![test9 - AWS Cloud9 2017-12-17 23-06-38.png](https://qiita-image-store.s3.amazonaws.com/0/190125/32f58b48-cc09-b5f7-534e-bfcb60cb7f6c.png)

手動でデプロイする時は、上↑をクリックします。
![test9 - AWS Cloud9 2017-12-17 23-08-00.png](https://qiita-image-store.s3.amazonaws.com/0/190125/79a9368c-1c55-bbe6-08bf-9108e66dab2f.png)

# Lambda関数のテスト

テストをしてみます。`Run`をクリック
![test9 - AWS Cloud9 2017-12-17 23-09-14.png](https://qiita-image-store.s3.amazonaws.com/0/190125/367ce213-2b87-0859-8539-63eda14349c2.png)

Lambda(local/remote), API Gateway(local/remote)を選択可能です。
![test9 - AWS Cloud9 2017-12-17 23-10-23.png](https://qiita-image-store.s3.amazonaws.com/0/190125/4b82e218-f94d-ac5b-445c-dad8951433a8.png)

Lambda(local)で試してみます。テストイベントを入力し、`Run`をクリック。レスポンスが返ってきました。
![test9 - AWS Cloud9 2017-12-17 23-12-04.png](https://qiita-image-store.s3.amazonaws.com/0/190125/e71f17aa-b8c2-ef05-1282-f3ef41a411b6.png)

# 感想
ざっと使ってみましたが、Lambda開発が捗りそうですね。他の機能確認を含め、ガンガン使っていこうと思います。