つづき、その2
- その1 NestJSやLambdaでのnode.jsの話し
- その2 NestJSのサンプルを動かす、Hello World
- その3 コントローラーを追加する
- その4 DTOを使う
- その5 CRUD generatorを使い modules,controller, service, dto を生成する
- その6 インターセプター
- その7 ORMでRDBデータベースを扱う
- その8 NestJSをAPI Gateway+AWS Lambdaとしてデプロイ
動かし方
上記のREAMEだけではよくわからない場合に必要なものは
Node.js実行環境
- コンテナを使うことを推奨
- 環境を汚さない、人ごとや環境依存しない、他のプロジェクトが動かなくなるようなことはない
- Node.js 16 または Node.js 18(18を使う方が良いです)
- バージョンやコマンド確認
which node
node -v
npm -v
serverless frameworkインストール、V3を使う
- V3
- グローバルインストール
npm install -g serverless
npm install -g serverless@3.33.0
または、
https://www.serverless.com/framework/docs/install-standalone にあるような
2023-07-14時点のv3最新バージョン
curl -o- -L https://slss.io/install | VERSION=3.33.0 bash
公式の内容
curl -o- -L https://slss.io/install | VERSION=2.72.2 bash
WindowsでもWSL2とDocker Desktop等を使い、コンテナ環境を推奨
環境例
root ➜ /workspaces $ node -v
v16.17.0
root ➜ /workspaces $ npm -v
8.15.0
root ➜ /workspaces $ sls -v
Framework Core: 3.32.2
Plugin: 6.2.3
SDK: 4.3.2
「aws-node-typescript-nest」で npm install
- serverless frameworkのプラグイン等をインストールする
package.json を抜粋すると以下になり、公式の方だとバージョンが古くて動かない
package.json
"dependencies": {
"aws-serverless-express": "^3.3.5",
"devDependencies": {
"serverless": "^3.32.2",
"serverless-offline": "12.0.4",
"serverless-plugin-optimize": "^4.0.2-rc.1",
"serverless-plugin-typescript": "^2.1.5",
$ cd sls-examples/aws-node-typescript-nest
$ npm install
アプリの開始
npm start
package.jsonをみるとわかりますが、npm start
では 以下を行っている
package.json
"start": "sls offline start",
- コマンド後に、以下のようなログが表示されたら NestJSが起動している、ローカルでの仮想API Gateway相当がListenしている
Typescript compiled.
Watching typescript files...
Starting Offline at stage dev (us-east-1)
Offline [http for lambda] listening on http://localhost:3002
Function names exposed for local invocation by aws-sdk:
* main: serverless-nest-example-dev-main
┌────────────────────────────────────────────────────────────────────────┐
│ │
│ ANY | http://localhost:3000/dev/{proxy*} │
│ POST | http://localhost:3000/2015-03-31/functions/main/invocations │
│ │
└────────────────────────────────────────────────────────────────────────┘
Server ready: http://localhost:3000 🚀
- 動作確認
$ curl http://localhost:3000/dev/hello
Hello World! my