Facebook Twitter Google Maps RSS
Home Webアプリ AWS Lambdaでサーバー要らずの問い合わせフォーム
formats

AWS Lambdaでサーバー要らずの問い合わせフォーム

こんにちは。陽気なシステム屋のうっちーです。

前回は、S3 SDK for Javascriptを使用して、問い合わせフォームに書かれた内容をS3にアップロードする仕組みを作りました。

今回は、AWS Lambdaを使用して、アップロードされたファイルに対して処理を行う仕組みを作ります。

AWS Lambdaはre:Invent 2014で発表された新機能です。AWSリソースに対して何らかのイベントが発生したタイミングでnode.jsのプログラムを動かすことができます。

AWS Lambdaはまだプレビューサービスなので、東京リージョンで使用することができません。「US West (Oregon)」を選びます。

「 Get Started Now 」をクリックします。

Lambda Functionの作成画面が表示されます。ここにnode.jsのコードを書いていきます。サンプルで入っているコードをそのまま使えるのですが、一箇所だけ書き換えます。
19行目の

console.log(‘CONTENT TYPE:’,data.ContentType);

console.log(‘DATA BODY:’, data.Body);

に書き換えましょう。これにより、テキストファイルの内容がconsole.logされるようになります。


次に「Create/Select Role」のボタンをクリックします。

AWS LambdaのFunctionを初めて作成する際には、Lambda実行用のIAMロールを作成する必要があります。

このロールではS3のBucketを読み取る権限が必要です。
今回特に修正する必要はありませんので、そのまま「Allow」をクリックします。
戻った画面で「lambda_exec_role」を選択して、「Create Lambda function」をクリックすると以下の画面へ遷移します。

Lambda Functionは作成されたのですが、このFunctionを起動するトリガー(event source)を設定しなければなりません。
「Configure event source」ボタンをクリックします。

S3の特定のBucketに対するイベントとAWS Lambda Functionを関連付ける画面が表示されます。
初めてS3 event notificationとLambdaを関連付ける際には、LambdaをトリガーするためのIAMロールを作成する必要があります。
ここも “lambda:InvokeFunction” できれば良いので、既定値のまま「Allow」をクリックします。
作成した「lambda_invoke_role」を選択し、前回作成した問い合わせフォームの宛先Bucketを選んで「Submit」をクリックします。

これで、AWS Lambda Functionの設定が全て完了しました。
早速動作を確認してみましょう。

前回作成したフォームよりSubmitします。

すると、Lambdaの管理画面のグラフに変化が現れます。

「Request duration」の「logs」のリンクをクリックします。
すると、Lambda Functionの実行結果ログを表示できる画面が開きます。

ログを開いていくと、Lambda Functionが実行されたことがわかります。

もう少し実用的な内容に書き換えてみましょう。
S3に書き込まれたファイルの内容をSlackへPOSTするようにします。

requestモジュールとスクリプトを1つのzipファイルにまとめてアップロードします。

駆け足になってしまいましたが、AWS LambdaとS3 Event Notificationsを組み合わせて、専用サーバーが不要の問い合わせフォームを実現してみました。

※アイエンターではAmazon Web Services(AWS)を用いたサイト構築、ソリューション提案の実績が多数あります。様々なサービスに対する豊富な知見をもとに最適なご提案を行うことが可能です。お気軽にアイエンターへご相談ください!

Tags:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*