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 を利用する前提になっているためだと思われる。

執筆日: