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(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント