どうも!アモーレkoooheiです。前回「Line botをAWS LambdaとAPI Gatewayでアモーレ!!- 実装編」では、リトルに言われて自分でアモーレをつくっちゃいました♪
と言っても街行くレディに声かけてもダメなので、Line botとAWSを組み合わせたですよ!
名付けて「ぼくのアモーレ」!!
今回はAWSで構築したシステムについて解説します。
はじめに
今回利用しているAWSサービスはAPI GatewayとLambda、そしてCloudWatchの3サービスとなります。
それではこれらのAWSサービスがどのような流れで機能しているかをもう少し説明します。
全体の流れ
まず、ぼくがアモーレに『こんにちは』と囁いた言葉はデータとして「API Gateway」へイベント通知され、そのまま「Lambda」へ送られます。(イベント通知)
そしてデータを受け取った「Lambda」はその情報をもとに送信用のデータを作成し、LINEサーバーへ送ります。
LINEサーバーは受け取った情報に記載されている送信先(ぼく)に対してメッセージを送り返します。(イベント送信)
また、「Lambda」から「CloudWatch」へ_console.log_モジュールを利用してログを出力しています。(log)
それでは各AWSサービスごとに見ていきたいと思います。
API Gateway
Lambda関数を実行するためのトリガーとなります。
API Gatewayで作成されたエンドポイントへデータを送るとそのデータはAPI Gatewayを経由してLambdaへ渡されます。
ここで作成されるエンドポイントは全てHTTPSになります。非暗号化(HTTP)エンドポイントはサポートしていません。
ちなみにLine botのCallback URLもHTTPS必須なのでちょうど良いですね。
また、Line botはPOSTでの通信になるのでMethodはPOSTにし、LineからアクセスできるようにSecurityはOPENにしています。
Lambda
Lambdaはサーバーへのプロビジョニングを行う必要がなくコードが実行できるAWSのサービスです。
まず、Nameで任意のLambda関数名を入力し、Descriptionでその関数についての説明を記載します。
Runtimeは実行環境ですので今回用いた言語である「Node.js 4.3」を選択します。
そしてExisting roleではLambdaを実行するための基本ロールである「lambda_basic_execution」を指定します。
MemoryはLambdaを実行するために割り当てるメモリサイズでTimeoutは処理にかける時間(秒)です。ここで指定した秒数を超えてしまうとタイムアウトとなり処理は途中で中断されてしまいます。
ここでは処理に要するメモリを128MBにし、時間は3秒間としています。
最後にVPCの項目ですが、ここはLambdaが自分の用意したVPC環境へアクセスを行いたい場合などに指定します。今回は必要ないので「No VPC」にします。
CloudWatch
Lambdaでログ出力を行うと自動的にCloudWatchへ吐き出されます。
今回の場合node.jsを利用しているのでconsole.logを使ってログ出力しています。
おわりに
以上がシステムについての解説です。「できるだけシンプルに、簡単に作れる」をモットーにしてるので極力設定する箇所を少なくしています。(細かい設定はよくわからんという話もありますが。。。)
「ぼく」と「アモーレ」は始まったばかりです。至らぬ点もあるかと思いますが、何卒暖かい目で見守っていただければ幸いでございますorz
関連
Line botをAWS LambdaとAPI Gatewayでアモーレ!!- 実装編
Line botをAWS LambdaとAPI Gatewayでアモーレ!!- code解説編
Line botをAWS LambdaとAPI Gatewayでアモーレ!!- システム解説編