TypeScript で Lambda Function を作成する
自分用の備忘。
プロジェクトの作成
まずは Serverless Frameworkがインストールされているか確認し、されていないようであればインストールする。
$ npm ls -g serverless # インストールされているか確認
$ npm install -g serverless # インストール
TypeScript用のテンプレートを指定し、プロジェクトを作成する。 下記はどちらも同じ結果になるので、好きなほうを使用すれば良い。
$ sls create -t aws-nodejs-typescript -p app
$ serverless create --template aws-nodejs-typescript --path app
npmライブラリをインストールする。
$ cd app
$ npm install
とりあえず実行
Serverless Framework で作成したプログラムを sls invoke local
コマンドを利用して実行してみる場合、そのままこのコマンドを実行しても動かない。
とりあえず動きさえすれば良いという場合は、 app/src/functions/hello/handler.ts
の ${event.body.name}
を削除すれば良い。(ただし、おそらくこれは正しい方法ではない)
const hello: ValidatedEventAPIGatewayProxyEvent<typeof schema> = async (event) => {
return formatJSONResponse({
message: `Hello ${event.body.name}, welcome to the exciting Serverless world!`,
event,
});
}
上記の通り削除を行ったら、次のコマンドで実行可能。
$ sls invoke local -f hello
このようなことがあるのは、TypeScript用テンプレートは API GateWay を利用する前提になっているためだと思われる。