AWS SAM CLI で立ち上げた Lambda をリモートデバッグする
Python の場合
Node.js でどうするか調べてみる
sam local invoke および sam local start-api は、いずれも関数のローカルデバッグをサポートします。デバッグサポートを有効にして SAM CLI を実行するには、コマンドラインで --debug-port または -d を指定します。
おk
以下のようなテスト用コードを書く
code:javascript
'use strict'
const aws = require('aws-sdk');
var lambda = new aws.Lambda({
region: "ap-northeast-1",
sslEnabled: false,
});
var params = {
FunctionName: 'LambdaForRDS',
Payload: '{ "resolve": "query.collection", "context": { "arguments": { "id": 8 } } }'
}
const invokePromise = lambda.invoke(params).promise();
invokePromise
.then((data) => {
console.log(data);
})
.catch((error) => {
console.error(error, error.stack);
});
aws sam cli で lambda を立ち上げる
code:shell
$ sam local start-lambda --debug-port 5858 --template ./lambda/template.yaml
テストを実行
code:shell
$ node test.js
lambda を invoke した時点で、リモートデバッグの受付が開始される。
VSCode を使用してデバッグする。
構成は以下のような感じ
code:json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "attach",
"name": "AWS SAM CLI のリモートデバッグ",
"address": "127.0.0.1",
"port": 5858,
"localRoot": "${workspaceFolder}",
"remoteRoot": "/var/task"
},
{
"type": "node",
"request": "launch",
"name": "プログラムの起動",
"program": "${workspaceFolder}/index.js"
}
]
}
ひとまずはこれでブレークポイントデバッグはできた。
しかし VSCode のデバッグモードの利用方法がよくわからない
Indium + Emacs でもできそうなので試したい
Indium + Emacs