Serverlesss(AWS Lambda)(1)セットアップ

serverless framework とは
serverless framework はアプリケーションを関数やイベントを容易に定義し、デプロイを行うことができるフレームワークです。
ymlファイル一つを作成することで、API Gateway
やDynamoDB
といった全てのデプロイをまとめて行うことができます。
何をするか
serverlessのセットアップ及び簡易的なAPIを実際にデプロイすることで、serverless frameworkを利用する下準備を行います。
必要なもの
awsアカウント!
awsの無料枠に含まれているlambdaを利用するため、普段lambdaを使っていない方であれば課金の心配はありません。
serverless のセットアップ
serverless framework のインストール
yarn global add serverless
serverless framework dashboard にログイン
コマンド実行後 serverless app のログイン画面に遷移するのでアカウントを作成してログインを行います。
serverless login
ログイン後のダッシュボード

providers を追加
デプロイを行うための provider を追加します。
1)左メニューの org より org settings に移動し、providers を選択


3)connect aws provider を選択し、aws コンソールへ移動
aws コンソールにログインしていない場合サインイン画面が表示されるのでサインインを行う。
サインインを行うと provider を追加するための cloudformation のスタックのクイック作成画面が表 示されるので指示に従いスタックを作成します。

4)スタックの作成が終了するとしばらくして provider の追加画面が自動で切り替わり provider の追加が完了します。

以上で serverless framework を使うための前準備は終了となります。
実際にデプロイを行う
service の作成
ここからはデプロイを行うサービスを作成していきます。
1)サービス作成コマンドを実行
serverless
2)コマンドを実行すると作成するサービスのテンプレートの一覧が表示されるので、テンプレートを選択
今回はHTTP API
を利用します。

What do you want to make? #=> AWS - Node.js - HTTP API
What do you want to call this project? #=> プロジェクト名を任意で入力
What org do you want to add this service to? #=> 作成したアカウントのusernameを選択
Do you want to deploy now? #=> Y

4)Do you want to deploy now?
を有効にした場合コンソールに endpoint が表示されるので curl にて確認"message": "Go Serverless v3.0! Your function executed successfully!"
を含むレスポンスが返ってこればデプロイが成功しています。
curl <endpoint>
セットアップ時にDo you want to deploy now?
を有効にしなかった場合は以下のコマンドでデプロイが可能
serverless deploy
lambda 関数を追加
ここからは、作成したサービスに独自の関数を追加していきます。
1)handler.js
に hello world を返す関数を作成
handler.js
module.exports.helloWorld = async (_event) => {
return {
statusCode: 200,
body: JSON.stringify({
message: "hello world",
}),
};
};
2)serverless.yml
を開き functions に helloWorld 関数を追加
serverless.yml
functions:
hello:
handler: handler.hello
events:
- httpApi:
path: /
method: get
# --- 以下を追加 ---
helloWorld: # ①
handler: handler.helloWorld # ②
events: # ③
- httpApi: # ④
path: /helloWorld
method: get
① lambda の関数名(任意の名前を指定できる)
② 関数の指定 <pathName>/<fileName>.<functionName>
③ API の種類を指定 (REST API
or HTTP API
)
④ HTTP API
を指定
HTTP API の詳しい内容はこちらの公式へ
https://www.serverless.com/framework/docs/providers/aws/events/
作成した関数をデプロイ
1)作成したプロジェクトに移動し serverless deploy
を実行

2)endpoints と functions に helloWorld の項目が追加されるので curl で確認
curl <endpoint>
#=> {"message":"hello world"}%
hello world が表示されれば関数の追加は成功です。
サービスの削除
最後に、今回のチュートリアルで作成したサービスは今後不要のため、サービスの削除を行います。
serverless remove
以上で serverless framework のセットアップ兼チュートリアルは終了です。お疲れ様でした。
参考
https://www.serverless.com/framework/docs/providers/aws/guide/events
- セットアップ&チュートリアル
- cognito を利用した認証機能の作成
- dynamodb を利用した CRUD の作成
- serverless-offline を利用したローカル環境の作成
- Serverless Frameworkの基本的な使い方
- Lambda と DynamoDB を使用した CRUD API の構築
- DynamoDBにおけるCRUD処理の注意点!