🐷
serverless frameworkを使って、aws lambda関数(hello world)作成ステップ
まずは、Hello Worldを実行しよう!
以下の手順に従って、serverless frameworkを使って、aws lambda関数のhello worldを作成できます。
1. 新しいプロジェクトの作成:
新しいディレクトリを作成し、そのディレクトリに移動。
mkdir serverless-sample
cd serverless-sample
2. Serverless Frameworkのインストール:
Serverless Framework をインストール。
npm install -g serverless
3. プロジェクトの初期化:
Serverless Frameworkを使ってプロジェクトを初期化し、AWS Node.jsテンプレートを使用。
serverless create --template aws-nodejs
4. node.jsのプロジェクトの立ち上げ:
npm init -y
5. serverless.ymlの設定:
すでに、serverlessのtemplateをインストールしたところで、作成されているはずだが、一応、念のため、確認。
service: serverless-sample
provider:
name: aws
runtime: nodejs18.x
stage: dev
region: us-east-1 ## 任意のaws serverを指定(東京のサーバーの場合、ap-northeast-1)
functions:
hello:
handler: handler.hello
6. ハンドラーの作成:
handler.js
ファイルが既にあることを確認し、以下の内容を置き換えます。
module.exports.handler = async (event) => {
return {
statusCode: 200,
body: JSON.stringify({
message: 'Hello World!',
}),
};
};
7. プロジェクトのデプロイ:
すべての設定が完了したら、次のコマンドを実行してプロジェクトのデプロイ。
serverless deploy
8. lambda関数のテスト:
デプロイされた関数をテストするには、次のコマンドを入力。
serverless invoke -f hello
さらに、APIのエンドポイントを作成したい場合は...
serverless.ymlファイルを以下のように書き換え。
service: serverless-sample
provider:
name: aws
runtime: nodejs18.x
stage: dev
region: us-east-1 ## 任意のaws serverを指定(東京のサーバーの場合、ap-northeast-1)
functions:
hello:
handler: handler.handler
## ここから下👇が、新しく追加したところだよ。
events:
- httpApi:
path: /
method: get
続いて、また、改めてデプロイ更新!
serverless deploy
続いて、Expressを使ってみよう。
必要なライブラリをインストール
express
を使ってリクエストを受け取る場合は、まず、express
とserverless-http
ライブラリをインストール。
npm install express serverless-http
handler.js
を以下のように書き換え。
次に、'use strict'
const express = require('express');
const serverless = require('serverless-http');
const app = express();
app.get('/', async (req, res) => {
res.send({ message: "リクエストは, [/] !"});
});
// ほかにも、/webhookのリクエストも追加
app.get('/webhook', async (req, res) => {
res.send({ message: "リクエストは, [/webhook] !" });
});
/*
ここがポイント!ただ,expressのコードだけではダメで、
ここで、serverless-httpライブラリを使用して、aws lambda関数用に変換
*/
module.exports.handler = serverless(app);
serverless.ymlファイルの書き換え
そしたら、deployする上で肝心なserverless.ymlファイルを以下のように書き換え。
service: serverless-sample
provider:
name: aws
runtime: nodejs18.x
stage: dev
region: us-east-1 ## 任意のaws serverを指定(東京のサーバーの場合、ap-northeast-1)
functions:
hello:
handler: handler.handler
events:
- httpApi:
path: /
method: get
## ここから下👇が、新しく[/webhook]を追加したところだよ。
- httpApi:
path: /webhook
method: get
いよいよ、デプロイ
serverless deploy
これで、目標達成!
実行が無事成功したら、コマンドのログに、APIのurlが2つ出力されているはずです。
([/]用のAPIと[/webhook]用のAPIのurlがあるはず)
Discussion