claudia.js使ってAWS lambdaはじめました
いろいろ調べてみたら、claudia.jsを利用すると簡単にAWS lambdaを利用できるようです。
とはいうものの、ほんとにはじめの一歩になるのでかなり苦労しました。
例によって、実行環境はcloud9を利用します。
cloud9でのワークスペースの作成
テンプレートにpython用を選択して作成すること。
最初はなんでもいいやということで、blankを選択したのですが、AWS用CLIコマンドをインストールするのに、pipを利用します。
その際に、Python.hが必要になるのですが、blankには入っていませんでした。
それで、ググってみると、sudo apt-get install python2.7-devをすればいいよとあるのですが、なぜかそんなパッケージは見つからないと出てきます。
なので、最初からpython用のテンプレートを選択することによりすんなりと先に進めます。
nodeの確認
python用のテンプレートを利用しても、nvmやnodeはインストールされています。
ところが、バージョンを確認すると、v4.7.3がインストールされています。
AWS lambdaを調べてみると、4.3.2(と0.10.36)しかサポートされていないため、念のため、バージョンを合わせておきます。
$ nvm install 4.3.2 $ nvm alias default 4.3.2
AWS CLIの設定
AWSのページで先にユーザを作成し、アクセスキーとシークレットキーを生成しておきます。
管理ポリシーしは以下の3つを指定しておいてください。
- AWSLambdaFullAccess
- IAMFullAccess
- AmazonAPIGatewayAdministrator
https://aws.amazon.com/jp/developers/access-keys/aws.amazon.com
aws configureで対話形式で設定できます。
$ aws configure AWS Access Key ID [None]: 「アクセスキー」 AWS Secret Access Key [None]: 「シークレットキー」 Default region name [None]: ap-northeast-1(東京) Default output format [None]: json
上記操作により、以下の2つのファイルが作成されます。
~/.aws/credentials
[default] aws_access_key_id =「アクセスキー」 aws_secret_access_key = 「シークレットキー」
~/.aws/config
[default] output = json region = ap-northeast-1
claudia.jsのインストール
ここからは英語ですがチュートリアルがあります。
しかし、残念ながら私は英語苦手なのでこちらを参考にしました。
dev.classmethod.jp
npmでグローバルインストール
$ npm install claudia -g
プロジェクトの作成
$ mkdir web-api-sample $ cd web-api-sample $ npm init
とりあえず、全部エンターでちゃかちゃかやっちゃいましょう。
プロジェクトの dependency に Claudia API Builder を追加
$ npm install claudia-api-builder --save
web-api-sample/app.jsを以下の内容で作成。
var ApiBuilder = require('claudia-api-builder'); var api = new ApiBuilder(); module.exports = api; api.get('/hello', function () { 'use strict'; return 'hello claudia.js'; });
web-api-sample/package.jsonに"files": "*.js"を追加
{ "name": "web-api-sample", "version": "1.0.0", "description": "", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "dependencies": { "claudia-api-builder": "^2.4.0" } }
AWSにデプロイ
$ claudia create --name web-api-sample --region ap-northeast-1 --api-module app
結構時間かかります。
何かが間違えてるとエラーになります。
うまく行くと以下のようになります。
saving configuration { "lambda": { "role": "web-api-sample-executor", "name": "web-api-sample", "region": "ap-northeast-1" }, "api": { "id": "yfw8aqrorg", "module": "app", "url": "https://yfw8aqrorg.execute-api.ap-northeast-1.amazonaws.com/latest" } }
そしたら、urlに/hello(app.jsに追加したやつ)を付けてアクセスしてみましょう!
https://yfw8aqrorg.execute-api.ap-northeast-1.amazonaws.com/latest/hello
"hello claudia.js"
と表示されれば完成です!
お疲れ様でした!
ここで作成した関数は、AWSのlambdaのところで参照できます。
最初アクセスしたときは、スタートアップ画面しかでてこなかったので、適当な関数を一度登録したところ、表示されるようになりました。
右上にリージョン選択があるので、「東京」を選んでくださいね。