🔥
HonoでAWS Lambdaの関数を作成しつつローカル環境でも動作できるようにする
Honoは、AWS Lambdaの関数を作成するためのスターターテンプレートを提供しています。このテンプレートを使うことで、AWS Lambdaの関数を作成するために必要な設定を簡単に行うことができます。
ですが、ローカル環境で動作するようにするための設定は含まれていません。そこで、HonoのNode.js Adapterを使って、Node.jsを使ったサーバをローカル環境で使えるように設定します。
手順
まず、Honoのスターターテンプレートを使ってプロジェクトを作成します。
$ npm create hono@latest
Which template do you want to use?
でAWS Lambdaのテンプレートを選択します。
? Which template do you want to use? aws-lambda
これで、AWS Lambdaの関数を実行するためのプロジェクトが作成されました。次に、Node.jsを使って動作できるようにします。
まず、HonoのNode.js Adapterとtsxをインストールします。
$ npm install --save @hono/node-server
$ npm install --save-dev tsx
次に、Node.jsで実行するためのコードを src/index.local.ts
に作成します。AWS Lambdaでは index.ts
が実行されるため、共通の処理はできるだけ別のファイルに書くとよいでしょう。
src/index.local.ts
の内容は以下のようになります。
import { serve } from "@hono/node-server";
import { Hono } from "hono";
const app = new Hono();
app.get("/", (c) => {
return c.text("Hello, Hono!");
});
const port = 5555;
console.log(`Server is running on port ${port}`);
serve({
fetch: app.fetch,
port,
});
最後に、package.json
の scripts
に dev
を追加します。
{
"scripts": {
+ "dev": "tsx watch src/index.local.ts"
}
}
npm run dev
を実行すると、ローカル環境でサーバーが起動します。
$ npm run dev
$ curl http://localhost:5555
Hello, Hono!
これで、ローカル環境でNode.jsのWebサーバを使いつつ、Lambdaにデプロイする環境が整いました。
Discussion