[AWS]Lambdaで遊べるようにしてみた！！！[WEBアプリが作りたい:下準備編]


どうも、吉田です。今回は　aws Lambda をテーマに頑張っています。

---

###Lambda
![reinvent_launch-page_illustration_lambda.png](https://qiita-image-store.s3.amazonaws.com/0/52141/71dc6f3c-c4fd-05df-988e-b5635f4d6c30.png "reinvent_launch-page_illustration_lambda.png")


イベントドリブンでコードを走らせてくれる便利なやつ！
環境は今流行りのNode.js     

####今回のゴールはこちら！！
![開発合宿成果物_吉田・千葉.png](https://qiita-image-store.s3.amazonaws.com/0/52141/5bd1a4d6-c33a-46a1-2f3a-2194a2e6958b.png "開発合宿成果物_吉田・千葉.png")

```text:詳細
1. Macbookのマイクで拾った音声をJuliusを通し、文字列へと加工します。
2. Raspberry Piを経由し、AWS SNSへ音声情報を渡す
3. SNSがトリガーとなりLambdaを発火
4. LambdaがDynamoDBへ情報を書き込み、SNSを発火させ指定のGmailへ通知する
　　→この時、「特定のキーワード」を認識した際はEC2インスタンスの起動/停止を行う
```
こんな構成にチャレンジしてみました！
（自分はLambda部分を担当したので今回の記事はLambdaです。）
ラズパイは今回触っていません・・・

###まずLambdaを試してみる
まずここからでした。ほんとそんなレベル・・・

今回の構成を作るにあたり使用するAWSリソースは以下の通りです。
![AWS_マネジメントコンソール.png](https://qiita-image-store.s3.amazonaws.com/0/52141/4c4e00bd-c10f-46cc-eee0-ee038f1d1076.png "AWS_マネジメントコンソール.png")

---

###❶IAMロールの作成
lambdaが他のAWSリソースを操作するためのIamロールを作成します。

![IAM_Management_Console.png](https://qiita-image-store.s3.amazonaws.com/0/52141/bd9bba56-ad0e-8562-eb68-ae6e300d52de.png "IAM_Management_Console.png")


![3.png](https://qiita-image-store.s3.amazonaws.com/0/52141/561dd0e9-da6a-d6b1-411d-00eccbd0ba4d.png "3.png")

![4.png](https://qiita-image-store.s3.amazonaws.com/0/52141/75ce7461-aad6-46bd-b43f-b1642f054676.png "4.png")
権限は操作に必要なものを使用してください（今回は面倒なのでPowerUser当てています。）

![5.png](https://qiita-image-store.s3.amazonaws.com/0/52141/7f77233e-5960-56b9-d9b8-43f79c23195a.png "5.png")

確認して作成。

---

###❷DynamoDBのテーブルを準備する
SNSで受け取ったデータを入れるためのDynamoDBを準備します。
![DynamoDB_·_AWS_コンソール.png](https://qiita-image-store.s3.amazonaws.com/0/52141/8fff5398-9b57-e926-d472-c4599d04a69f.png "DynamoDB_·_AWS_コンソール.png")

![DynamoDB_·_AWS_コンソール_2.png](https://qiita-image-store.s3.amazonaws.com/0/52141/ab63b73f-8fbf-cf37-9838-c54b75ed0b38.png "DynamoDB_·_AWS_コンソール_2.png")

![DynamoDB_·_AWS_コンソール_3.png](https://qiita-image-store.s3.amazonaws.com/0/52141/bae08ba5-f5fa-2875-3aa8-4695e4cc4d8b.png "DynamoDB_·_AWS_コンソール_3.png")

![DynamoDB_·_AWS_コンソール_4.png](https://qiita-image-store.s3.amazonaws.com/0/52141/733359b3-e387-9806-a578-c8766a4c4fd0.png "DynamoDB_·_AWS_コンソール_4.png")

![DynamoDB_·_AWS_コンソール_5.png](https://qiita-image-store.s3.amazonaws.com/0/52141/53fd0a23-39f4-55e6-ead9-5cb66bf99df7.png "DynamoDB_·_AWS_コンソール_5.png")

![DynamoDB_·_AWS_コンソール_6.png](https://qiita-image-store.s3.amazonaws.com/0/52141/4ed1667c-2ce0-b3b2-c7eb-bb59f3a5579d.png "DynamoDB_·_AWS_コンソール_6.png")

![DynamoDB_·_AWS_コンソール_7.png](https://qiita-image-store.s3.amazonaws.com/0/52141/1bba6c97-0d04-0e11-a4d6-ee5a0721c437.png "DynamoDB_·_AWS_コンソール_7.png")

以上の操作でDynamoDBのテーブルを作成することができました。
NoSQL、イイですね！時代を感じます。

---

###SNSのトピックを作成する
lambdaで使用するSNSのトピックを準備します。

![AWS_SNS.png](https://qiita-image-store.s3.amazonaws.com/0/52141/f57b0cec-a77d-6c88-1c86-c0a743751323.png "AWS_SNS.png")
トピックを作成します


![AWS_SNS_2.png](https://qiita-image-store.s3.amazonaws.com/0/52141/c3752fa0-43b0-bbce-03db-cf43d932d173.png "AWS_SNS_2.png")

トピックの名前と説明を記入してください

![AWS_SNS_3.png](https://qiita-image-store.s3.amazonaws.com/0/52141/a406a46f-57ca-92e0-d46f-c33f257b31f2.png "AWS_SNS_3.png")

lambdaと連携するにAWSLambdaを選択します

![AWS_SNS_4.png](https://qiita-image-store.s3.amazonaws.com/0/52141/af6d1f16-6b42-54c5-5bdc-8260712b7455.png "AWS_SNS_4.png")
Email宛に送信するにはEmailを選択し、メールアドレスを記入してください。

---

###まとめ
以上でlambdaを使用するための準備が整いました！
次はいよいよ実際にNode.jsをコーディングしていきたいと思います！