ServerlessFrameworkでnode.js(lambda)開発

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

以下のファイル構成になります。

serverlessframeworkでnode.js(lambda)開発

package.jsonを初期化します。

npm init -y

以下のファイル構成になります。

serverlessframeworkでnode.js(lambda)開発

何か依存関係を追加インストールすれば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がデプロイされています。

serverlessframeworkでnode.js(lambda)開発

CloudFormationにもスタックが作成されていることが確認できます。

serverlessframeworkでnode.js(lambda)開発

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

ServerlessFrameworkでnode.js(lambda)開発

この待ち受け状態の状態で、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コマンドを実行しています。

ServerlessFrameworkでnode.js(lambda)開発

この状態で、curlコマンドを実行します。

curl -X GET http://localhost:4000/dev/hoge

ServerlessFrameworkでnode.js(lambda)開発

ブレークポイントで止まってデバッグすることができました。

youtube

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました