はじめに
サーバレスアプリケーションを構築するためにClaudia.jsを利用する。
Claudia.jsは以下の特徴がある。
- AWSのAPI GatewayとLambdaを用いたREST APIを構築できる
- 構築に利用する環境は、Node.jsである
実施環境
Mac 10.14.2
node 11.4.0
npm 6.5.0
開発環境構築
npmにより以下をインストールする。
$ npm i claudia -g
プロジェクトのフォルダを作成し、package.jsonを作成する。
$ mkdir test-api
$ cd test-api
$ npm init
プロジェクトに必要なパッケージをインストールする。
$ npm i -S claudia-api-builder
$ npm i -S aws-sdk
サンプルのアプリを作成する(チュートリアルと同じ)。
var ApiBuilder = require('claudia-api-builder')
var api = new ApiBuilder()
module.exports = api
api.get('/hello', function() {
'use strict'
return 'hello claudia.js'
})
AWSで以下を許可するポリシーを作成しIAMユーザにアタッチする。
- API Gateway:フルアクセス
- IAM : 完全: リスト, 読み込み, アクセス権限の管理 制限: 書き込み
- Lambda : 制限: リスト, 読み込み, 書き込み
上記IAMユーザのアクセスキー及びシークレットアクセスキーを生成する。
生成したアクセスキー及びシークレットキーを.aws/credentialsに書き込む。
[claudia]
aws_access_key_id = xxxxxxxxxxxxxxxxxx
aws_secret_access_key = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
ここではプロファイル名をclaudiaとした。
AWSへのデプロイ
最初のデプロイは以下コマンドで実施する。
$ AWS_PROFILE=claudia claudia create --name testserver --region ap-northeast-1 --api-module app
実行した結果以下の情報がclaudia.jsonに出力される。
{
"lambda": {
"role": "testserver-executor",
"name": "testserver",
"region": "ap-northeast-1"
},
"api": {
"id": "zzzzzzzzzz",
"module": "app"
}
}
以降、app.jsの修正を行った後は以下のコマンドで更新する(アクセスキー及びシークレットアクセスキーを特定するために最初にプロファイル名であるclaudiaを指定する)。
$ AWS_PROFILE=claudia claudia update
動作確認
デプロイが成功したらWebブラウザで以下にアクセスする。
https://.execute-api.ap-northeast-1.amazonaws.com/latest/hello
その結果、以下が返却されたら成功である。
hello claudia.js