ServerlessFrameworkでnode.js(lambda)開発
serverless(sls)コマンドをグローバルインストールします。(package.json作成後、–saveでインストールでもよい)
$ npm i -g serverless $ serverless --version Framework Core: 3.21.0 Plugin: 6.2.2 SDK: 4.3.2
テンプレートからプロジェクト作成します。
serverless create \ --template aws-nodejs \ --name sample \ --path sample
以下のファイル構成になります。
package.jsonを初期化します。
npm init -y
以下のファイル構成になります。
何か依存関係を追加インストールすればpackage-lock.jsonも作成されます。
これで開発環境が整いました。
デプロイ
sls deployコマンドでlambdaをデプロイします。
$ serverless deploy Deploying sample to stage dev (us-east-1) ✔ Service deployed to stack sample-dev (112s) functions: hello: sample-dev-hello (662 B) Want to ditch CloudWatch? Try our new console: run "serverless --console"
デフォルトではバージニア北部にLambdaがデプロイされています。
CloudFormationにもスタックが作成されていることが確認できます。
Lambda削除
serverless removeコマンドでスタック削除してlambdaを削除します。
serverless remove
ローカル実行
ローカル環境で実行するにはserverless invoke local -f 関数名で実行します。
serverless.ymlは以下とします。
service: sample
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs16.x
stage: dev
region: ap-northeast-1
functions:
helloxxx:
handler: handler.hello
events:
- http:
path: hoge
method: get
関数名はhelloxxxとなります。これで実行します。
$ serverless invoke local -f helloxxx
Running "serverless" from node_modules
{
"statusCode": 200,
"body": "{\n \"message\": \"Go Serverless v1.0! Your function executed successfully!\",\n \"input\": \"\"\n}"
}
1 deprecation found: run 'serverless doctor' for more details
handler.jsのhello関数に設定したJSONが返ってきています。
serverless-offline
serverless-offlineをインストールします。
npm i -D serverless-offline
serverless.ymlファイルの末尾に以下追記します。
plugins: - serverless-offline
これでserverless offline startコマンドを実行します。
serverless offline start
この待ち受け状態の状態で、curlコマンドを実行します。
curl -X GET http://localhost:3000/dev/hoge
これでレスポンスが返ってきますのでローカルでテストができます。
VSCodeのlaunch.jsonでデバッグする
launch.jsonを使ってブレークポイントをはってデバックできるようにします。
servelessをローカルにインストールします。
npm i -D serverless
launch.jsonを以下のように修正します。
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"skipFiles": [
"/**"
],
"program": "${workspaceFolder}\\node_modules\\serverless\\bin\\serverless",
"args": ["offline", "start", "--httpPort", "4000", "--noTimeout"],
"protocol":"inspector",
"runtimeExecutable": "node"
}
]
}
F5を押してデバッグ実行します。serverless offline start --httpPort 4000 --noTimeoutコマンドを実行しています。
この状態で、curlコマンドを実行します。
curl -X GET http://localhost:4000/dev/hoge
ブレークポイントで止まってデバッグすることができました。
youtube

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^









コメント