モバイルから欲しい情報があって、サーバー立てるのも大げさだし最近良く聞くLambdaを使ってみることにしました。ちょっと調べたらいろいろわかりやすい情報が出てきて本当に助かりました。
手元で動かしてテスト
この二つを参考にしました。とりあえず、npmで必要なライブラリをインストールして、手元でテストをして動作確認します。index.jsはこういう感じに書きます。
index.js
exports.handler = function(event, context) { … };
動作確認はこんな感じでやりました。本体ファイルはindex.js
です。それを取り出して、仮のeventとcontextを渡して実行しています。
test.js
var lambda = require(‘./index.js’);
var event = { “userId”: “morizotter” };
var context = { invokeid: ‘invokeid’, succeed: function(json) { console.log(“succeed: ” + JSON.stringify(json, null, 2)); }, failed: function(err, message) { console.log(“err: ” + err + ” message: ” + message); }, done: function(err,message){ return; } };
lambda.handler(event, context);
これをzipにしてアップロードします。必要なのはnpmのモジュールと実行ファイルです。
zip.sh
zip -r func.zip index.js node_modules
アップロードしたら、コンソールで動作確認して、API Gatewayにつないでみました。
こちらの記事を参考にさせていただきました。
なんかおかしい
AWS上では成功していたのに、「Task timed out after 3.00 seconds”」とか、「“Process exited before completing request”」とか出てきて、手元からやると成功しない。Task timed out after 3.00 secondsの対処法 | Hackを読んでTime outを長くしてみたけれどダメ。そういえば、testの時にはJSON設定してたけど、実際はGETしてるから違うやということで調べて、
を読んで解決しました。
pawで疎通確認
APIGateWayではAPIキーのみの認証を選択したんだけれど、キーはx-api-key
でヘッダにセットすればよさそう。ところで、Pawは疎通確認にはとてもおすすめ。デザインも綺麗だし、通信の内容が分かりやすく表示されます。通信をグループ化してファイルに保存できるので後で確認も楽です。CURLでもいいけど、Pawがいいと思うなぁ。
良かった良かった^^