はじめに
Node.jsとAWSを使って画像検索 BOTを作ってみた~前編~ の続きの記事です。
今回はインフラ寄りの話題となります。
AWS lambda へ資材アップロード
AWS アカウントは既に持っている前提で話を進めます。
まず、資材を zip で固めます。
今、このような構成になっていると思います。
line_bot_test
├─ index.js
└─ node_modules/
line_bot_test 内で以下のように zip コマンドを実行してください。
zip -r line_bot_test.zip .
【注意】
zipで中身だけ固めるようにしないと、アップロード時にエラーとなります。
https://qiita.com/TLamp/items/29658cc8fdc1d73e3f49
lambda 関数作成
「一から作成」を選択し、関数名、ランタイムを入力します。
今回は関数名は line_bot_test
としました。
ロールは「カスタムロールの作成」を選択すると、このような IAM ロール作成画面に飛ばされると思います。
今回はロール名も特にいじらず lambda_basic_execution
のまま「許可」をクリックします。
そうすると元の lambda 画面に戻るので、「関数の作成」をクリックします。
【ロールに関する補足】
- 既にロールを作成している場合はそれを流用してもOKです。
- 今回作成したロールは、 CloudWatch に関数の実行ログを残すための必要最低限の権限となっています。
画面遷移後、各種設定していきます。
Designer
トリガーの追加で、API Gateway をクリックします。
トリガーの設定
処理が終わると API エンドポイントが表示されます。この後使うので控えておきます。
終わったら Designer の「line_bot_test」アイコンをクリックし、関数の設定を行います。
関数コード
コードエントリタイプ
.zipファイルをアップロード を選択し、先程固めた zip ファイルを選択ランタイム
今回は Node.js 6.10ハンドラ
メインスクリプトファイル名.main処理の関数
のように指定します。
今回は index.js 内で exports.handler としているのでindex.handler
となります。
環境変数
ここで設定した環境変数は、lambda 関数内で process.env['環境変数名']
でアクセスできます。
今回は ch_access_token、ch_secret、reply_url の3つを設定します。
ch_access_token と ch_secret
LINE チャンネルの「アクセストークン」、「Channel Secret」をそれぞれ設定します。
こちらからログインして確認オナシャス。
https://developers.line.me/consolereply_url
https://api.line.me/v2/bot/message/reply
と設定してください。
基本設定
適当にメモリ 256 MB、タイムアウト1分に設定しました。
ここまでやったら右上の「保存」をクリックします。
LINE チャンネル設定
Line developers の LINE チャンネル設定の「Webhook URL」に API エンドポイントを設定します。
接続確認をすると、なんかエラーっぽいのが出ますがちゃんと動作しますので大丈夫です。
以上で完成です!
LINE で友達追加して、いろいろ検索してみてください!
前編の最初の gif のような動作が確認できると思われます。
最後に
軽い気持ちで始めたんですが、なかなか満足の行くものが出来たかなと思ってます。
注意事項を挙げるとするとこの辺かなぁ。
- 画像検索はセーフサーチオフになっているので、変な言葉を検索しないほうが良いと思います。
- CloudWatch に検索ログが残るので、他の人がログを見るかも知れない環境では気をつけてください。
紳士な方々には全く問題ないと思いますが、念のため。