久しぶりに、LINE BOTの設定を除いていると、、、
なんと、
LINE BOTのServer IP Whitelistが任意になっていました。
つまり、設定しなければ、どのホストからもアクセス出来ちゃう!
つまり、諦めていた、
AWSのAPI Gateway+Lambdaのサーバーレスで、BOTのサーバーが作れるわけです。
で、適当に作った「なんでも頭におをつけて返すBOT」。
流れとしては、
- API Gatewayのエンドポイントを作る
- Lambdaのファンクションを作り
- APIGatewayとに、作ったLambdaを紐付ける
- LINEのコンソールで、API GatewayのURIをいれる
基本的な流れは、これで出来るはず。
書いたLambdaのファンクションは以下の様な感じ
var https = require('https'); exports.handler = function(event, context) { if (!event.result){ return context.fail("fail"); } var msg = event.result[0]; var data = JSON.stringify({ to: [msg.content.from.toString()], toChannel: 1383378250, eventType: "138311608800106203", content: { contentType:1, toType:1, text: "お"+msg.content.text } }); var opts = { hostname: 'trialbot-api.line.me', path: '/v1/events', method: 'POST', headers: { "Content-type": "application/json; charset=UTF-8", "X-Line-ChannelID": "CHANNEL_ID", //自分のChannel ID "X-Line-ChannelSecret": "CHANNEL_SECRET",//自分のChannel Secret "X-Line-Trusted-User-With-ACL": "MID" //自分のMID } }; console.log(data); //リクエスト送信 var req = https.request(opts, function(res){ console.log('statusCode: ', res.statusCode); console.log('headers: ', res.headers); res.on('data', function(d){ console.log(d.toString()); }).on('error', function(e){ console.log(e.stack); }); }); req.write(data); req.end(); };
あとは、Dynamoとかにデータいれて、データ見て処理変えられたりしたら、
おぉ、夢は広がりますなぁ。
ココまでのものが、サーバーレスで出来てくるわけですよ。
AWSは無料証明書も東京リージョンで始めましたし、もう、AWSにどっぷりですよ。
サーバー屋のつもりが、どんどんとレイヤー上がっていきます。
もう、MySQLを1から立てるなんてめんどくせーという自分がいます。。。